struts验证.docx

上传人:b****5 文档编号:30260090 上传时间:2023-08-13 格式:DOCX 页数:25 大小:25.71KB
下载 相关 举报
struts验证.docx_第1页
第1页 / 共25页
struts验证.docx_第2页
第2页 / 共25页
struts验证.docx_第3页
第3页 / 共25页
struts验证.docx_第4页
第4页 / 共25页
struts验证.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

struts验证.docx

《struts验证.docx》由会员分享,可在线阅读,更多相关《struts验证.docx(25页珍藏版)》请在冰豆网上搜索。

struts验证.docx

struts验证

数据校验也称为输入校验,指导对用户的输入进行基本的过滤,包括必填的字段,字段必须为数字及两次输入的密码必须匹配等。

本文重点介绍了struts的校验框架。

1、struts的数据校验大致有如下几种方式:

  

1.ActionForm的代码校验

2.Action里的代码校验

3.结合commons-validator.jar的校验

1.1ActionForm的代码校验

  ActionForm的代码校验是最基本的校验方式。

这种校验方式是重写ActionForm的validate方法,在该方法内对所有的字段进行基本的校验。

如果出现不符合要求的输出,则将出错提示封装在ActionError对象里,最后将多个ActionError组合成ActionErrors对象,给对象里封装了全部的出错信息。

   以登陆页面为例,下面是重写了Validate方法的ActionForm的代码:

Java代码

1.import javax.servlet.http.HttpServletRequest;  

2.  

3.import org.apache.struts.action.ActionError;  

4.import org.apache.struts.action.ActionErrors;  

5.import org.apache.struts.action.ActionForm;  

6.import org.apache.struts.action.ActionMapping;  

7.  

8.public class LoginActionForm extends ActionForm {  

9.      

10.    private static final long serialVersionUID = 1L;  

11.    private String username;  

12.    private String password;  

13.      

14.    public String getUsername() {  

15.        return username;  

16.    }  

17.    public void setUsername(String username) {  

18.        this.username = username;  

19.    }  

20.    public String getPassword() {  

21.        return password;  

22.    }  

23.    public void setPassword(String password) {  

24.        this.password = password;  

25.    }  

26.      

27.    //重写validate方法,完成数据校验  

28.    @SuppressWarnings("deprecation")  

29.    @Override   

30.    public ActionErrors validate(ActionMapping mapping,  

31.            HttpServletRequest request) {  

32.        //ActionErrors用于包装所有的出错信息  

33.        ActionErrors  errors = new ActionErrors();  

34.        //如果用户名为空  

35.        if((username == null)||(username.equals(""))) {  

36.            //error.username对应资源文件中的key,用户名是对应资源文件的第一个参数  property{0}{1}

37.            errors.add("username", new ActionError("error.username","用户名"));  

38.        }  

39.        //如果密码为空  

40.        if((password == null )||(password.equals(""))) {  

41.            errors.add("password", new ActionError("error.password","密码"));  

42.        }  

43.        //返回封装了所有的出错信息  

44.        return errors;  

45.    }  

46.}  

importjavax.servlet.http.HttpServletRequest;

importorg.apache.struts.action.ActionError;

importorg.apache.struts.action.ActionErrors;

importorg.apache.struts.action.ActionForm;

importorg.apache.struts.action.ActionMapping;

publicclassLoginActionFormextendsActionForm{

privatestaticfinallongserialVersionUID=1L;

privateStringusername;

privateStringpassword;

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

//重写validate方法,完成数据校验

@SuppressWarnings("deprecation")

@Override

publicActionErrorsvalidate(ActionMappingmapping,

HttpServletRequestrequest){

//ActionErrors用于包装所有的出错信息

ActionErrorserrors=newActionErrors();

//如果用户名为空

if((username==null)||(username.equals(""))){

//error.username对应资源文件中的key,用户名是对应资源文件的第一个参数

errors.add("username",newActionError("error.username","用户名"));

}

//如果密码为空

if((password==null)||(password.equals(""))){

errors.add("password",newActionError("error.password","密码"));

}

//返回封装了所有的出错信息

returnerrors;

}

}

在JSP页面中值需要更改一处即可****之间的部分:

Jsp代码

1.<%@ page language="java" contentType="text/html; charset=GB2312" errorPage="error.jsp"%>  

2.

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  

3.<%@ taglib prefix="bean" uri="http:

//struts.apache.org/tags-bean"%>    

4.<%@ taglib prefix="html" uri="http:

//struts.apache.org/tags-html" %>    

5.  

6.    

7.    

-- 使用国际化资源文件的key输出标题 -->  

8.    <bean:</p><p>message key="login"/>  

9.    

10.  

-- 下面的标签用于输出出错信息 -->  

11.  

-- *******************************************-->  

12.  

errors/>  

13.  

-- ******************************************* -->  

14.     

15.    

  

16.    

-- 下面是登陆表单 -->  

17.    请输入用户名和密码:


  

18.        

form action="login.do" method="post">  

19.            

message key="username" />:

text property="username" />  

20.            
  

21.            

message key="password"property=”username” />:

text property="password" />  

22.            
  

23.            

submit>  

24.                

message key="login"/>  

25.            

submit>  

26.            
  

27.        

form>  

28.      

29.  

<%@pagelanguage="java"contentType="text/html;charset=GB2312"errorPage="error.jsp"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<%@taglibprefix="bean"uri="http:

//struts.apache.org/tags-bean"%>

<%@taglibprefix="html"uri="http:

//struts.apache.org/tags-html"%>

--使用国际化资源文件的key输出标题-->

<bean:</p><p>messagekey="login"/>

--下面的标签用于输出出错信息-->

--*******************************************-->

errors/>

--*******************************************-->

<%

//用于输出出错信息,出错信息保存在request的err属性中

if(request.getAttribute("err")!

=null){

out.println(request.getAttribute("err"));

}

%>



--下面是登陆表单-->

请输入用户名和密码:


formaction="login.do"method="post">

messagekey="username"/>:

textproperty="username"/>


messagekey="password"/>:

textproperty="password"/>


submit>

messagekey="login"/>

submit>


form>

由于在本项目中用到了资源文件,因为有了资源文件的支持,JSP页面只需要简单的

errors/>标签就可以生成全部的出错信息,下面是资源文件:

资源文件代码

1.# -- standard errors --  

2.username=用户名  

3.password=密码  

4.login=登陆  

5.noname=请输入用户名,然后在登陆  

6.nopassword=请输入密码,然后在登陆  

7.#html:

errors将自动加载errors.header作为出错提示标题  

8.errors.header=

验证出错

你必须按以下提示修改你的输入才能继续....  

9.error.username={0} 必须填写.
  

10.error.password={0} 必须填写.
  

11.#html:

errors将自动加载errors.footer作为出错的最后一行  

12.errors.footer=

你完成上面提示部分

  

#--standarderrors--

username=用户名

password=密码

login=登陆

noname=请输入用户名,然后在登陆

nopassword=请输入密码,然后在登陆

#html:

errors将自动加载errors.header作为出错提示标题

errors.header=

验证出错

你必须按以下提示修改你的输入才能继续....

error.username={0}必须填写.

error.password={0}必须填写.

#html:

errors将自动加载errors.footer作为出错的最后一行

errors.footer=

你完成上面提示部分

注:

上述资源文件还不能直接在项目中应用,在使用前需要转换成unicode格式。

命令:

native2asciiMessageResources_zh_CN.propertiesMessageResources.properties

以上是使用ActionForm进行数据验证的方法,但是使用ActionForm的数据验证有个显著的问题:

ActionErrors和ActionError都是struts不在推荐使用的类,因此,应尽量避免使用这种验证方法。

1.2 Action的代码验证

    在Action里通过代码完成输入验证,是最基本,也是最容易使用的方法。

与当初的MVC设计相似,在调用业务逻辑组件之前,先对数据进行基本的验证,这是最传统也是最原始的方法。

     在Action里面完成数据验证,实际上就是在execute方法前面增加数据验证的部分代码。

下面是增加了数据验证Action代码:

Java代码

1.import java.sql.ResultSet;  

2.  

3.import javax.servlet.http.HttpServletRequest;  

4.import javax.servlet.http.HttpServletResponse;  

5.  

6.import org.apache.struts.action.Action;  

7.import org.apache.struts.action.ActionForm;  

8.import org.apache.struts.action.ActionForward;  

9.import org.apache.struts.action.ActionMapping;  

10.  

11.import .newcom.dao.DbDao;  

12.  

13.public class LoginAction extends Action {  

14.  

15.    @Override  

16.    //必须重写核心方法,该方法负责处理用户的请求  

17.    public ActionForward execute(ActionMapping mapping, ActionForm form,  

18.            HttpServletRequest request, HttpServletResponse response)  

19.            throws Exception {  

20.        //解析用户请求参数  

21.        LoginActionForm  laf = (LoginActionForm)form;  

22.        String username = laf.getUsername();  

23.        System.out.println(" 您输入的用户名是:

"+username);  

24.        String password = laf.getPassword();  

25.        //出错提示  

26.         

27.        // 完成服务器端的校验  

28.          //ActionErrors用于包装所有的出错信息  

29.        ActionMessages  errors = new ActionMessages();  

30.        //如果用户名为空  

31.        if((username == null)||(username.equals(""))) {  

32.            //error.username对应资源文件中的key,用户名是对应资源文件的第一个参数  property{0}{1}

33.            errors.add("username", new ActionMessages("error.username","用户名"));  

34.        }  

35.        //如果密码为空  

36.        if((password == null )||(password.equals(""))) {  

37.            errors.add("password", new ActionMessages("error.password","密码"));  

38.

39.        }  

40.//saveErrors(errors,request);

41.saveMessages(errors,request);

42.retunmapping.findForword(“shibai”);

43.    }  

44.      

45.}  

importjava.sql.ResultSet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.struts.action.Action;

importorg.apache.struts.action.ActionForm;

importorg.apache.struts.action.ActionForward;

importorg.apache.struts.action.ActionMapping;

import.newcom.dao.DbDao;

publicclassLoginActionextendsAction{

@Override

//必须重写核心方法,该方法负责处理用户的请求

publicActionForwardexecute(ActionMappingmapping,ActionFormform,

HttpServletRequestrequest,HttpServletResponseresponse)

throwsException{

//解析用户请求参数

LoginActionFormlaf=(LoginActionForm)form;

Stringusername=laf.getUsername();

System.out.println("您输入的用户名是:

"+username);

Stringpassword=laf.getPassword();

//出错提示

StringerrMsg="";

//完成服务器端的校验

if(username==null||username.equals("")){

errMsg+="您的用户名丢失或没有输入,请重新输入!

";

}elseif(password==null||password.equals("")){

errM

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1