42.Struts2第四天 拦截器和标签

1. 复习昨日练习程序:

1)先是补充<s:iterator value=#list></s:iterator>标签,每次拿一个对象便把它压入栈顶。然后即可使用<s:property value=属性/>意思从栈顶拿出属性。;蓝色部分是写OGNL表达式.

2)第二种是放入ActionContext中,<s:iterator value=”#list” var=”l”></s:iterator>这是每遍历一个对象便把它放入到ActionContext中。Var对应的是键。

2. 登录成功返回一个UIser对象存在session域中作为标识。

3. New RuntimeExceptionxxx);异常对象也是一个javaBean对象。

4. 用户登录案例的学习为拦截器做准备:

学习:             此无事务

服务器收到参数之后调用servicelogin()方法登录,如果查询不到对象则new RuntimeException“错误”),Strtus2的配置文件中配置元素:(要知道异常对象new出来时被放在了栈顶)

<global-exception-mappings >

<exception-mapping result="error_login" exception="java.lang.RuntimeException"></exception-mapping>

</global-exception-mappings>

ongl从栈顶的异常对象取得错误信息:

<s:property value=”exception.message”>

以上注意一点:result标签匹配错误的exception时,应转发到页面,onjl才能获得错误信息。

5. <s:degbug></s:degbug>里面可以看到valueSatck的栈和context

6. 拦截器   interceptor

1)拦截器的放行是调invocationinvoke()方法。

doIntercept方法内需要的结构:

//前处理

 

//放行

Invocation.invoke();

//后处理

Return String;???? 

拦截器原理:不放行的话直接返回走result显示页面,放行的话走下一个拦截器。根据业务写代码在放行前或者后处理。

2)创建拦截器有三种方式,暂时只记第三种可订制方法拦截器:

继承MethodFilterInterceptor

 18.01.20,web学习第四十二天,还有半年,努力吧青年 struts2第四天 拦截器和

7. 拦截器配置

struts-defauit核心配置文件内有相关配置:

注册:

 18.01.20,web学习第四十二天,还有半年,努力吧青年 struts2第四天 拦截器和

拦截器栈,可以看作一个集合

 18.01.20,web学习第四十二天,还有半年,努力吧青年 struts2第四天 拦截器和

配置步骤:

<interceptors></interceptors>标签内部包含了第一步和第二步操作。

1)注册拦截器

            <interceptor name="wly" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>

2)注册拦截器栈

<interceptor-stack name=”mystack”>

引入自己的拦截器 讲究写在引入默认的之前!

<interceptor-ref name=”wly”><interceptor-ref>

使用标签引入默认的拦截器栈(20个)(name复制)

<interceptor-ref name=”defaultStack”><interceptor-ref>

<interceptor-stack>

3)指定默认拦截器栈

为整个包内Action都走这些拦截器:

<default-interceptor-ref  name=”mystack”></default-interceptor-ref>

指定单个action走引用的加自定义的拦截器,其他action走默认引用的20个。

<action>

   <interceptor-ref  name=””></interceptor-ref>

</action>

8. 拦截器拦截方法指定

指定哪些方法不拦截:exclude排除,不包括 。Includeexclude不能同时指定。

 18.01.20,web学习第四十二天,还有半年,努力吧青年 struts2第四天 拦截器和

拦截器其实在调用以下两种方法:

 18.01.20,web学习第四十二天,还有半年,努力吧青年 struts2第四天 拦截器和

例:登录时除了登录方法不拦截外,其他方法均拦截,当用户未登录时,所以拦截后若走return “”,应配置全局结果集匹配显示:

 18.01.20,web学习第四十二天,还有半年,努力吧青年 struts2第四天 拦截器和

此需要在指定默认拦截器之后,运行时异常匹配之前。

上述解决未登录方法2

jsp页面嵌入javaScript代码:

<script>

      Window.onload=function(){

   If(window.parent!=window){

 Window.parent.location.href=”${pageContext.request.ContextPath}”;

   }  

};

</script>

9. struts2标签  暂时了解

<s:iterator>标签

session中取得用户名:<s:property value=”#session.user.name”>

Struts2表单标签:

可以给其指定一个theme属性:simple,不添加任何多余修饰

 

非表单标签:可以在actionthis.addActionError(“错误信息”);

在后台页面取出错误信息<s:actionerror/>:取出错误信息

快捷键ctrl+o是:

相关文章: