Struts2慢慢學之六----簡單的資料校驗
阿新 • • 發佈:2019-02-14
資料校驗是在專案開發中不可缺少的一部分,使用者登入時、密碼驗證時都需要,當然要做的首先是獲得使用者輸入的內容,然後對內容進行驗證,一般都是從資料庫中讀出然後校驗,如果錯誤則顯示提示資訊,正確則進入使用者主介面。
下面用一個簡單小例子來說明下步驟:
1、index的表單
提交時會有兩個變數--user.name 和user.age傳到server,然後呼叫struts.xml檔案配置中的對應Action<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <base href="<%=basePath %>"/> <title>Insert title here</title> </head> <body> <h1>演示</h1> <form action="user/user!check" method="post"> 姓名:<input type="text" name="user.name"></input> <br/> 年齡:<input type="text" name="user.age"></input> <br/> <input type="submit" value="提交"/> </form> </body> </html>
2、struts.xml配置
很明顯-當返回success時呼叫success.jsp,error則呼叫error.jsp<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="front" namespace="/user" extends="struts-default"> <action name="user" class="com.myservice.web.UserAction"> <result>/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
3、Action中的check方法內容
在這裡我們呼叫了addFieldError方法public String check(){ System.out.println("name="+user.getName()); System.out.println("age="+user.getAge()); if(user.getName().equals("admin")&&user.getAge()==20){ return SUCCESS; }else{ this.addFieldError("name", "name is error"); this.addFieldError("name", "name is too long"); return ERROR; } }
4、error.jsp頁面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>驗證失敗</h2>
<s:property value="errors.name[0]"/>
<br>
<s:property value="errors.name[1]"/>
<s:debug></s:debug>
</body>
</html>
裡面第三行是說明的添加了struts2的標籤庫,並且以s開頭。
而倒數第四行和第六行是重點,errors.name[0]對應的就是我們在3中通過addFieldError方法,放入到name屬性中的name is error,errors.name[1]則很明顯是name is too long。倒數第三行是除錯資訊。
整個效果最後顯示為: