(6)拦截器
来源:互联网 发布:淘宝话费券在哪里 编辑:程序博客网 时间:2024/06/05 22:40
1、在Struts2中,预设了许多拦截器,这些拦截器的定义都在struts-default.xml文件中的struts-default包内。
2、拦截器栈,由多个拦截器的引用组成:
<interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginCheck"/></interceptor-stack>3、拦截器在声明和引用:
a、声明:
<interceptor name="loginCheck" class="interceptor.LoginInterceptor"/>
b、引用:
<interceptor name="loginCheck">
c、拦截器栈内既可以是拦截器的引用,又可以是拦截器栈的引用。
4、拦截器在<action>中的声明和引用:
a、声明:同上
b、引用:
<interceptor-ref name="defaultStack"/>5、拦截器在<package>中的声明和引用:
a、声明:
<interceptors> <interceptor name="loginCheck" class="interceptor.LoginInterceptor"/> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginCheck"/> </interceptor-stack></interceptors>
b、引用:
<default-interceptor-ref name="myStack"/>
6、<action>中拦截器的调用顺序:1)首先,看有没有<interceptor-ref>,如果有,不找了2)如果没有,则看<package>中是否有元素<default-interceptor-ref>,如果有,不找了,3)如果没有,则递归寻找这个包的子包。4)如果这些位置都有相应的拦截器,则以<action>中的为准。
7、如果在<action>自己定义了拦截器,则系统预设的拦截器会失效,如:
<interceptor-ref name="myStack"></interceptor-ref>
8、如果既想使用系统预设的拦截器又想使用自己定义的拦截器,可以这样定义:
<interceptor-ref name="defaultStack"/><interceptor-ref name="myStack"/>即在自己定义的拦截器前面引用系统的拦截器。
9、自定义拦截器,假设进行简单的登录验证,如果用户没有进行登录,则不让其继续进行下一步的操作。
a、创建LoginInterceptor.java
package interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class LoginInterceptor implements Interceptor { @Override public void destroy() { System.out.println("destroy..."); } @Override public void init() { System.out.println("init..."); } @Override public String intercept(ActionInvocation invocation) throws Exception { String flag = (String) invocation.getInvocationContext().getSession().get("user"); if(flag==null || "".equals(flag)) { System.out.println("没有登录!"); return "login"; } else { System.out.println("已经登录!"); return invocation.invoke(); } }}
b、创建UserAction.java
package action;import model.User;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private User user = new User(); public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() throws Exception { // TODO Auto-generated method stub return super.execute(); } public String loginUser() throws Exception { if("zhangsan".equals(user.getName())) { ActionContext.getContext().getSession().put("user", "zhangsan");//注释和不注释两种情况 return SUCCESS; } else { return ERROR; } } }
c、创建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.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <!--增加登录的拦截器,没有登录则不让进行下一步操作。 --> <interceptors> <interceptor name="loginCheck" class="interceptor.LoginInterceptor"/> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginCheck"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="myStack"/> <!--配置全局的Result --> <global-results> <result name="error">error.jsp</result> <result name="login">login.jsp</result> </global-results> <!--配置全局的异常映射 --> <global-exception-mappings> <exception-mapping result="error" exception="java.lang.Exception"/> </global-exception-mappings> <!--默认的action --> <!--增加自己的拦截器,让登录检查的拦截器失效 --> <action name="index"> <interceptor-ref name="defaultStack"></interceptor-ref> <result>login.jsp</result> </action> <action name="chainAction" class="action.ChainAction"> <result >welcome.jsp</result> </action> <!--增加自己的拦截器,让登录检查的拦截器失效 --> <action name="*User" class="action.UserAction" method="{1}User"> <interceptor-ref name="defaultStack"></interceptor-ref> <result type="chain">chainAction</result><!-- 这个action后面不能加上.action!!! --> <result name="input">index.jsp</result> </action> </package></struts>
d、创建index.jsp(用于进行跳转到login.jsp)、login.jsp(用于登录)、welcome.jsp(欢迎页面).....
0 0
- (6)拦截器
- Interceptor登录拦截(Spring拦截器)
- 6、拦截器
- 【Struts2】(6)拦截器
- 6拦截器
- 6、spring拦截器
- 拦截器(Interceptor)
- 拦截器(自定义)
- Filter(拦截器)
- 拦截器(Interceptors)
- 拦截器(19)
- 拦截器(配置)
- Struts2总结---内置拦截器和自定义拦截器 (6)
- struts2的拦截器(6):拦截器的执行顺序
- struts2拦截器篇(二)自定义拦截器
- Struts2的拦截器(拦截器概述)
- (五) CXF 拦截器--系统拦截器
- (六) CXF 拦截器--自定义拦截器
- 输入处理 Input Processor
- 日志分析方法概述
- 记载
- 我所接触过的编程语言
- 第五周作业——有向图邻接表表示及反向图构造
- (6)拦截器
- MySQL Stored Procedure Parameters
- Oracle数据库:创建表空间和用户
- 贪心算法之寻找最大数
- C++ 中标准库 map 和 hash_map 的使用方法
- Windows学习心得【程序中的击中测试】
- java学习笔记 读取pdf文件并写成txt文件输出
- uC/OS-III移植基本条件
- Java集合之HashMap