启天论坛软件硬件技术Java技术 → Struts 2拦截器


  共有220人关注过本帖平板打印

主题:Struts 2拦截器

帅哥,在线噢!
junsan
  1楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 总掌门
等级:管理员 帖子:11733 积分:7675 威望:757 精华:24 注册:2005-7-14 15:13:00
  发帖心情 Post By:2008-9-5 11:56:00



读者可以按照笔者的步骤,一步一步建立第一个拦截器示例,来体验Struts 2框架中拦截器带给读者的惊喜。
(1) 在配置文件中增加拦截器定义和在Action中声明拦截器。笔者建立了一个目录ch5来对应本章,ch5.xml配置文件内容如代码5.8所示。
代码5.8  HelloWorld拦截器配置文件
<?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>
    <!--  定义包-->
<package name="ch5" extends="struts-default" namespace="/ch5">
      <!--  定义拦截器-->
        <interceptors>
            <interceptor name="Myinterceptor"
                class="ch5.Myintercepor">
            </interceptor>
        </interceptors>
        <action name="Reg" class="ch5.Reg">
            <result name="success">/ch5/success.jsp</result>
            <result name="input">/ch5/reg.jsp</result>
            <!--  引用默认拦截器-->
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <!--  引用自定义默认拦截器-->
            <interceptor-ref name="Myinterceptor"></interceptor-ref>
        </action>
    </package>
</struts>
★ 注意 ★
需要读者在struts.xml文件中使用<include file="/ch5/ch5.xml"></include>将该配置文件包含进去。
 
 (2)在ch5包内建立一个拦截器类Myintercepor,如代码5.9所示。
代码5.9  Helloworld拦截器类Myintercepor
package ch5;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class Myintercepor extends AbstractInterceptor {
    //拦截方法
    public String intercept(ActionInvocation arg0) throws Exception {
        Reg reg = (Reg) arg0.getAction();
        System.out.println("拦截器信息:HelloWorld拦截器!");
        //执行Action或者执行下一个拦截器
        String result = arg0.invoke();
        //提示Action执行完毕
        System.out.println("拦截器信息:Action执行完毕!");
        return result;
    }
}
 (3)在ch5包内建立一个业务控制器Reg,如代码5.10所示。
代码5.10  HelloWorld拦截器示例的业务控制器
package ch5;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class Reg extends ActionSupport {
    //定义用户名属性
    private String username;
    //定义处理信息:注意同http中的msg不同名称
    private String mymsg;
    //定义密码属性
    private String password1;
    //定义确认密码
    private String password2;
    //定义生日属性
    private Date birthday;
    public String execute() throws Exception {
        if (username != null && getPassword1().equals(getPassword2())
                && !getUsername().trim().equals("")) {
            //输出调试信息
            System.out.println("Action信息:正在执行Actiion... ...");
            return SUCCESS;
        } else {
            return INPUT;
        }
    }
    //getter和setter方法
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getMymsg() {
        return mymsg;
    }
    public void setMymsg(String mymsg) {
        this.mymsg = mymsg;
    }
    public String getPassword1() {
        return password1;
    }
    public void setPassword1(String password1) {
        this.password1 = password1;
    }
    public String getPassword2() {
        return password2;
    }
    public void setPassword2(String password2) {
        this.password2 = password2;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}
 (4)同样在ch5包内,建立一个用户注册reg.jsp文件和一个用于显示注册成功信息的success.jsp文件。内容分别如代码5.11和代码5.12所示。
代码5.11  用户注册界面reg.jsp
<%@ page c language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>用户注册</title>
<s:head />
</head>
<body>
<table>
<s:form id="id" action="Reg">
    <s:textfield name="username" label="用户名:"/>
    <s:password name="password1" label="密码:"/>
    <s:password name="password2" label="确认密码:"/>
    <s:datetimepicker name="birthday" label="生日:"/>
    <s:submit value="注册"/>
</s:form>
</table>
</body>
</html>
代码5.12  注册成功界面success.jsp
<%@ page c language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>注册成功界面</title>
<s:head />
</head>
<body>
<table>
<h2>用户名:<s:property  value="username" /></h2>
<h2>密码:<s:property  value="password1" /></h2>
<h2>生日:<s:property  value="birthday" /></h2>
</table>
</body>
</html>
(5) 启动Tomcat服务器,在浏览器中输入:http://localhost:8080/bookcode/ch5/reg.jsp,运行界面如图5.6所示。
图片点击可在新窗口打开查看

图5.6  HelloWorld拦截器的注册界面
 (6)读者可以在“用户名”、“密码”、“确认密码”和“生日”输入框中填入相关字符串,单击“注册”按钮,会发现Tomcat控制台输出如下信息:
… …
信息: Detected AnnotationActionValidatorManager, initializing it...
拦截器信息:HelloWorld拦截器!
Action信息:正在执行Actiion... ...
拦截器信息:Action执行完毕!
… …
到此为止,第一个拦截器HelloWorld示例就建立成功了,读者通过本示例,可以了解拦截器的基本功能。
★ 说明 ★
Struts 2框架提供的拦截器功能确实给项目开发提供了一个非常有用的手段。后面笔者将会逐步深入介绍Struts 2的拦截器。


主页:http://www.rsky.com.cn

培训论坛:http://www.javastar.org

Blog:http://blog.csdn.net/junnef

技术交流QQ:334620162

培训咨询QQ:66883074

合租咨询QQ:631066985

MSN:junsanjin@hotmail.com

Emial:junsanjin@263.net

传真:(010)950507转747393
启天合组-10人 15人 20人 多人合租空间 支持(0中立(0反对(0回到顶部