• 数据校验


    用 execute()方法,validate()方法,ValidateXxx三种来说明一下stryts2数据校验

    我们来看一下jsp页面(以注册为例)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
     2 <%
     3 String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     5 %>
     6 <%@ taglib uri="/struts-tags" prefix="s" %>
     7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     
    12     <title>My JSP 'regist.jsp' starting page</title>
    13    
    14 
    15   </head>
    16   
    17   <body>
    18    <!-- 获取错误信息 -->
    19     <s:fielderror></s:fielderror>
    20     <s:form action="execute" method="post">
    21     <s:textfield name="user.username" label="用户名"></s:textfield>
    22     <br/>
    23     <s:textfield name="user.userpwd" label="密码"></s:textfield>
    24     <br/>
    25     <s:textfield name="okpwd" label="确认密码"></s:textfield>
    26     <br/>
    27     <s:submit value="注册"></s:submit>
    28     </s:form>
    29   </body>
    30 </html>
    1
     1<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
     2 <%
     3 String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     5 %>
     6 
     7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     
    12     <title>My JSP 'success.jsp' starting page</title>
    13 
    14   </head>
    15   
    16   <body>
    17   登录成功 <br/>
    18   欢迎你${user.username}<br/>
    19  等待数据加载>>>
    20   </body>
    21 </html>

    用到的实体类  

     1 package cn.entity;
     2 
     3 public class User {
     4     private String username;
     5     private String userpwd;
     6     public String getUsername() {
     7         return username;
     8     }
     9     public String getUserpwd() {
    10         return userpwd;
    11     }
    12     public void setUsername(String username) {
    13         this.username = username;
    14     }
    15     public void setUserpwd(String userpwd) {
    16         this.userpwd = userpwd;
    17     }
    18 }
    实体类

    下面是三种实现struts2数据校验的方法:

    execute()方法

       

    1 package cn.action;
     2 
     3 import cn.entity.User;
     4 
     5 import com.opensymphony.xwork2.ActionSupport;
     6 
     7 public class ExecuteAction extends ActionSupport{
     8     private User user;
     9     private String okpwd;
    10     
    11     @Override
    12     public String execute() throws Exception{
    13         if(user.getUsername().length()==0){
    14             addFieldError("username", "用户名不能为空");
    15         }
    16         if(user.getUserpwd().length()==0){
    17             addFieldError("userpwd", "密码不能为空");
    18         }
    19         if(!user.getUserpwd().equals(okpwd)){
    20             addFieldError("userpwd", "两次密码必须一致");
    21         }
    22         //捕获错误信息   返回input
    23         if(this.hasFieldErrors()){
    24             return INPUT;
    25         }
    26         return SUCCESS;
    27     }
    28     public User getUser() {
    29         return user;
    30     }
    31     public String getOkpwd() {
    32         return okpwd;
    33     }
    34     public void setUser(User user) {
    35         this.user = user;
    36     }
    37     public void setOkpwd(String okpwd) {
    38         this.okpwd = okpwd;
    39     }
    40 }
    execute方法实例

    validate()方法

    public class ValidateAction extends ActionSupport{
        private User user;
        private String okpwd;
        
        @Override
        public String execute() throws Exception{
            return SUCCESS;
        }
        @Override
        public void validate(){
            if(user.getUsername().length()==0){
                addFieldError("username", "用户名不能为空");
            }
            if(user.getUserpwd().length()==0){
                addFieldError("userpwd", "密码不能为空");
            }
            if(!user.getUserpwd().equals(okpwd)){
                addFieldError("userpwd", "两次密码必须一致");
            }
        }
        public User getUser() {
            return user;
        }
        public String getOkpwd() {
            return okpwd;
        }
        public void setUser(User user) {
            this.user = user;
        }
        public void setOkpwd(String okpwd) {
            this.okpwd = okpwd;
        }
    }
    validate方法

    ValidateXxx()方法

    1 package cn.action;
     2 
     3 import cn.entity.User;
     4 
     5 import com.opensymphony.xwork2.ActionSupport;
     6 
     7 public class ValidateXxxAction extends ActionSupport{
     8 
     9     private User user;
    10     private String okpwd;
    11     
    12     public void validateRegist(){
    13         if(user.getUsername().length()<6){
    14             addFieldError("username", "用户长度不能小于6位");
    15         }
    16     }
    17     public String regist(){
    18         
    19         return SUCCESS;
    20     }
    21     
    22     @Override
    23     public void validate(){
    24         if(user.getUsername().length()==0){
    25             addFieldError("username", "用户名不能为空");
    26         }
    27         if(user.getUserpwd().length()==0){
    28             addFieldError("userpwd", "密码不能为空");
    29         }
    30         if(!user.getUserpwd().equals(okpwd)){
    31             addFieldError("userpwd", "两次密码必须一致");
    32         }
    33         
    34     }
    35     public User getUser() {
    36         return user;
    37     }
    38     public String getOkpwd() {
    39         return okpwd;
    40     }
    41     public void setUser(User user) {
    42         this.user = user;
    43     }
    44     public void setOkpwd(String okpwd) {
    45         this.okpwd = okpwd;
    46     }
    47 }
    validateXxx方法

    接下来是编写配置文件

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 <struts>
     6     <constant name="struts.devMode" value="true"></constant>
     7     <package name="default" namespace="/" extends="struts-default" >
     8     <!-- 测试validate方法 -->
     9         <action name="execute" class="cn.action.ExecuteAction">
    10             <result name="success">/success.jsp</result>
    11             <result name="input">/regist.jsp</result>
    12         </action>
    13         <!-- 测试Validate方法 -->
    14         <action name="Validate" class="cn.action.ValidateAction">
    15             <result name="success">/success.jsp</result>
    16             <result name="input">/regist.jsp</result>
    17         </action>
    18         <!-- validateXx方法 -->
    19         <action name="validateXxx" class="cn.action.ValidateXxxAction" method="regist">
    20             <result name="success">/success.jsp</result>
    21             <result name="input">/regist.jsp</result>
    22         </action>
    23     
    24     
    25     </package>
    26 </struts>
    XML文件

    用到的架包

    效果展示:

    execute()

    当文本未输入值

    已输入值

    validate()方法

    此结果与execute()方法结果相同

    ValidateXxx()方法

    未输入值

    已输入值

  • 相关阅读:
    删除链表的倒数第N个节点(java实现)
    Java多线程之volatile关键字《一》
    Utils
    分布式和集群
    java RMIC
    Log4j输出终端(Appender)详解
    使用存储过程并返回值与及返回值的获得方法
    groupBy
    group by java实现
    本机Font字体
  • 原文地址:https://www.cnblogs.com/zsping/p/5960129.html
Copyright © 2020-2023  润新知