SSH(struts+spring+hibernate)迅速开发--附录1 Struts校验框架(1)

来源:互联网 发布:立二拆四 知乎 编辑:程序博客网 时间:2024/06/05 11:42

附录1Struts校验框架

 

Struts校验框架,大体有如下几部分组成

1.       校验提示信息

2.       校验提交页面

3.       校验Form

4.       Action

5.       校验配置文件文件

 

下面以实现一个用户登陆的例子讲解Struts校验框架的组成部分以及相关的写法.

要求用户登陆的时候,输入用户名和密码,再进行登陆.用户名和密码都不能为空,而且密码的长度必须大于6,且小于9.

具体实现步骤如下:

1.       编写校验提示信息资源文件

i)                    在工程的src/cn/com/book/demo/struts目录下,添加一个ApplicationResource_temp.properties文件

ii)                   在里面添加几条提示资源信息,内容如下:

        login.username=用户名

login.password= 

login.login= 

login.reset= 

 

error.required={0}必须输入

error.minlength={0}的长度必须大于{1}

error.maxlength={0}的长度必须小于{1}

 

其中有{}包含数字的表示参数,在具体应用中,将有别的值替代

iii)                 在以前的ecoding.bat批处理文件里面,添加一行转换命令

       native2ascii -encoding gb2312

ApplicationResources_temp.properties ApplicationResources_zh_CN.properties

iv)                 运行ecoding.bat命令,生成一个ApplicationResource_zh_CN.properties文件

v)                  刷新工程,重新编译

2.       编写校验Form

i)                    打开struts-config.xml设计器

ii)                   在设计器上,点击鼠标右键->New->Form,出现如下界面

      并如图上样式,在输入框内输入各自的值,Superclass选择org.apache.struts.validator.validatorForm选项,点击Finish

iii)                 打开刚刚生成的LoginForm.java文件,添加userNamepassword两个属性,以及对应的setget方法,删除自动生成的validate方法和reset方法.代码如下:

 /*

 * Generated by MyEclipse Struts

 * Template path: templates/java/JavaClass.vtl

 */

package cn.com.book.demo.struts.form;

 

import org.apache.struts.validator.ValidatorForm;

 

/**

 * MyEclipse Struts

 * Creation date: 11-29-2007

 *

 * XDoclet definition:

 * @struts.form name="loginForm"

 */

public class LoginForm extends ValidatorForm {

       private String userName;

       private String password;

       /*

        * Generated Methods

        */

 

       public String getPassword() {

              return password;

       }

 

       public void setPassword(String password) {

              this.password = password;

       }

 

       public String getUserName() {

              return userName;

       }

 

       public void setUserName(String userName) {

              this.userName = userName;

       }

}

iv)                  

3.       编写login.jsp文件

<%@ page language="java" pageEncoding="UTF-8"%>

 

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

  <html:form action="/login.do"  onsubmit="validateLoginForm(this)">

    <bean:message key="login.username"/>:<html:text property="userName"></html:text><br/>

    <bean:message key="login.password"/>:<html:password property="password"></html:password><br/>

    <html:submit><bean:message key="login.login"/></html:submit>

    <html:reset><bean:message key="login.reset"/></html:reset>

  </html:form>

 

  <html:javascript formName="loginForm"/>

</body>

</html>

代码注意事项:

i)                粗体部分,是校验框架在jsp中必须的代码

ii)                   Form里面的<html:text> <html:password>property,必须同LoginForm.java里面添加的两个属性一致

iii)                 <html:form>里面的action,必须同struts-config.xml里面配置的登陆actionpath值一致

4.       编写LoginAction.java代码如下:

/*

 * Generated by MyEclipse Struts

 * Template path: templates/java/JavaClass.vtl

 */

package cn.com.book.demo.struts.action;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import cn.com.book.demo.struts.form.LoginForm;

 

/**

 * MyEclipse Struts

 * Creation date: 11-29-2007

 *

 * XDoclet definition:

 * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"

 * @struts.action-forward name="error" path="/login.jsp"

 * @struts.action-forward name="success" path="/userList.do"

 */

public class LoginAction extends Action {

/*

 * Generated Methods

 */

 

/**

 * Method execute

 * @param mapping

 * @param form

 * @param request

 * @param response

 * @return ActionForward

 */

public ActionForward execute(ActionMapping mapping, ActionForm form,

               HttpServletRequest request, HttpServletResponse response) {

       System.out.println("***************");

        String path = "error";

        LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub

        String userName = loginForm.getUserName();

        String password = loginForm.getPassword();

        if(userName != null && password != null && password.length()>6 && password.length()<9){

               path = "success";

        }

        return mapping.findForward(path);

}

}

 
原创粉丝点击