`

struts2自定义拦截器,模拟登陆权限验证

 
阅读更多

struts2自定义拦截器一——模拟登陆权限验证

1、http://localhost:8083/struts2/user.jsp 表示用户已登陆,存放session对象

2、http://localhost:8083/struts2/quit.jsp 表示用户已退出,移除session对象

3、http://localhost:8083/struts2/login/addUIHelloWorld.do  如果session存在则往下执行,否则提示“你没有权限执行该操作”

4、http://localhost:8083/struts2/login/executeHelloWorld.do  如果session存在则往下执行,否则提示“你没有权限执行该操作”

   

代码

user.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% request.getSession().setAttribute("user", "ljq"); %> 用户已经登录

            

quit.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% request.getSession().removeAttribute("user"); %> 用户已经退出登录

              

Action类

package com.ljq.action; public class HelloWorldAction { private String message; public String addUI() { this.message = "addUI"; return "success"; } public String execute() throws Exception { this.message = "execute"; return "success"; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }

                 

权限类

package com.ljq.interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; /** * 限制没有登录的用户进入访问页面 * * @author jiqinlin * */ @SuppressWarnings("serial") public class PermissionInterceptor implements Interceptor { public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { Object user = ActionContext.getContext().getSession().get("user"); // 如果user不为null,代表用户已经登录,允许执行action中的方法 if (user != null){ return invocation.invoke(); } ActionContext.getContext().put("message", "你没有权限执行该操作"); return "success"; } }

      

struts.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.action.extension" value="do" /> <package name="login" namespace="/login" extends="struts-default"> <interceptors> <!-- 自定义拦截器 --> <interceptor name="permission" class="com.ljq.interceptor.PermissionInterceptor" /> <!-- 配制默许的拦截器到拦截器栈 --> <interceptor-stack name="permissionStack"> <!-- 此处先后顺序好像没影响哦,我尝试过是没影响的 --> <interceptor-ref name="permission" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <!-- 配置默认的拦截器 --> <default-interceptor-ref name="permissionStack" /> <!-- 全局变量 --> <global-results> <result name="success">/WEB-INF/page/message.jsp</result> </global-results> <action name="*HelloWorld" class="com.ljq.action.HelloWorldAction" method="{1}"> <!-- <interceptor-ref name="permissionStack" /> --> </action> </package> </struts>
分享到:
评论

相关推荐

    struts2与spring实现简单登陆

    6. **拦截器**:Struts2的拦截器可以扩展和增强Action的处理能力。例如,我们可以自定义一个登录拦截器,检查用户的登录状态,未登录的用户尝试访问受保护资源时会被拦截并重定向到登录页面。 7. **测试与调试**:...

    Struts2.0登陆验证代码

    - 虽然本例中没有直接使用拦截器进行登录验证,但通常我们可以通过自定义拦截器实现更复杂的验证逻辑,例如session检查、CSRF防护等。 - 拦截器可以全局配置,也可以针对特定Action配置,这样可以提高代码的复用性...

    struts做的登陆

    - **预处理**:可以使用Struts2的内置拦截器或自定义拦截器,在Action执行前进行一些操作,如权限检查。 - **后处理**:在Action执行后,拦截器可以做一些收尾工作,如记录日志。 8. ** session管理** - **登录...

    Struts,Spring登陆

    Struts通过Action和ActionForm组件来管理业务逻辑和表单数据,同时提供了一系列的拦截器(Interceptor)来扩展其功能。 Spring框架则是一个更全面的框架,它不仅包含了MVC模块,还有面向切面编程(AOP)、依赖注入...

    模拟电信系统 ssh 结合

    Struts2的核心功能包括动作调度、结果映射、拦截器机制等,这些功能有助于简化HTTP请求的处理过程,并支持自定义拦截器进行扩展。 **Hibernate** 是一个对象关系映射(ORM)框架,它允许开发者使用Java对象来操作...

Global site tag (gtag.js) - Google Analytics