`
changyuan126
  • 浏览: 15264 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

急:struts2中action中取不到session的值

 
阅读更多

请问高手,struts2中action中取不到session的值。

代码如下:

java代码如下:

public class LoginAction extends BaseAdminAction {

getRequest().getSession().setAttribute(SystemUtil.USERINFO, user);
        
        ActionContext.getContext().getSession().put("dishesPM","dishesPM");
        System.out.println("================LoginAction.checkLogin() USERINFO/dishesPM set=============="+getRequest().getSession().getId());
        return ajax(Status.success, "登录成功");

}

 

public class IndexAction extends BaseAdminAction {
 private static final long serialVersionUID = 12L;

 public String index(){
  String test = (String)getRequest().getSession().getAttribute("dishesPM");
  //System.out.println(test+"===========IndexAction.list()  dishesPM get================="+getRequest().getSession().getId());
  test = (String)ActionContext.getContext().getSession().get("dishesPM");
  System.out.println(test+"===========IndexAction.list()  dishesPM get================="+getRequest().getSession().getId());
  return "index";
 }

}

 

基类写了几个公共的方法如下:

public class BaseAdminAction extends ActionSupport {// 获取Request
// 获取Request
 protected HttpServletRequest getRequest() {
  return ServletActionContext.getRequest();
 }

 // 获取Response
 protected HttpServletResponse getResponse() {
  return ServletActionContext.getResponse();
 }

 // 获取ServletContext
 protected ServletContext getServletContext() {
  return ServletActionContext.getServletContext();
 }

 // 获取Attribute
 protected Object getAttribute(String name) {
  return ServletActionContext.getRequest().getAttribute(name);
 }

 // 设置Attribute
 protected void setAttribute(String name, Object value) {
  ServletActionContext.getRequest().setAttribute(name, value);
 }

 // 获取Parameter
 protected String getParameter(String name) {
  return ServletActionContext.getRequest().getParameter(name);
 }

 // 获取Parameter数组
 protected String[] getParameterValues(String name) {
  return ServletActionContext.getRequest().getParameterValues(name);
 }

 // 获取Session
 protected Object getSession(String name) {
  ActionContext actionContext = ActionContext.getContext();
  Map<String, Object> session = actionContext.getSession();
  return session.get(name);
 }
 
 // 设置Session
 protected void setSession(String name, Object value) {
  ActionContext actionContext = ActionContext.getContext();
  Map<String, Object> session = actionContext.getSession();
  session.put(name, value);
 }

 // 移除Session
 protected void removeSession(String name) {
  ActionContext actionContext = ActionContext.getContext();
  Map<String, Object> session = actionContext.getSession();
  session.remove(name);
 }

}

struts.xml文件

<constant name="struts.devMode" value="true" />
 <constant name="struts.action.extension" value="xhtml"/> <!-- .xhtml为访问扩展名 -->
 <constant name="struts.convention.action.name.separator" value="_" />
 <constant name="struts.convention.result.path" value="/jsps/" />
 <constant name="struts.convention.classes.reload" value="false" />
 <constant name="struts.convention.action.packages" value="com.define.dishes.action" />
 <constant name="struts.objectFactory" value="spring" />
 
 <package name="basePackage" extends="struts-default">
  <interceptors>
   <interceptor-stack name="baseStack">
                <interceptor-ref name="exception" />
                <interceptor-ref name="alias" />
                <interceptor-ref name="servletConfig" />
                <interceptor-ref name="prepare" />
                <interceptor-ref name="chain" />
                <interceptor-ref name="debugging" />
                <interceptor-ref name="scopedModelDriven" />
                <interceptor-ref name="modelDriven" />
                <interceptor-ref name="checkbox" />
                <interceptor-ref name="multiselect" />
                <interceptor-ref name="staticParams" />
                <interceptor-ref name="actionMappingParams" />
                <interceptor-ref name="params">
     <param name="excludeParams">dojo\..*,^struts\..*,.*\\u0023.*,.*\\x5Cu0023.*,.*\\x5cu0023.*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError" />
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                    <param name="validateAnnotatedMethodOnly">true</param>
                </interceptor-ref>
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
            </interceptor-stack>
  </interceptors>

  <default-interceptor-ref name="baseStack" />

  <default-action-ref name="errorPage404Action" />

  <action name="errorPage404Action">
   <result type="redirect">/commons/error_page_404.html</result>
  </action>
 </package> 

<package name="admin" extends="basePackage" namespace="/admin">
  <interceptors>
   <interceptor name="logInterceptor" class="com.define.dishes.interceptor.LoginedCheckInterceptor" />
   <interceptor name="trimInterceptor" class="com.define.dishes.interceptor.TrimInterceptor" />
   <interceptor-stack name="adminStack">
    <interceptor-ref name="fileUpload">
     <param name="allowedTypes">image/jpeg,image/pjpeg,image/gif,image/bmp,image/x-ms-bmp,image/png,image/x-png</param>
     <param name="maximumSize">2097152</param>
    </interceptor-ref>
    <interceptor-ref name="baseStack" />
    <interceptor-ref name="logInterceptor" />
    <interceptor-ref name="trimInterceptor" />
   </interceptor-stack>
  </interceptors>
  <default-interceptor-ref name="adminStack" />
  <global-results>
   <result name="main" >/jsps/admin/main.jsp</result>
   <result name="login" >/jsps/admin/login.jsp</result>
   <result name="index" >/jsps/admin/index.jsp</result>
   <result name="top" >/jsps/admin/top.jsp</result>
   <result name="left" >/jsps/admin/left.jsp</result>
  </global-results>
 </package>

以上是主要的代码。

现在loginaction 转到的main.jsp可以取到session的值,但main.jsp进入到indexAction.action中就取不到session的值。所有的action类都一样,经过页面进来的action都不能取到session的值。

分享到:
评论

相关推荐

    Struts2 的Action使用session的方法

    对于Struts2,我们不需要使用Spring的注解,而是直接在Action方法中获取session。 2. **获取session**:在Action方法中,可以通过`ActionContext`来获取当前的session。例如: ```java ActionContext context = ...

    Struts2 part 3:在Action中使用ServletAPI

    5. **Filter和Dispatcher**:虽然Action不直接与Servlet Filter打交道,但理解Servlet Filter机制对于优化Struts2应用很有帮助。例如,你可能需要使用Filter进行登录检查、GZIP压缩等预处理操作。 6. **URL重写和...

    基于用户登陆的struts2中action的分类实例

    在Struts2中,Action是核心组件之一,它负责处理用户的请求,并将业务逻辑的结果返回给视图进行展示。本实例将深入探讨在基于用户登录场景下,如何在Struts2中对Action进行分类和设计。 首先,我们需要了解Struts2...

    struts2.0整合Struts 1

    4. **Interceptor配置**:根据需求添加Struts 2特有的拦截器,以实现Struts 1中类似的功能,如Session管理、异常处理等。 5. **配置合并**:合并Struts 1和Struts 2的配置文件,确保请求能正确路由到相应的Action。...

    struts2_session_权限检查并控制重复登录源码

    1. **Struts2框架**:Struts2是Apache软件基金会下的一个开源项目,它基于MVC设计模式,提供了强大的Action、拦截器、结果类型等机制,使得开发者可以更高效地进行Web应用开发。在权限控制方面,Struts2提供了拦截器...

    struts2访问request,session,application作用域

    在 Struts2 的 Action 类中,可以通过以下方式间接地访问到 Request、Session 和 Application: ```java // 使用 ActionContext 来获取 ActionContext context = ActionContext.getContext(); Map request = (Map)...

    Struts2官方文档

    7. **ActionContext与ValueStack**:ActionContext是Struts2中存储请求上下文信息的对象,包含了请求参数、session、应用上下文等信息。ValueStack是一个对象栈,存放了Action实例和其他需要传递到视图的数据,方便...

    STRUTS2学习文档

    3. **强大的Action类**:Action是处理用户请求的核心组件,Struts2中的Action类可以继承自任何类,不局限于特定的基类,这为Action的设计提供了极大的自由度。 4. **结果类型(Result Types)**:Struts2预定义了...

    struts2生成中文验证码的Action

    在这个特定的场景中,我们讨论的是如何在Struts2中创建一个能够生成中文验证码的Action。 验证码的主要目的是防止自动机器人或恶意攻击,通过向用户提供一组随机字符(通常是数字和/或字母)来验证他们是否是真实的...

    SSH框架:struts2+spring+hibernate 全部jar包

    1. 配置Struts2:设置Struts2的过滤器,配置struts2的核心拦截器栈,定义Action和Result。 2. 配置Spring:声明Bean,注入依赖,配置数据源和事务管理器。 3. 配置Hibernate:设置数据库连接信息,映射实体类,配置...

    struts2_登录

    3. **结果映射(Result Mapping)**:在Struts2的配置文件(struts.xml或struts.properties)中,定义Action执行成功或失败后跳转的页面。登录成功通常会重定向到主界面,失败则返回登录页面并显示错误信息。 4. **...

    Struts in Action 中文修正版源代码2

    中文修正版的源代码2提供了书中示例程序的代码,使得读者可以跟随书中的步骤进行学习,更好地理解和应用Struts框架。 Struts是一个开源的MVC(Model-View-Controller)框架,它为Java EE平台上的Web应用程序开发...

    struts2聊天室

    2. **Struts2配置**:项目中会有相应的struts.xml配置文件,用于定义Action的映射、结果类型以及Interceptors的配置。例如,配置登录和注册的URL映射,以及指定验证失败时重定向的页面。 3. **Interceptor实现用户...

    struts2参数配置

    - **ActionForward**:Struts2中用于控制页面跳转的对象。 - 默认使用`org.apache.struts.action.ActionForward`作为ActionForward实现。 - ActionForward用于定义请求处理完成后页面的跳转逻辑。 ##### 2. **...

    STRUTS2获得session和request

    在实现了这个接口后,STRUTS2同样会在执行Action之前自动调用`setSession`方法,将包含`session`数据的`Map`对象注入到Action中。 示例代码: ```java public class UserLoginAction extends ActionSupport ...

    JavaEE Struts2利用tokenSession防止重复提交

    1. **配置拦截器**:在struts.xml配置文件中,我们需要添加tokenSession拦截器到相应的action配置中。例如: ```xml &lt;interceptor name="tokenSession" class="org.apache.struts2.interceptor....

    Struts2实例3

    值栈是Struts2中一个重要的概念,它是一个存储Action和Action属性的对象栈。视图可以直接通过OGNL访问栈顶的对象,简化了数据传递。 通过上述知识点的学习和实践,你可以更好地理解和掌握Struts2框架的使用,从而...

    Struts2_1100_SimpleDataValiation

    ActionContext在验证过程中起到传递作用,它保存了请求、session、应用等上下文信息,使得验证结果能被Action、Interceptor等组件共享。 通过学习“Struts2_1100_SimpleDataValidation”,开发者能够掌握如何在...

    struts2-login-example.rar_struts2 example_struts2 login

    通过这个简单的登录示例,你可以深入理解Struts2的MVC模式、配置、Action、拦截器、JSP页面、数据验证、Session管理和异常处理等多个核心概念。这将为后续更复杂的Struts2应用开发打下坚实基础。

Global site tag (gtag.js) - Google Analytics