李惠利医院待遇差:Action里设置session出现问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/08 23:47:50
例如我再Action里写个:

HttpSession session = request.getSession();session.setAttribute("user","me");return mapping.findForward("ok");

那么我在ok页面用

<%=(String)session.getAttribute("user")%>

结果会显示null。不明白为什么,而且我测试在jsp页面设置的session可以很好的传递到下一个页面。
还有在用ActionForm的validate的时候,发现它根本不起作用,不管前边的页面传递过来什么值,照样不会出现错误信息,我想知道是什么原因。我那儿写错了,还是Struts本身不能在任何环境都能工作的很好?
问题自己解决了
路径问题,把所有文件从子文件夹放到父文件夹就好了。

一种可能是session没得到,用HttpSession session = request.getSession(true);这句的意思是如果没有得到session,那么创建一个.

第二个问题,你在struts-config.xml里配置action的时候,加上validate=true,并且在你的form里写validate方法,然后把错误或成功信息添加到request范围内,在页面这么引用
<logic:messagesPresent>
<html:messages id="error">
<bean:write name="error"/>
</html:messages>
</logic:messagesPresent>
你把你的验证代码,和配置文件都写出来才好找错,顺便说Struts本身是没有问题的。

我拿你的代码试了一下,我可以得到“me”呀,

struts-config.xml:

<action-mappings>
<action path="/TestAction" type="com.test.TestAction" name="TestAction">
<forward name="ok" path="/jsp/display.jsp" />
</action>
</action-mappings>

web.xml:

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

TestAction:

package com.test;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
* @author <a href="mailto: xxx@neusoft.com">xxx</a>
* @version $Revision$
*/
public class TestAction extends Action
{

/**
* @param arg0
* @param arg1
* @param arg2
* @param arg3
* @return
* @throws Exception
* @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception
{
HttpSession session = request.getSession();
session.setAttribute("user", "me");
return mapping.findForward("ok");

}

}

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>display</title>
</head>
<body>
<%=(String)session.getAttribute("user")%>
</body>
</html>

你监视一下传值的过程,没看到东西,不好说啊