zoukankan      html  css  js  c++  java
  • (十六)客户端验证与struts2中的服务器端验证

    一、客户端验证:

    •     即用javaScript来验证。
     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3     <%@ taglib prefix="s" uri="/struts-tags" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <%String path=request.getContextPath(); %>
     7 <head>
     8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     9 <title>Insert title here</title>
    10 <script type="text/javascript">
    11 
    12     function check(){
    13 14         var userName=document.getElementById("username");
    15         
    16         if(userName.value==""){
    17             
    18             window.alert("用户名不能为空");
    19             return false;
    20             
    21         }else{
    22             
    23             return true;
    24         }
    25     
    26     }
    27 </script>
    28 
    29 </head>
    30 <body>
    31     <form action="<%=path%>/struts/exam">
    32         用户名:<s:textfield name="username" id="username"></s:textfield><br/>
    33         <s:submit  value="提交1"  theme="simple" onclick="return check();" ></s:submit>
    34     </form>
    35 </body>
    36 </html>

    结果:

    • <s:submit  value="提交1"  theme="simple" onclick="return check();" ></s:submit>  当check函数返回一个false值的时候,表单就不会被提交到服务器端,否则即使在javaScript中提示错误也会被
      提交到后台。

    二、服务器端验证:

    index.jsp:不做验证,直接把用户填写的信息提交到后台。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <%String path=request.getContextPath(); %>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="<%=path%>/userAction!save">
            用户名:<s:textfield name="username" id="username"></s:textfield><s:fielderror name="username_error" />
            <br/>
            <s:submit  value="提交1"  theme="simple"  ></s:submit>
        </form>
    </body>
    </html>

    Example.java:

    package action;
    
    import com.opensymphony.xwork2.validator.annotations.ValidationParameter;
    
    import actionUtil.BaseAction;
    
    
    public class Example extends BaseAction{
    
        private String username;
        
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        @Override
        public String execute() throws Exception {
        
            return null;
        }
    
        /**
         * 某个方法调用前会先调用(validate+该方法名)这个方法,该方法名首字母要大写
         */
        public void validateSave(){
            
            if(username.equals("")){
                /**
                 *如果有错误则添加一个错误元素,并返回到result为input的页面中去
                 *在这个页面中可以用<s:fielderror name="username_error" />把错误小心打印出来。
                 */
                this.addFieldError("username_error", "用户名不能为空");
                
            }
            
            System.out.println("hello");
            
        }
                
        public String save(){
            
            System.out.println("save方法 ");
            return null;
        }
    
    }

    struts.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
    
        <constant name="struts.enable.DynamicMethodInvocation" value="true" />
        <constant name="struts.devMode" value="true" />
    
      <package name="default" namespace="/" extends="struts-default">
        <action name="userAction" class="action.Example">
            <result name="input">/index.jsp</result>
        </action>    
        </package>
    </struts>

    结果:

    •  如结果可知: 当index.jsp用户填写完表单提交到save方法之前,会先调用validateSave方法(validate+该方法名【方法首字母大写】),然后再调用save方法。validateSave里判断用户名是否有填写,如果为空则添加一个错误元素 this.addFieldError("username_error", "用户名不能为空");,并返回到result为input 的页面中去,本题struts.xml设定了input页面仍为本页面(index.jsp),并在这个页面中用<s:fielderror name="username_error" /> 打印出错误元素为username_error" 的具体错误信息。   
    • 这种验证方法虽然也能够验证,但是不足的是,但用户提交了错误信息之后,想要返回到本页面修改,那么将会丢失原来填好的数据,只能从新开始填写。


    •  总结:推荐使用客户端验证,尤其是用JQuery-validation插件来验证。
  • 相关阅读:
    python爬取网页
    python异常处理
    本周总结
    改变promise状态有三种resolve、reject、throw
    详解Promise.race()可以解决多个异步请求那个请求先返回
    Promise.all()方方详解
    你不知道的Promise构造函数Promise(excutor)
    你不知道的Promise状态变化机制
    Promise练习文件读取
    关于async函数的错误处理
  • 原文地址:https://www.cnblogs.com/shyroke/p/6696713.html
Copyright © 2011-2022 走看看