Struts2數據校驗

来源:http://www.cnblogs.com/s1294/archive/2016/09/02/5834500.html
-Advertisement-
Play Games

一.為什麼要進行數據校驗 對於一個web應用而言,所有的應用數據都是通過瀏覽器收集的,用戶的輸入信息是非常複雜的,對於一些用戶操作不熟練,輸入出錯,等網路傳輸不穩定,這些都有可能導致異常輸入。 異常的輸入,輕則導致系統非正常中斷,重則導致系統崩潰,應用程式必須能正常處理表現層接收的異常數據,通常的做 ...


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

      對於一個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框架的行為。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 材質顏色 OpenGL用材料對光的紅、綠、藍三原色的反射率來近似定義材料的顏色。象光源一樣,材料顏色也分成環境、漫反射和鏡面反射成分,它們決定了材料對環境光、漫反射光和鏡面反射光的反射程度。在進行光照計算時,材料對環境光的反射率與每個進入光源的環境光結合,對漫反射光的反射率與每個進入光源的漫反射光結 ...
  • 項目介紹:利用Qt實現簡單的學生信息管理 實現功能:實現對信息的添加,刪除,查詢,修改 廢話不多說,直接進入主題:(剛剛學,界面做的不是太美觀,請多包涵) 主界面 - mainWindow && login 一、添加學生 - 1、使用組件有:Dialog 視窗,Label標簽,Line Edit,S ...
  • 之前一直沒搞懂這個怎麼計算的,主要也因為之前沒怎麼用到過這個,但現在想把它搞懂,所以索性一次性搞懂為妙,以後就不用再糾結了哈。 按位運算符就是把數字看作二進位來進行計算的,並且再把計算出來的二進位給它轉換成十進位,也就是最終的結果了。 比如: 7&9 這個是按位與,先不討論與不與的,總之它現在會把7 ...
  • mybatis的映射文件寫法多種多樣,不同的寫法和用法,在實際開發過程中所消耗的開發時間、維護時間有很大差別,今天我就把我認為比較簡單的一種映射文件寫法記錄下來,供大家修改建議,爭取找到一個最優寫法~~: 以User對象和UserMap.xml為例講解,代碼如下: User為用戶實體類(僅作為講解, ...
  • 實習就要結束了,最終要上交的是網上書城項目和一份文檔。接下來簡要介紹一下項目。 項目是根據三層架構來寫,數據訪問層(DAO層)、系統業務邏輯控制處理層(servlet層)、和界面層(jsp)。 首先在DAO層構造好SQL語句,對資料庫進行操作,在servlet層調用Dao層相關方法進行相應的邏輯處理 ...
  • java中獲取網頁的get或post數據的方法有以下三種: getParameter(name); 獲取單參數的方法。 getParameterValues(name); 獲取多參數值的方法,如覆選框的值,返回一個數組 getParameterNames(name); 獲取request中的所有參數 ...
  • RT,you get 是一個視頻離線下載工具, https://github.com/soimort/you get 另一個同類工具 youtube dl 也是python 實現,雖然名為 youtube dl 但是從文檔上看,支持很多網站 https://github.com/rg3/youtub ...
  • 最近由於要做一個爬蟲項目,要對很多網站進行爬取,所以一直都在看這方面的文章。在翻閱了很多資料後,下載了一個curl庫,著實對項目有了很大的幫助。 一、LibCurl基本編程框架libcurl是一個跨平臺的網路協議庫,支持http, https, ftp, gopher, telnet, dict, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...