Struts2学习–第四天
1、拦截器的概念
- 拦截器和过滤器的区别:
- 过滤器是Servlet规范中的一部分,任何Javaweb工程都可以用
- 拦截器是struts框架自己的,只有使用了struts框架的工程才可以用
- 拦截器只拦截action
- 过滤器在url-pattern中配置了/*之后,可以对所有要访问的资源进行过滤
凡是拦截器做的过滤器都可以做。
2、拦截器的作用
对动作方法进行增强。(把重复的代码提取出来,然后放到拦截器中,统一管理,统一调用)
3、自定义拦截器
自定义拦截器代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 开启开发者模式 -->
<constant name="struts.devMode" value="true"></constant>
<package name="p1" extends="struts-default">
<!-- 声明一个拦截器 -->
<interceptors>
<interceptor name="myInterceptor" class="com.ccit.rj1741.cn.MyInterceptor"></interceptor>
<interceptor name="myInterceptor2" class="com.ccit.rj1741.cn.MyInterceptor2"></interceptor>
</interceptors>
<!-- 把自己的声明为默认的拦截器栈 <default-interceptor-ref name="myInterceptor"></default-interceptor-ref> -->
<!-- action -->
<action name="demo1" class="com.ccit.rj1741.cn.action.Demo1Action" method="demo1">
<!-- 引用拦截器:写在action标签内部,当我们自己定义了拦截器之后,默认的拦截器就失效了。 -->
<interceptor-ref name="myInterceptor"></interceptor-ref>
<interceptor-ref name="myInterceptor2"></interceptor-ref>
<result>/success.jsp</result>
</action>
</package>
</struts>
4、拦截器的类视图
5、Struts2注解
1)使用的jar包
2)jar包的内容
3)示例代码
/**
* 动作类
* */
@ParentPackage("struts-default")
public class Demo1Action extends ActionSupport {
@Action(value="demo1",results= {
@Result(name="success",type="dispatcher",location="/success.jsp"),
@Result(name="error",location="/error.jsp")
})
public String demo1() {
System.out.println("Demo1Action的demo方法执行了----------");
return SUCCESS;
}
}
4)请求参数封装源码
ModelDriven拦截器: