首页 > 代码库 > Struts2拦截器
Struts2拦截器
1.拦截器是AOP的一种实现。
拦截器和AOP底层都是通过动态代理实现的
2.如何配置自己的拦截器,实现如果用户没有登录,直接请求BookList,跳转到登录页。
1.建一个用户实体类:
public class UserInfo { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
2.建两个Action类:
01.BookList:
public class BookList extends ActionSupport implements SessionAware{ private UserInfo info; Map<String, Object> map; @Override public String execute() throws Exception { if (info!=null) { if (info.getUsername().equals("1")&&info.getPassword().equals("1")) { map.put("uname", info.getUsername()); return SUCCESS; }else { return LOGIN; } }else { return LOGIN; } } @Override public void setSession(Map<String, Object> map) { this.map=map; } public UserInfo getInfo() { return info; } public void setInfo(UserInfo info) { this.info = info; } public Map<String, Object> getMap() { return map; } public void setMap(Map<String, Object> map) { this.map = map; } }
2.MyList:
public class MyList extends ActionSupport{ public String list(){ return "list"; }}
02.建一个拦截器类:
public class MyInterceptor implements Interceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { System.out.println("拦截器执行----------intercept"+invocation.getProxy().getMethod()); //获取session对象 Map<String, Object> session = ActionContext.getContext().getSession(); //1.获取session的value值 Object name = session.get("uname"); String actionName = invocation.getProxy().getActionName(); //3.保存invoke()放行的结果 “success” String value=""; if (actionName.equals("loginAction")) { value = invocation.invoke(); }else { if (name!=null) { //证明用户登录了 //放行 请求执行其他拦截器 后者具体的Action value=http://www.mamicode.com/ invocation.invoke(); }else{ value="login"; } System.out.println("逻辑视图名"+value); } return value; } /** * 1,2 拦截器销毁的方法,在销毁之前执行,只被执行一次 */ @Override public void destroy() { System.out.println("拦截器销毁----------destory"); } /** * 1,1 初始化方法,只被执行一次 */ @Override public void init() { System.out.println("拦截器执行----------init"); }
3.Struts-xml:
<struts> <!-- 修改文件 tomcat不用重新启动 --> <constant name="struts.devMode" value="true" /> <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> <package name="main" namespace="/" extends="struts-default"> <!-- 配置拦截器 --> <interceptors> <interceptor name="myinter" class="cn.happy.interceptor.MyInterceptor"></interceptor> <interceptor-stack name="mystack"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="myinter"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="mystack"/> <action name="loginAction" class="cn.happy.action.BookList"> <result name="success">/myinter/success.jsp</result> <result name="login">/myinter/login.jsp</result> </action> </package> <include file="cn/happy/action/list.xml"></include></struts>
4.list.xml:
<struts> <!-- 修改文件 tomcat不用重新启动 --> <constant name="struts.devMode" value="true" /> <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> <!-- extends:struts.xml里name属性的值 --> <package name="book" namespace="/book" extends="main"> <action name="bookAction" class="cn.happy.action.MyList" method="list"> <result name="list">/myinter/list.jsp</result> <result name="success">/myinter/success.jsp</result> <result name="login">/myinter/login.jsp</result> </action> </package></struts>
Struts2拦截器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。