1. 程式人生 > >Struts2之客戶端驗證

Struts2之客戶端驗證

首先從功能上講,我們現在只是簡單的判斷了一下帳號和密碼是否輸入,當然這是遠遠不夠的。一般來說,我們可以把試圖登入系統的使用者分為兩部分,一部分是合法使用者,另一部分是非法使用者。合法使用者在系統內擁有一個帳號,而非法使用者在系統內不存在帳號。
 
登入驗證,從實現位置上來講,應該分為兩種,一種是客戶端驗證,一種是伺服器端驗證。客戶端驗證主要是完成判斷資訊是否輸入,是否符合業務規則,比如說帳號必須是數字或密碼必須大於6位等。伺服器端驗證除了完成上述的功能之外,還有帳號是否存在,密碼是否正確等。
 
客戶端驗證比較簡單,而且不是必須的。客戶端驗證過的內容,伺服器端還要全部再驗證一遍,因為據說是客戶端驗證是不安全的。不過客戶端驗證不用把資訊提交到伺服器,速度快。一般客戶端驗證我們使用JavaScript來做,如果不使用Struts,我們需要寫一段JS指令碼,現在我們使用Struts,實現起來更簡單一些了。
 
首先,在Action類所在的包下建立一個前半部分和Action同名的XML檔案
(Login-validation.xml),檔案內容可以這樣:
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <message>User Name is required.</message>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <message>Password is required.</message>
        </field-validator>
    </field>
</validators>

相關幫助可以從這找到:
struts-2.0.6docsdocsvalidation.html
struts-2.0.6docsdocsclient-validation.html。
 
field的name屬性必須和頁面的控制元件的名字也就是Action裡對應的屬性同名,表示需要驗證的欄位;
field-validator的type屬性表示需要驗證的型別,Struts內建的有12種之多,可以根據需要使用不同的型別;
message是當驗證失敗的時候,要顯示給使用者的提示資訊。
 
Login.jsp需要修改一下:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>登入驗證</title>
</head>
<body>
<s:form. method="post" validate="true">
    <s:textfield label="User Name" name="username" />
    <s:password label="Password" name="password" />
    <s:submit/>
</s:form>
</body>
</html>

增加了validate="true"屬性,告訴Struts我們想使用客戶端驗證。
 
Action類的內容和相關配置都不用改,部署專案並啟動Tomcat,並在瀏覽器中輸入:
http://localhost:8080/tutorial/Login!input.action
然後,點Submit按鈕提交頁面,會顯示Login-validation.xml中配置的錯誤訊息。
 
點選[顯示]-〉[原始檔]選單項,檢視原始碼,可以看到Struts實際上為我們插入了JS指令碼達到了上述的功能。

相關推薦

Struts2客戶驗證

首先從功能上講,我們現在只是簡單的判斷了一下帳號和密碼是否輸入,當然這是遠遠不夠的。一般來說,我們可以把試圖登入系統的使用者分為兩部分,一部分是合法使用者,另一部分是非法使用者。合法使用者在系統內擁有一個帳號,而非法使用者在系統內不存在帳號。 登入驗證,從實現位置上來講,應該

WCF系列教程客戶異步調用服務

1.5 void 添加引用 dsl idt pan important 配置 但是 本文參考自http://www.cnblogs.com/wangweimutou/p/4409227.html,純屬讀書筆記,加深記憶 一、簡介 在前面的隨筆中,詳細的介紹了WCF客戶端服務

Netty入門客戶與服務通信(二)

ktr 數據格式 lis boot ride owa 參數 val cef Netty入門之客戶端與服務端通信(二) 一.簡介   在上一篇博文中筆者寫了關於Netty入門級的Hello World程序。書接上回,本博文是關於客戶端與服務端的通信,感覺也沒什麽好說的了,直接

SpringMVC中文件上傳的客戶驗證

nbsp line contex 後綴名 request 進行 dir java mil SpringMVC中文件上傳的客戶端驗證

struts2封裝客戶請求數據(3種封裝方式)

空指針異常 必須 nis png pri pan this drive .cn 長話短說,直接進入主題. 1.屬性驅動 action的屬性名稱必須和jsp輸入項的name屬性保持一致; 必須要在action類中提供該屬性的set方法,但有時候會出錯,為了保險起見,我們把g

@Html.ValidationMessageFor客戶驗證

scripts val pre 顯示 del javascrip 客戶端驗證 mode use <%=Html.LabelFor(model => model.sUser) %><%=Html.TextBoxFor(model => model

Spring Cloud客戶負載平衡器:Ribbon

highlight 情況下 upd block poll sla conf project 遠程服務 Ribbon是一個客戶端負載均衡器,它可以很好地控制HTTP和TCP客戶端的行為。Feign已經使用Ribbon,所以如果您使用@FeignClient,則本節也適用。

跟我學習Spring Cloud客戶負載平衡器:Ribbon

電子商務 springcloud spring cloud springcloud微服務 微服務雲架構 Ribbon是一個客戶端負載均衡器,它可以很好地控制HTTP和TCP客戶端的行為。Feign已經使用Ribbon,所以如果您使用@FeignClient,則本節也適用。Ribbon中的中

java在線聊天項目0.9版 實現把服務接收到的信息返回給每一個客戶窗口中顯示功能客戶接收

nec 一個 out for tex ava 添加 implement com 客戶端要不斷接收服務端發來的信息 與服務端不斷接收客戶端發來信息相同,使用線程的方法,在線程中循環接收 客戶端修改後代碼如下: package com.swift; import java.

yii 框架 自定義規則客戶驗證

esp 失去 屬性 sbo sid func 需要 當前 條件 前提:yii 自定義規則不能通過失去焦點驗證 view層中:設置form的3個屬性,validationUrl 可以不設置,默認為當前頁面,但是一般情況驗證不會跟提交數據在一個方法中處理 $form = zA

zookeeper源碼客戶

服務端 run t對象 成對 bool .com 操作 code 分享   zookeeper自身提供了一個簡易的客戶端。主要包括一下幾個模塊:   1.啟動模塊。   2.核心執行模塊。   3.網絡通信模塊。 啟動模塊   啟動程序,接收和解析命令行。詳見zookeep

zookeeper總結客戶執行核心模塊

except pre 執行 strong main amp per bst ply ZooKeeper   ZooKeeper是客戶端操作ZooKeeper服務端的核心類。當用戶向ZooKeeperMain執行相關命令時,最終會交給ZooKeeper執行,其會將用戶請求封裝

zookeeper源碼客戶網絡通信模塊

pri ext res buffer 底層io != quest code final ClientCnxn   為客戶端發送請求到服務端,管理底層IO連接。 將用戶調用的請求對象(RequestHeader、Request)封裝成Packet對象,存入發送隊列。內部有一個

spring cloud eureka客戶

eureka client 依賴 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin

如何在.Net Core MVC中為動態表單開啟客戶驗證

mic 開啟 hide throw com 選擇 pen addclass title 非Core中的請參照: MVC的驗證 jquery.validate.unobtrusive mvc驗證jquery.unobtrusive-ajax 參照向動態表單增加驗證

nginx配置解析客戶真實IP的傳遞

形式 bubuko 轉發 pre 反向代理 The 用戶 地址 添加 前後端分離之後,采用nginx作為靜態服務器,並通過反向代理的方式實現接口跨域的方式,在降低開發成本的同時也帶來了諸多問題,例如客戶端真實IP的獲取。 在一些特殊場景下,比如風控和支付流程,往往需要獲取用

JavaScript高階程式設計客戶檢測

瀏覽器檢測,是個很讓人頭痛但又必須要考慮的一個問題。畢竟市面上的瀏覽器廠商眾多,雖然有些標準化的東西約束著他們,但是有些東西,他們還是各自按自己的意願來。這其中以IE瀏覽器最為突出,它幾乎可以被稱之為萬惡之源。 瀏覽器檢測的方法有很多,這裡介紹的可能並不是全部,但基本上都是比較常用的方法。下邊我就來詳細介紹

JS客戶檢測

我之前本打算最後再總結這一節,但在學習了一部分DOM操作後,才發現客戶端檢測這一技術用途也挺多,所以還是決定回過頭來先把這部分學透徹。 JS作為一種客戶端指令碼語言,是靠瀏覽器執行的,雖然JS的語法規則、DOM等模型框架已經形成了標準,但是在現實當中,各家瀏覽器由於歷史原因(爭奪市場、各自研發各自的)遺留下

《Spring Cloud微服務實戰》讀書筆記客戶負載均衡:Spring Cloud Ribbon - 4

摘要 客戶端負載均衡元件部署在客戶端,由客戶端維護要訪問的服務端清單(清單來源於服務註冊中心)。在Spring Cloud 中預設使用Ribbon作為客戶端負載均衡。 關鍵詞:客戶端負載均衡,Ribbon 一、什麼是客戶端負載均衡 負載均衡是對系統高可用、緩解網路壓力、處理能力擴容的重要手段之一。通常

Netty客戶/服務初始化(二)

https://blog.csdn.net/qq_18603599/article/details/80768400 本章接著上一章,繼續講解和netty相關的知識,主要有以下幾個知識點: 1 netty服務端的初始化原始碼分析 2 netty客戶端的初始化原始碼分析 3 netty