歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Struts2數據校驗

一.為什麼要進行數據校驗

    對於一個web應用而言,所有的應用數據都是通過浏覽器收集的,用戶的輸入信息是非常復雜的,對於一些用戶操作不熟練,輸入出錯,等網絡傳輸不穩定,這些都有可能導致異常輸入。

    異常的輸入,輕則導致系統非正常中斷,重則導致系統崩潰,應用程序必須能正常處理表現層接收的異常數據,通常的做法是遇到非法數據,應用程序將相應的給出用戶提示,提示用戶必須輸入要求的數據,也就是將那些異常輸入過濾掉,我們說對異常數據的過濾就是數據校驗。

  二.如何實現數據校驗

  我們可以讓一個自定義類去繼承自一個ActionSupport類,這個類是一個默認的的Action實現類,他的完全限定名com.opensymphony.xwork2.ActionSupport.這個類中提供了很多的默認方法,包括獲取國際化信息的方法,數據校驗的方法,以及默認處理用戶請求的方法等,由於ActionSupport類是Struts2默認的實現類,所以如果在struts.xml中的Action配置中省略了class屬性,則代表訪問ActionSupport類,其execute()方法直接返回SUCCESS,同時ActionSupport類還增加了對驗證,本地化的支持。

login.jsp

<div>
    <!-- 輸出校驗信息  注意標簽的名稱要與方法的名稱相對應-->
    <s:fielderror fieldName="errorname"/>
    <s:fielderror fieldName="errorpwd"/>
    </div> 
  <form action="Login.action" method="post" >
        用戶名:<input type="text" name="username"/>
        密碼:<input type="text" name="userpwd"/>
        <input type="submit" value="登錄">
  </form>

LoginAction類

public class LoginAction extends ActionSupport{
    private String username;
    private String userpwd;
   
   
        @Override
        public void validate() {
            if(username.length()==0){
                //添加信息內容
                addFieldError("errorname", "用戶名不能為空");
            }
            if(userpwd.length()==0)
            {
                addFieldError("errorpwd","密碼不能為空");
            }
        }

        @Override
        public String execute() throws Exception {
            if(username.equals("123")&&userpwd.equals("123")){
                //通過解耦合的方式獲取到一個Map
                Map<String,Object> map=ActionContext.getContext().getSession();
                //如果用戶用戶名和密碼輸入正確,把值保存到集合中,也就是把值放到session中
                map.put("name", username);
                return SUCCESS;   
            }else{
                return INPUT;   
            }
           
        }

struts.xml

<struts>
    <!-- 配置文件中只要添加以下配置,那麼以後修改配置文件不用重啟tomcat -->
    <constant name="struts.devMode" value="true"/>
 
    <package name="default" namespace="/" extends="struts-default">
        <action name="Login" class="cn.action.LoginAction">
          <result name="success">
          Login/scuess.jsp
          </result>
          <result name="input">
          Login/login.jsp
          </result>
        </action> 
    </package>
</struts>

如何避免這種讓Struts2框架自動生成的標簽

我們可以在struts.xml中配置這個節點:

<!--設置用戶界面主題,默認值為XHTML風格-->
<constant name="struts.ui.theme" value="simple"></constant>

通過配置struts.xml的方式,來改變一些常量值,來控制struts2框架的行為。

推薦閱讀:

Struts2之動態方法調用改變表單action屬性  http://www.linuxidc.com/Linux/2016-09/134982.htm

Struts中異步傳送XML和JSON類型的數據 http://www.linuxidc.com/Linux/2013-08/88247.htm

Struts2的入門實例 http://www.linuxidc.com/Linux/2013-05/84618.htm

Struts2學習筆記-Value Stack(值棧)和OGNL表達式  http://www.linuxidc.com/Linux/2015-07/120529.htm 

struts2文件上傳(保存為BLOB格式) http://www.linuxidc.com/Linux/2014-06/102905.htm

Struts2的入門實例 http://www.linuxidc.com/Linux/2013-05/84618.htm

Struts2實現ModelDriven接口 http://www.linuxidc.com/Linux/2014-04/99466.htm

遇到的Struts2文件下載亂碼問題 http://www.linuxidc.com/Linux/2014-03/98990.htm

Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm

Struts2 注解模式的幾個知識點 http://www.linuxidc.com/Linux/2013-06/85830.htm

Struts 的詳細介紹:請點這裡
Struts 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved