Validator伺服端驗證

博客指出仅用客户端验证用户输入不安全,客户端可能绕过输入页向服务器发送错误请求。介绍使用Validator进行服务器端验证的方法,即继承ValidatorForm类编写ActionForm,还说明了验证有误时收集错误信息及显示错误信息的相关操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果要驗證使用者的輸入,光使用客戶端驗證是不保險的,客戶端可能跳過輸入頁面,直接對伺服器發送請求不正確的請求,如果伺服端沒有驗證請求,就會導致錯誤。

要使用Validator伺服端驗證,只要繼承org.apache.struts.validator.ValidatorForm類別來撰寫ActionForm就可以了,ValidatorForm是ActionForm的子類別,它重新定義了validate()方法,使用ValidatorForm定義了類別之後,在validation.xml中的設定與前一個主題相同。

ActionServlet會呼叫validate()方法,如果驗證有誤,則會收集相關的錯誤訊息並儲存在ActionErrors中傳回,您要作的是指定struts-config.xml中ActionMapping的type屬性,提供一個訊息頁面,在當中使用<html:errors/>標籤顯示錯誤訊息,例如:

代碼:
        <action
            path="/LoginAction"
            type="onlyfun.caterpillar.LoginAction"
            name="userForm"
            validate="true"
            input="/pages/welcome.jsp">
            <forward
                name="greeting"
                path="/pages/greeting.jsp"/>
        </action>


代碼:
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@page contentType="text/html; charset=Big5"%>
<html:html>
<head>
<title><bean:message key="welcome.title"/></title>
<html:base/>
</head>
<body bgcolor="white">
<html:errors/>
                                                                               
<html:form action="/LoginAction" focus="name">
    名稱:<html:text property="name" size="20"/><br>
    郵件:<html:text property="email" size="20"/><br>
    <html:submit/> <html:reset/>
</html:form>
                                                                               
</body>
</html:html>


Validator也提供了DynaActionForm的子類別DynaValidatorForm,您只要在struct-config.xml中設定好相關的設定,就可以自動生成ActionForm物件,並具有驗證功能,例如:
代碼:
    <form-beans>
        <form-bean
            name="userForm"
            type="org.apache.struts.validator.DynaValidatorForm">
            <form-property
                name="name"
                type="java.lang.String"
                initial="nobody"/>
            <form-property
                name="email"
                type="java.lang.String"
                initial="nobody@mail.com"/>
        </form-bean>
    </form-beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值