首页 > 代码库 > strut2 模拟拦截器
strut2 模拟拦截器
需求:用户登录的情况下可以访问action的方法,用户没有登录时不允许访问action中的方法并提示‘你没有权限访问"。
设计思路:建立一个jsp页面,当请求该页面时,设置用户为登录状态。若没有先请求该jsp页面而去访问action中的方法则不允许。
实现:
- 建立一个user.jsp页面,设置用户为登录状态:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><% request.getSession().setAttribute("user", "itcast");%> 用户已经登录
- 自定义一个拦截器类,用来判断用户是否登录,如果没有则返回到全局视图页面,如果已经登录则允许执行action中的方法:
package cn.itcast.interceptor;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;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"); if(user!=null) return invocation.invoke(); //如果user不为null,代表用户已经登录,允许执行action中的方法 ActionContext.getContext().put("message", "你没有权限执行该操作"); return "success"; }} - action中的代码如下:
package cn.itcast.action;public class HelloWorldAction { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String addUI(){ this.message = "addUI"; return "success"; } public String execute() throws Exception{ this.message = "execute"; 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.enable.DynamicMethodInvocation" value="false"/> <constant name="struts.action.extension" value="do,action"/> <constant name="struts.multipart.maxSize" value="10701096"/> <package name="employee" namespace="/control/employee" extends="struts-default"> <interceptors> <!--配置自定义的拦截器--> <interceptor name="permission" class="cn.itcast.interceptor.PermissionInterceptor"/> <!--配置一个拦截栈--> <interceptor-stack name="permissionStack"> <!--struts2的拦截栈不能丢,且放在自定义的拦截器前面--> <interceptor-ref name="defaultStack"/> <interceptor-ref name="permission" /> </interceptor-stack> </interceptors> <global-results><!--配置全局视图--> <result name="success">/WEB-INF/page/message.jsp</result> </global-results> <action name="list_*" class="cn.itcast.action.HelloWorldAction" method="{1}"> <interceptor-ref name="permissionStack" /><!--为action配置拦截器--> </action> </package></struts>
- 测试:在浏览器中输入:http://localhost:8080/xxx/list_excute.action 因为用户是直接访问action中的方法,所以页面提示没有权限访问。
- 在浏览器中请求user.jsp页面,因为用户已经设为登录状态,所以可以正常访问。
strut2 模拟拦截器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。