`
chengyue2007
  • 浏览: 1488510 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

struts2.0拦截器(实现未登录的用户不能访问系统的页面)

阅读更多

1.要在struts.xml文件中添加下面的代码:

<package name="struts2" extends="struts-default">
    <!--自定义拦截器(没有登录的就返回到login)-->
        <interceptors>
            <interceptor name="sessionNull" class="com.hoperun.action.SessionNullInterceptor">
            </interceptor>
        </interceptors>
        <global-results>
            <result name="login" type="redirect">/sessionValid.jsp</result>
        </global-results
>

还要在具体action的跳转配置中添加下面代码:

<action name="orderSearch" class="com.hoperun.action.OrderSearchAction">
            <result name="success" >/orderSearch.jsp</result>
            <interceptor-ref name="sessionNull"></interceptor-ref>
               <interceptor-ref name="defaultStack"/>
        </action>

如果不加上面蓝色的部分,页面域中的值就不能带到下个页面,因为定义了自己的拦截器,系统传值的拦截器就失效了,所以加上这条系统默认的拦截器就生效了

2.下面是SessionNullInterceptor的拦截器具体代码:

package com.hoperun.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/**
* session为空拦截器
*/
public class SessionNullInterceptor implements Interceptor {
private static final long serialVersionUID = 1L;

public void destroy() {
}

public void init() {
}

public String intercept(ActionInvocation invocation) throws Exception {
   HttpServletRequest req = ServletActionContext.getRequest();
   if (req.getSession().getAttribute("username") == null) {
    return Action.LOGIN;
   } else {
    return invocation.invoke();
   }
}

}

3,对了还不能忘记在login.acton中添加如下代码:

if(result==true)
        {
        Map<String,String> map = ActionContext.getContext().getSession();           
            map.put("username",username);
        
            return SUCCESS;
        }

这样如果你没有充login.jsp登录进来而直接去访问系统的其他页面时,就不能查看你想看的页面,而是会自动跳转到sessionValid.jsp页面去

分享到:
评论
2 楼 qhzq 2012-03-18  
我也在研究这个问题。
你的想法不错。
还可以声明一个package级别的默认拦截器栈,每个action就不用写那么多代码了,对吧。
你通过ActionContext.getContext().getSession()获得session,那么你想过,这样怎么做单元测试吗?如果脱离struts环境,ActionContext.getContext()得到的是null。
你应该让action实现sessionAware接口来获得session。
1 楼 zhangpeng1990 2011-12-10  
这样虽然可以阻止直接输入action地址防止非法登录,但是如果直接输入jsp地址还是不行啊?

相关推荐

    struts2.0拦截器、crud例子与用法

    总结来说,Struts2.0的拦截器提供了一种灵活的方式来扩展和控制应用程序的行为,而CRUD操作则通过Action类实现。理解这些核心概念对于有效地利用Struts2开发Web应用至关重要。通过熟练掌握这些知识,开发者可以更...

    Struts2.0 Jar包

    Struts2.0是一款强大的Java Web框架,它在MVC(Model-View-Controller)设计模式的基础上,提供了灵活且强大的架构来构建企业级的Web应用程序。这个“Struts2.0 Jar包”包含了所有必要的库文件,使得开发者可以便捷...

    struts 2.0

    2. **拦截器(Interceptors)**: Struts 2.0引入了拦截器机制,类似于AOP(面向切面编程)的概念,可以实现如日志记录、事务管理、权限控制等功能。开发者可以自定义拦截器,并将其链式地配置在Action执行路径上,...

    struts2.0入门案例

    Struts2.0是Java Web开发中一个非常重要的框架,它是Apache软件基金会的Jakarta项目下的一个开源产品,主要用于构建MVC(Model-View-Controller)模式的应用程序。本入门案例将带你逐步了解如何使用Struts2.0来创建...

    struts2.0jar包

    Struts2.0 jar包是Java Web开发中的一个重要组件,它是Apache Struts框架的一个特定版本。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于构建可维护性高、结构清晰的Java应用。该框架极大...

    Struts_2.0从入门到精通

    Struts2.0内置了多种拦截器,同时支持自定义拦截器,使得开发者可以根据应用需求定制不同的执行流程。 八、在Struts2.0中实现IoC 依赖注入(IoC)是现代软件架构的重要组成部分,Struts2.0通过其内部的IoC容器,...

    STRUTS2.0用户登录

    通过理解并熟练应用这些概念,开发者能够构建出功能完善、安全的用户登录系统。在实际项目中,还可能涉及其他方面,如国际化、数据校验、Ajax异步请求等,这些都是Struts2框架可以轻松处理的功能。

    struts2.0 应用开发,基本功能全部实现

    这个压缩包文件可能是为了展示一个完整的Struts2.0应用实例,包括从搭建环境到实现基本功能的全过程。 在Struts2.0的应用开发中,首先我们需要理解其核心概念: 1. **Action类**:这是业务逻辑的载体,通常继承自`...

    struts2.0开发的都市供求信息系统

    这个都市供求信息系统全面展示了Struts2.0的使用,包括模型-视图-控制器的设计、数据库交互、用户认证、国际化支持等多个方面,为学习和实践Struts2.0提供了一个良好的平台。通过分析和重构这个项目,开发者可以深化...

    struts2.0源代码

    在"struts2.0源代码"中,你可以看到框架的核心组件、拦截器、配置解析、动作执行等核心功能的实现。以下是一些主要的知识点: 1. **ActionInvocation**:这是Struts2的核心接口,代表了一个动作的执行流程。它负责...

    三大框架中文文档中的struts2.0开发手册(程序员必看)

    2. **拦截器(Interceptor)**:拦截器是Struts2.0的一大特色,它可以实现通用的功能,如日志、权限检查等,无需在每个Action中重复编写。通过配置拦截器栈,可以灵活地控制请求的处理流程。 3. **OGNL(Object-...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    3. **拦截器**:Struts2.0使用拦截器来处理请求,拦截器链可以在不修改Action代码的情况下添加新的功能,如日志、事务管理等。 4. **OGNL表达式语言**:Struts2.0使用OGNL(Object-Graph Navigation Language)作为...

    Struts2.0学习系列 以及 Struts2.0安装包

    Struts2.0框架整合了多种开源项目,如FreeMarker或JSP作为视图技术,OGNL(Object-Graph Navigation Language)作为表达式语言,以及拦截器机制来处理请求。框架的核心部分包括Action类,它是业务逻辑的载体;配置文件...

    Struts2.0开发的登录用户

    例如,TestInterceptor可能实现了用户登录验证,确保只有已登录的用户才能访问特定资源。拦截器按照配置的顺序执行,增强了代码的可复用性和模块化。 4. **Struts2配置** 项目的配置通常包含在struts.xml文件中,...

    struts2.0英文文档

    4. **拦截器**:拦截器是 Struts2.0 中的一个重要概念,它允许开发者编写自定义的行为,如认证、授权、事务管理等。 5. **配置**:Struts2.0 使用 XML 或注解来配置应用的各种行为和组件。 #### 四、Struts2.0 的...

    Struts 2.0全攻略之Struts 2.0参考手册

    拦截器是Struts 2.0的一个核心特性,它们在Action执行前后执行,可以用于日志记录、权限验证、数据校验等。开发者可以通过自定义拦截器扩展框架功能。 6. **OGNL(Object-Graph Navigation Language)** Struts ...

    STRUTS2.0例子中的简单登录

    在登录场景中,可能会有登录状态检查拦截器,防止未登录用户访问受保护的页面。 5. **结果类型(Result)**:Action执行后,会返回一个结果,Struts2支持多种结果类型,如dispatcher(用于转发或重定向)、stream...

    Struts 2.0的Action讲解

    拦截器可以用于实现通用的功能,如登录检查、权限验证等,这样就不需要在每个Action中重复编写这些代码。 此外,`ActionSupport`类还提供了错误和异常处理的机制。如果在`execute()`方法中抛出异常,Struts 2会自动...

Global site tag (gtag.js) - Google Analytics