Struts2中Action三種接收參數(shù)形式與簡(jiǎn)單的表單驗(yàn)證功能
有了前幾篇的基礎(chǔ),相信大家對(duì)于Struts2已經(jīng)有了一個(gè)很不錯(cuò)的認(rèn)識(shí),本篇我將為大家介紹一些關(guān)于Action接收參數(shù)的三種形式,以及簡(jiǎn)單的表單驗(yàn)證實(shí)現(xiàn),下面進(jìn)入正題,首先我們一起先來(lái)了解一下最基本的Action接收參數(shù)的形式,直接在我們的Action類(lèi)中添加成員變量,這樣就可以完成Action接收參數(shù)的操作,具體內(nèi)容詳見(jiàn)代碼展示:
這里我們以登錄驗(yàn)證為例,進(jìn)行代碼展示,首先是我們的Action類(lèi):
/*** * 最基本的接收參數(shù)形式 * @author jho * http://localhost:8080/Struts3/index!login?name="123"&password="456" */ @SuppressWarnings("serial") public class User extends ActionSupport { private String name; private int pwd; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPwd() { return pwd; } public void setPwd(int pwd) { this.pwd = pwd; } public String login(){ System.out.println("name="+name+" Pwd="+pwd); if(123456==pwd){ return SUCCESS; }else{ return ERROR; } } }
下面我們一起來(lái)看一下Action的第二種接收參數(shù)的形式,通過(guò)User類(lèi)對(duì)象來(lái)完成整個(gè)的參數(shù)接收,首先我們創(chuàng)建一個(gè)User類(lèi):
public class User { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
然后通過(guò)User對(duì)象在Action中進(jìn)行用戶提交參數(shù)的接收:
/*** * Dormain Model * @author jho * http://localhost:8080/Struts4/index!login?user.name="123"&user.password="456" */ @SuppressWarnings("serial") public class UserAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String login(){ System.out.println("name="+user.getName()+" Pwd="+user.getPassword()); return SUCCESS; } }
最后是通過(guò)Struts的ModelDriven<User>來(lái)進(jìn)行用戶參數(shù)的接收,第一步創(chuàng)建我的User類(lèi)對(duì)象,第二部配置我們的Action:
/*** * Model Driven * @author jho * http://localhost:8080/Struts5/index!login?name="123"&password="456" */ @SuppressWarnings("serial") public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); public String login(){ System.out.println("name="+user.getName()+" Pwd="+user.getPassword()); return SUCCESS; } public User getModel() { return user; } }
所謂ModelDriven,意思是直接把實(shí)體類(lèi)當(dāng)成頁(yè)面數(shù)據(jù)的收集對(duì)象。
對(duì)于簡(jiǎn)單的表單驗(yàn)證知識(shí),就為大家介紹一下addFieldError()方法:
@SuppressWarnings("serial") public class InputErrorFilter extends ActionSupport{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String execute() throws Exception { return SUCCESS; } public String login(){ System.out.println(name+""); if(name!=null && name.equals("hpu")){ return SUCCESS; }else{ this.addFieldError("nameError", "用戶名輸入有誤"); this.addFieldError("nameError", "ul li形式輸出錯(cuò)誤信息"); return ERROR; } } }
我們的錯(cuò)誤處理頁(yè)面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" > <title>My JSP 'error.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" > --> </head> <body> 操作失敗 <br> 輸入?yún)?shù):<s:text name="name" /><br/> <s:fielderror fieldName="nameError" theme="simple"/><br/> <s:property value="errors.nameError[0]"/><br/> <s:debug></s:debug> </body> </html>
以上所述是小編給大家介紹的Struts2中Action三種接收參數(shù)形式與簡(jiǎn)單的表單驗(yàn)證功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 簡(jiǎn)單談?wù)凷truts動(dòng)態(tài)表單(DynamicForm)
- Struts2中接收表單數(shù)據(jù)的三種驅(qū)動(dòng)方式
- J2EE中的struts2表單細(xì)節(jié)處理
- 詳解struts2的token機(jī)制和cookie來(lái)防止表單重復(fù)提交
- Java的Struts框架中登陸功能的實(shí)現(xiàn)和表單處理器的使用
- 通過(guò)Ajax兩種方式講解Struts2接收數(shù)組表單的方法
- struts2中一個(gè)表單中提交多個(gè)請(qǐng)求的例子(多個(gè)提交按鈕)
- 基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交
相關(guān)文章
mybatis-plus使用@EnumValue處理枚舉類(lèi)型的示例代碼
這篇文章主要介紹了mybatis-plus使用@EnumValue處理枚舉類(lèi)型的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09深入解析java HashMap實(shí)現(xiàn)原理
這篇文章主要介紹了深入解析java HashMap實(shí)現(xiàn)原理的相關(guān)資料,需要的朋友可以參考下2015-09-09servlet之web路徑問(wèn)題_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了servlet之web路徑問(wèn)題的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Java中的CyclicBarrier循環(huán)柵欄詳解
這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄詳解,CyclicBarrier循環(huán)柵欄是用來(lái)進(jìn)行線程協(xié)作,等待線程滿足某個(gè)計(jì)數(shù),構(gòu)造時(shí)設(shè)置計(jì)數(shù)個(gè)數(shù),每個(gè)線程執(zhí)行到某個(gè)需要“同步”的時(shí)刻調(diào)用 await()方法進(jìn)行等待,當(dāng)?shù)却木€程數(shù)滿足計(jì)數(shù)個(gè)數(shù)時(shí),繼續(xù)執(zhí)行,需要的朋友可以參考下2023-12-12java并發(fā)訪問(wèn)重復(fù)請(qǐng)求過(guò)濾問(wèn)題
本篇文章給大家分享了關(guān)于java并發(fā)訪問(wèn)重復(fù)請(qǐng)求過(guò)濾的相關(guān)問(wèn)題以及解決方法,對(duì)此有需要的朋友參考學(xué)習(xí)下。2018-05-05如何設(shè)置Spring Boot測(cè)試時(shí)的日志級(jí)別
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。下面我們來(lái)一起學(xué)習(xí)一下吧2019-06-06