框架及应用主要组件作业与要求.ppt
《框架及应用主要组件作业与要求.ppt》由会员分享,可在线阅读,更多相关《框架及应用主要组件作业与要求.ppt(37页珍藏版)》请在三一文库上搜索。
1、3、Struts2的拦截器,拦截器(Interceptor)是Struts2的核心组成部分。 拦截器动态拦截Action调用的对象,它提供了一种机制,使开发者可以定义一个特定的功能模块,这个模块可以在Action执行之前或者之后运行,也可以在一个Action执行之前阻止Action执行。 拦截器分为两类:Struts2提供的内建拦截器和用户自定义的拦截器。,Struts2拦截器的自定义实现,为了实现自定义拦截器,Struts2提供了Interceptor接口,以及对该接口实现的一个抽象拦截器类(AbstractInterceptor)。 实现拦截器类一般可以实现Interceptor接口,或者
2、直接继承AbstractInterceptor类。 Struts2还提供了一个MethodFilterIntercepter类,该类是AbstractInterceptor类的子类,需要实现的拦截器支持方法过滤性,就继承MethodFilterIntercepter。,用户自定义一个拦截器一般需要三步:,(1)自定义一个实现Interceptor接口 (或继承AbstractInterceptor 或继承MethodFilterIntercepter)的类。 (2)在struts.xml中注册上一步中定义的拦截器。 (3)在需要使用的Action中引用上述定义的拦截器。,1. 拦截器接口:In
3、terceptor Struts2提供的Interceptor接口(Interceptor.java)的代码如下: import com.opensymphony.xwork2.ActionInvocation; import java.io.Serializable; public interface Interceptor extends Serializable void destroy(); void init(); String intercept(ActionInvocation invocation) throws Exception; Intercept 方法是拦截器的核心方法
4、,实现具体的拦截操作,返回一个字符串作为逻辑视图。 与Action一样,如果拦截器能够成功调用Action,则Action中的execute()方法返回一个字符串类型值,作为逻辑视图,否则,返回开发者自定义的逻辑视图。,2. 抽象拦截器类:AbstractInterceptor 抽象拦截器类(AbstractInterceptor),是对接口Interceptor的一种实现,其中,init()和destroy()方法是空实现。 import com.opensymphony.xwork2.ActionInvocation; public abstract class AbstractInter
5、ceptor implements Interceptor public void init() public void destroy() public abstract String intercept(ActionInvocation invocation) throws Exception; ,3自定义拦截器: 实现接口Intercepter(或继承AbstractInterceptor),并在interceptor方法中加入有关的处理代码,其代码格式如下: package interceptor; public class MyInterceptor extends Abstract
6、Interceptor public String intercept(ActionInvocation invocation) throws Exception System.out.println(“Before“); /在Action之前调用 String result = invocation.invoke(); /* invocation.invoke()方法检查是否还有拦截器,若有,则继续调用余下的拦截器,若没有,则执行action的业务逻辑,并返回值*/ System.out.println(“After“); return result; ,4在Struts.xml中配置拦截器
7、, /success.jsp /test.jsp ,5. 在interceptor方法中,利用参数ActionInvocation可获取页面提交的信息 public String intercept(ActionInvocation ai) throws Exception Map session = invocation.getInvocationContext().getSession(); if(session.get(“user“) = null) return “login“; else return ai.invoke(); ,案例:,开发一个网上论坛过滤系统,如果网友发表的有不文
8、明的语言,将通过拦截器对不文明的文字进行自动替代。只是给出了一种简单的过滤,过滤是否有“讨厌”文字,若有“讨厌”,则用“喜欢”代替要过滤的内容“讨厌”,形成新的文本内容并显示在论坛上。运行界面如图所示。,Struts2的输入验证,Struts2提供了安全的服务器验证方法: (1)一种是使用validate()方法, (2)另一种是配置验证(使用配置验证文件),1 使用validate()方法实现验证,validate()方法是专门用来验证数据的,实现的时候需要继承ActionSupport类,并重写validate()方法来完成输入验证 。,案例实现客户注册输入验证,使用validate()方
9、法实现对注册页面进行验证。注册页面如下图所示,若输入的数据验证成功,进入验证成功页面(该页面显示注册信息),否则,仍返回注册页面。,【分析】 对于该案例,根据Struts2的MVC设计思想,需要设计3部分组件: (1)模型组件: 注册用户的JavaBean:User.Java 实现注册信息添加到数据库的JavaBean:userDbase.java (2)Action控制器的设计:RegisterAction.java,在该控制器中有两个主要方法: public String register():实现注册 public void validate():实现注册前的信息验证 (3)设计视图:
10、注册页面(Regist.jsp):按上图所示的页面设计 注册成功后,显示注册信息的页面:Success.jsp。,(3)编写业务控制器:RegisterAction.java: package Action; import Beans.User; import Beans.userDbase; import com.opensymphony.xwork2.ActionSupport; import java.util.regex.*; public class RegisterValidateAction extends ActionSupport private User user; pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 框架 应用 主要 组件 作业 要求
链接地址:https://www.31doc.com/p-2592920.html