1.普通的传值方式
UserActionForCommonParam类
Action类接收三个参数,分别是id,username,content.
- package com.struts.action;
- public class UserActionForCommonParam {
- private int id;
- private String username;
- private String content;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this.content = content;
- }
- // 从前台页面接收到参数后会在这个方法里打印
- public String addUser() {
- System.out.println("ID: " + this.getId());
- System.out.println("Username: " + this.getUsername());
- System.out.println("Content: " + this.getContent());
- 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="true"/>
- <constant name="struts.devMode" value="true"/>
- <package name="default" namespace="/" extends="struts-default">
- <action name="UserActionForCommonParam" class="com.struts.action.UserActionForCommonParam" method="addUser">
- <result name="success">/UserPage.jsp</result>
- </action>
- </package>
- </struts>
前台页面UserPage.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <html>
- <head>
- <title>UserPage</title>
- </head>
- <body>
- <%--下面的Table用于提交参数(id,username,content)--%>
- <form action="UserActionForCommonParam" method="POST">
- <table border="1">
- <tr>
- <td>ID:</td>
- <td><input type="text" name="id"/></td>
- </tr>
- <tr>
- <td>Username:</td>
- <td><input type="text" name="username"/></td>
- </tr>
- <tr>
- <td>Content:</td>
- <td><input type="text" name="content"/></td>
- </tr>
- <tr>
- <td colspan="2" align="center">
- <input type="submit" value="提交"/>
- </td>
- </tr>
- </table>
- </form>
- <br/>
- <%--下面的Table用于显示传递回来id,username,content--%>
- <table border="1">
- <tr>
- <td>ID: </td>
- <td><input type="text" value="${id}"/></td>
- </tr>
- <tr>
- <td>Username: </td>
- <td><input type="text" value="${username}"/></td>
- </tr>
- <tr>
- <td>Content: </td>
- <td><input type="text" value="${content}"/></td>
- </tr>
- </table>
- <%--用于查看ValueStack中的传递的值--%>
- <s:debug/>
- </body>
- </html>
2.DomainModel传值
首先要创建一个存储的JavaBean
User类
把id,username,content封装的到一个User类当中.
- package com.struts.model;
- public class User {
- private int id;
- private String username;
- private String content;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this.content = content;
- }
- }
UserActionForDomainModel类
- package com.struts.action;
- import com.opensymphony.xwork2.ActionSupport;
- import com.struts.model.User;
- public class UserActionForDomainModel extends ActionSupport{
- private User user;
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- public String addUser() {
- System.out.println("ID: " + user.getId());
- System.out.println("Username: " + user.getUsername());
- System.out.println("Content: " + user.getContent());
- 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="true"/>
- <constant name="struts.devMode" value="true"/>
- <package name="default" namespace="/" extends="struts-default">
- <action name="userForDomainModel" class="com.struts.action.UserActionForDomainModel" method="addUser">
- <result name="success">/UserPage.jsp</result>
- </action>
- </package>
- </struts>
前台页面UserPage.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <html>
- <head>
- <title>UserPage</title>
- </head>
- <body>
- <%--要特别注意的是DomainModel的传值方式必须要使用对象.参数方式进行赋值以及取值--%>
- <form action="userForDomainModel" method="POST">
- <table border="1">
- <tr>
- <td>ID:</td>
- <td><input type="text" name="user.id"/></td>
- </tr>
- <tr>
- <td>Username:</td>
- <td><input type="text" name="user.username"/></td>
- </tr>
- <tr>
- <td>Content:</td>
- <td><input type="text" name="user.content"/></td>
- </tr>
- <tr>
- <td colspan="2" align="center">
- <input type="submit" value="提交"/>
- </td>
- </tr>
- </table>
- </form>
- <br/>
- <%--下面的Table用于显示传递回来id,username,content--%>
- <table border="1">
- <tr>
- <td>ID: </td>
- <td><input type="text" value="${user.id}"/></td>
- </tr>
- <tr>
- <td>Username: </td>
- <td><input type="text" value="${user.username}"/></td>
- </tr>
- <tr>
- <td>Content: </td>
- <td><input type="text" value="${user.content}"/></td>
- </tr>
- </table>
- <%--用于查看ValueStack中的传递的值--%>
- <s:debug/>
- </body>
- </html>
除了这种传值方式外,struts2还提供另外一种传值方式.
3.ModelDriven传值
依然要创建User的JavaBean
User类
- package com.struts.model;
- public class User {
- private int id;
- private String username;
- private String content;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this.content = content;
- }
- }
UserActionForModelDriven类
- package com.struts.action;
- import com.opensymphony.xwork2.ModelDriven;
- import com.struts.model.User;
- public class UserActionForModelDriven implements ModelDriven<User>{
- private User user;
- public String addUser() {
- System.out.println("ID: " + user.getId());
- System.out.println("Username: " + user.getUsername());
- System.out.println("Content: " + user.getContent());
- return "success";
- }
- @Override
- public User getModel() {
- if (user == null) {
- user = new User();
- }
- return user;
- }
- }
前台UserPage.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <html>
- <head>
- <title>UserPage</title>
- </head>
- <body>
- <form action="userForModelDriven" method="POST">
- <table border="1">
- <tr>
- <td>ID:</td>
- <td><input type="text" name="id"/></td>
- </tr>
- <tr>
- <td>Username:</td>
- <td><input type="text" name="username"/></td>
- </tr>
- <tr>
- <td>Content:</td>
- <td><input type="text" name="content"/></td>
- </tr>
- <tr>
- <td colspan="2" align="center">
- <input type="submit" value="提交"/>
- </td>
- </tr>
- </table>
- </form>
- <br/>
- <%--下面的Table用于显示传递回来id,username,content--%>
- <table border="1">
- <tr><span id="transmark"></span>
- <td>ID: </td>
- <td><input type="text" value="${id}"/></td>
- </tr>
- <tr>
- <td>Username: </td>
- <td><input type="text" value="${username}"/></td>
- </tr>
- <tr>
- <td>Content: </td>
- <td><input type="text" value="${content}"/></td>
- </tr>
- </table>
- <%--用于查看ValueStack中的传递的值--%>
- <s:debug/>
- </body>
- </html>
页面还是和普通传值一样.
可以去ValueStack当中观察参数的存储,更透彻的理解Struts2的参数传递.