国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts2(四)Action一接收參數

2019-11-14 23:30:55
字體:
來源:轉載
供稿:網友
Struts2(四)Action一接收參數一、屬性接收參數并輸出

導入struts2的包,導入需要的包

和struts.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!--     <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="false" />    <package name="default" namespace="/" extends="struts-default">        <default-action-ref name="index" />        <global-results>            <result name="error">/error.jsp</result>        </global-results>        <global-exception-mappings>            <exception-mapping exception="java.lang.Exception" result="error"/>        </global-exception-mappings>        <action name="index">            <result type="redirectAction">                <param name="actionName">HelloWorld</param>                <param name="namespace">/example</param>            </result>        </action>    </package>    <include file="example.xml"/> -->    <!-- Add packages here -->    <!--  開發模式-->     <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="com.pb.web.action.LoginAction"> <result> /loginSuccess.jsp </result> </action> </package></struts>
二、實現登錄名和密碼的接收和輸出

Action接收參數(屬性方式)

package com.pb.web.action;import com.opensymphony.xwork2.ActionSupport;/* * 登錄響應action */public class LoginAction extends ActionSupport {    PRivate String userName;    private String passWord;    private static final long serialVersionUID = 1L;    @Override    public String execute() throws Exception {                return "success";    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPassWord() {        return passWord;    }    public void setPassWord(String passWord) {        this.passWord = passWord;    }                }

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>Struts2demo2</display-name>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list>  <filter>        <filter-name>struts2</filter-name>        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

登錄頁面和登錄成功頁面

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!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>登錄頁面</title></head><body><form action="login.action" method="post"><table><tr><td>用戶名:</td><td><input type="text" name="userName" /></td></tr><tr><td>密碼:</td><td><input type="password" name="passWord" /></td></tr><tr><td><input type="submit" value="登錄" /></td><td><input type="reset" value="重置" /></td></tr></table></form></body></html>
<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>    <!-- 導入struts標簽 --> <%@taglib prefix="s" uri="/struts-tags" %><!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>登錄成功頁面</title></head><body>歡迎您的到來!<s:property value="userName"/></body></html>
三、Action接收參數一(屬性方式)

以上用的就是第一種方式表單參數名稱必須在Action中有對應的setter和getter方法

解決亂碼問題

修改struts.xml添加

<constant name="struts.i18n.encoding" value="相應的編碼格式" />

頁面顯示:

   <!-- 導入struts標簽 --> <%@taglib prefix="s" uri="/struts-tags" %>

應用場景:接收參數字段個數少的時候適合使用,比如:對于搜索應用接收用戶輸入的查詢條件

接收參數字段個數多時,就可以使用JavaBean的方式來接收

四、Action接收參數二(JavaBean形式)

建立實體類

package com.pb.entity;public class User {        private String userName;    private String passWord;    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPassWord() {        return passWord;    }    public void setPassWord(String passWord) {        this.passWord = passWord;    }        }
package com.pb.web.action;import com.opensymphony.xwork2.ActionSupport;import com.pb.entity.User;/* * 登錄響應action */public class LoginAction2 extends ActionSupport {    private User user;    private static final long serialVersionUID = 1L;    @Override    public String execute() throws Exception {                return "success";    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!--     <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="false" />    <package name="default" namespace="/" extends="struts-default">        <default-action-ref name="index" />        <global-results>            <result name="error">/error.jsp</result>        </global-results>        <global-exception-mappings>            <exception-mapping exception="java.lang.Exception" result="error"/>        </global-exception-mappings>        <action name="index">            <result type="redirectAction">                <param name="actionName">HelloWorld</param>                <param name="namespace">/example</param>            </result>        </action>    </package>    <include file="example.xml"/> -->    <!-- Add packages here -->    <!--  開發模式-->     <constant name="struts.devMode" value="true" />  <package name="default" namespace="/" extends="struts-default"> <action name="login" class="com.pb.web.action.LoginAction"> <result> /loginSuccess.jsp </result> </action> <action  name="login2"  class="com.pb.web.action.LoginAction2"> <result> /loginSuccess2.jsp </result> </action> </package></struts>

登錄頁面

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!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>登錄頁面</title></head><body><form action="login2.action" method="post"><table><tr><td>用戶名:</td><!--這里的name要和提交的地址中聲明的實體類.屬性來用  --><td><input type="text" name="user.userName" /></td></tr><tr><td>密碼:</td><!--這里的name要和提交的地址中聲明的實體類.屬性來用  --><td><input type="password" name="user.passWord" /></td></tr><tr><td><input type="submit" value="登錄" /></td><td><input type="reset" value="重置" /></td></tr></table></form></body></html>

登錄成功頁面

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>    <!-- 導入struts標簽 --> <%@taglib prefix="s" uri="/struts-tags" %><!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>登錄成功頁面</title></head><body><!-- 輸出:提交的地址中聲明的實體類.屬性來用-->歡迎您的到來!<s:property value="user.userName"/></body></html>

定義實體類,為實體添加屬性及setter和getter方式

com.pb.entity.User

為Action添加實體屬性以及setter和getter方法

User user

修改表單參數name為實體對象名.屬性名 這里的對象名要與Action中聲名的對象名一致

<input name="user.userName"/>
五、Action接收參數三(ModelDriven形式)

定義實體類,為實體添加屬性及setter和getter方式

com.pb.entity.User

創建Action實現接口ModelDriven接口,重寫getModel();

Action中要提供JavaBean類型的屬性,需要實例化,但不需要相應的setter和getter方法

Form表單項的name屬性以及頁頁面取值通過<s:property value="屬性名"/>的形式

實體類:

package com.pb.entity;public class User {        private String userName;    private String passWord;    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPassWord() {        return passWord;    }    public void setPassWord(String passWord) {        this.passWord = passWord;    }        }

action

package com.pb.web.action;import com.opensymphony.xwork2.ModelDriven;import com.pb.entity.User;/* * 登錄響應action3 */public class LoginAction3 implements ModelDriven<Object> {        //實例化對象    private User user=new User();     //重寫接口的方法    @Override    public User getModel() {        return user;    }        //要有execute方法public String execute(){    return "success";}}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!--     <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="false" />    <package name="default" namespace="/" extends="struts-default">        <default-action-ref name="index" />        <global-results>            <result name="error">/error.jsp</result>        </global-results>        <global-exception-mappings>            <exception-mapping exception="java.lang.Exception" result="error"/>        </global-exception-mappings>        <action name="index">            <result type="redirectAction">                <param name="actionName">HelloWorld</param>                <param name="namespace">/example</param>            </result>        </action>    </package>    <include file="example.xml"/> -->    <!-- Add packages here -->    <!--  開發模式-->     <constant name="struts.devMode" value="true" />  <package name="default" namespace="/" extends="struts-default"> <action name="login" class="com.pb.web.action.LoginAction"> <result> /loginSuccess.jsp </result> </action> <action  name="login2"  class="com.pb.web.action.LoginAction2"> <result> /loginSuccess2.jsp </result> </action> <action  name="login3"  class="com.pb.web.action.LoginAction3"> <result> /loginSuccess3.jsp </result> </action> </package></struts>

登錄login3.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!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>登錄頁面</title></head><body><form action="login3.action" method="post"><table><tr><td>用戶名:</td><!--這里的name要和提交的地址中聲明的實體類的屬性來用  --><td><input type="text" name="userName" /></td></tr><tr><td>密碼:</td><!--這里的name要和提交的地址中聲明的實體類的屬性來用  --><td><input type="password" name="passWord" /></td></tr><tr><td><input type="submit" value="登錄" /></td><td><input type="reset" value="重置" /></td></tr></table></form></body></html>

登錄成功loginSuccess3.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>    <!-- 導入struts標簽 --> <%@taglib prefix="s" uri="/struts-tags" %><!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>登錄成功頁面</title></head><body><!-- 輸出:提交的地址中聲明的實體類的屬性來用-->歡迎您的到來!<s:property value="userName"/></body></html>
六、區別

public class User {private String userName;private String password;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}public class School {private String schoolName;private String schoolAddress;private String schoolName;private String schoolAddress;public String getSchoolName() {return schoolName;}public void setSchoolName(String schoolName) {this.schoolName = schoolName;}public String getSchoolAddress() {return schoolAddress;}public void setSchoolAddress(String schoolAddress) {this.schoolAddress = schoolAddress;}}

Action 使用ModelDriven 方式代碼如下:

public class UserAction implements ModelDriven{private User user=new User();private School school=new School();@Overridepublic User getModel() {return user;}public String execute(){return "success";}}/*上述代碼中,屬性中盡管有兩個Model(user 以及school),但是只有一個可以被getModel()返回(user),這個實體用于接收參數。*/

Action 使用JavaBean 方式代碼如下:

public class UserAction2 {private User user;private School school;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public School getSchool() {return school;}public void setSchool(School school) {this.school = school;}public String execute(){return "success";}}/*上述代碼中,同樣聲明了兩個Model(user 以及school),這兩個實體都可以用于接收參數。*/

Action 接收參數:ModelDriven 方式與屬性方式區別

ModelDriven 方式和屬性方式同時存在Action 中時, ModelDriven 方式優先被賦值

//實體類Userpublic class User {private String userName;private String password;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

Action 代碼如下,同時使用了ModelDriven 以及屬性方式。并且在execute()方法中在控制臺分別為兩種方式的屬性輸出了相應語句。

package com.pb.web.action;import com.opensymphony.xwork2.ModelDriven;import com.pb.entity.User;/* * 登錄響應action3 */public class LoginAction3 implements ModelDriven<Object> {        //實例化對象    private User user=new User();     private String userName;    private String passWord;    //重寫接口的方法    @Override    public User getModel() {        return user;    }        //要有execute方法public String execute(){    System.out.println("使用ModelDriven 方式:"+user.getUserName());    System.out.println("使用ModelDriven 方式:"+user.getPassWord());    System.out.println("使用屬性 方式:"+userName);    System.out.println("使用屬性 方式:"+passWord);    return "success";}public String getUserName() {    return userName;}public void setUserName(String userName) {    this.userName = userName;}public String getPassWord() {    return passWord;}public void setPassWord(String passWord) {    this.passWord = passWord;}}

在struts.xml 中配置Action 如下:

<action name="login3" class="com.pb.web.action.UserAction3"><result>/loginSuccess3.jsp</result></action>

登錄頁面login3.jsp 表單代碼如下:

<form action="login3" method="post">用戶名:<input type="text" name="userName"/><br>用戶密碼:<input type="password" name="password"/><br><input type="submit" value="登錄">&nbsp;&nbsp;<input type="reset" value="重置"></form>

登錄成功loginSuccess3.jsp 主要代碼如下:

登錄成功!歡迎你:<s:property value="userName"/>

控制臺打印

使用ModelDriven 方式:去去去使用ModelDriven 方式:QQq使用屬性 方式:null使用屬性 方式:null
七、三種方試對比

三種Action 接收參數的方式中,當Action 接收非字符串類型參數時,Action 中相應屬性最好設置為包裝類型。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武乡县| 航空| 英德市| 石家庄市| 肥西县| 麦盖提县| 襄汾县| 铁岭县| 旺苍县| 平塘县| 曲沃县| 威宁| 成都市| 山阴县| 临汾市| 申扎县| 新干县| 铁岭县| 麟游县| 基隆市| 永安市| 同仁县| 通城县| 莆田市| 南和县| 苍山县| 红河县| 龙江县| 铅山县| 丰都县| 巧家县| 金塔县| 剑川县| 丹凤县| 澄江县| 仁化县| 牙克石市| 兴义市| 红原县| 杂多县| 南投市|