struts+spring+hibernate基本项目框架的搭建(3)--Struts校验框架的使用

本文介绍Struts校验框架的使用方法,包括编写校验提示信息、校验Form、Action及配置文件等内容,并通过一个用户登录实例展示了各组件的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts校验框架

 

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);

}

}

5.       配置struts-config.xml

i)                    struts-config.xml里面添加一个login action如下

    <action

      attribute="loginForm"

      input="/login.jsp"

      name="loginForm"

      path="/login"

      scope="request"

      type="org.springframework.web.struts.DelegatingActionProxy">

      <forward name="error" path="/login.jsp" />

      <forward name="success" path="/userList.do" />

    </action>

ii)                   struts-config.xml,添加一个校验插件如下

    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

     <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />

</plug-in>

iii)                  

6.       编写loginForm的校验规则

i)                    确定WEB-INF目录下是否有validator-rules.xml,如果没有,请将demo工程里面WEB-INF目录下的validator.xml文件,copy到新工程

ii)                   WEB-INF目录下,新建一个validation.xml文件,如果以前存在,就在代码中添加loginForm的校验规则,代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

 

<form-validation>

  <formset>

     <form name="loginForm">

         <field property="userName" depends="required">

             <msg name="required" key="error.required"/>

             <arg0 key="login.username"/>

         </field>

         <field property="password" depends="required,minlength,maxlength">

             <!--msg标签指定消息

                 name指定对应required校验器

                 key指定提示信息的key

 

                 arg?指定提示消息里面的替代

             -->

             <msg name="required" key="error.required"/>

             <arg0 key="login.password"/>

 

             <msg name="minlength" key="error.minlength"/>

             <arg0 key="login.password"/>

             <arg1 key="${var:minlength}" name="minlength" resource="false"/>

             <var>

                 <var-name>minlength</var-name>

                 <var-value>6</var-value>

             </var>

            

             <msg name="maxlength" key="error.maxlength"/>

             <arg0 key="login.password"/>

             <arg1 key="${var:maxlength}" name="maxlength" resource="false"/>

             <var>

                 <var-name>maxlength</var-name>

                 <var-value>9</var-value>

             </var>

         </field>

     </form>

  </formset>

</form-validation>

注意事项:

a)    <form>里面的name属性的值,必须同需要校验的form,struts-config.xml里面定义的formname值一样

b)       

7.       src目录下的applicationContext.xml文件里面,添加<bean name="/login" class="cn.com.book.demo.struts.action.LoginAction"/>,注册一个新的bean---LoginAction

8.       重新编译工程,发布到web容器,访问login.jsp,就可以演示输入值的校验了

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值