struts2傳值的四種方式

Struts2的4種傳值方式:
1.通過request/session等傳值
可通過ServletActionContext.getRequest()/getSession()等方法來獲得request/session對象,

然後調用其中的setAttribute(),getAttribute(),getParameter()方法來傳值。

public class UserAction{


public String addUser() {

//通過request
int id=ServletActionContext.getRequest().getParameter("id");
String username= ServletActionContext.getRequest().getParameter("username");

//通過session
ServletActionContext.getRequest().getSession().getAttribute("username");

//通過session
ActionContext.getContext().getSession().getAttribute("username");

System.out.println(username+" "+id);

return "success";

}

}
2.普通傳值,一個javabean,xml配置文件
public class UserAction{
private int id;
private String username;

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 addUser() {
System.out.println("ID: " + this.getId());
System.out.println("Username: " + this.getUsername());
return "success";
}
}
<?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="UserAction" class="com.struts.action.UserAction" method="addUser">
<result name="success">/UserPage.jsp</result>
</action>
</package>
</struts>
前端頁面:

<%@ 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="UserAction" 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>

<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>

</table>
<%--用於查看ValueStack中的傳遞的值--%>
<s:debug/>
</body>
</html>

3.使用model傳值:建立一個model類Uesr來存儲數據,一個UserAction要繼承ActionSupport來操作,
public class UserAction extends ActionSupport
xml配置,User類不需要顯式的實例化,struts會自動幫你實例化,但前提條件是,傳值時需要使用對象.參數名的方式進行傳遞.比如form表單的輸入要寫成name=“user.name”
<input type="text" name="user.username"/>
public class User{
private int id;
private String username;

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 class UserAction 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());
return "success";
}
}
<?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="userAction" class="com.struts.action.UserAction" method="addUser">
<result name="success">/UserPage.jsp</result>
</action>
</package>
</struts>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>UserPage</title>
</head>
<body>
<%--要特別注意的是傳值方式必須要使用對象.參數方式進行賦值以及取值--%>
<form action="userAction" 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 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>

</table>
<%--用於查看ValueStack中的傳遞的值--%>
<s:debug/>
</body>
</html>
4.同樣是使用model來傳值,還是創建一個model類User,UserAction操作類要實現接口:
public class UserAction implements ModelDriven<User>
不同的是在UserAction中可以不用編寫對應的get/set方法,但是需要實例化User類.但前端頁面form表單的name可以直接寫對應User類的屬性名
<input type="text" name="username"/>
public class User{
private int id;
private String username;

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 class UserAction implements ModelDriven<User>{
private User user;

public String addUser() {
System.out.println("ID: " + user.getId());
System.out.println("Username: " + user.getUsername());
return "success";
}

@Override
public User getModel() {
if (user == null) {
user = new User();
}
return user;
}
}
<%@ 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 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>

</table>
<%--用於查看ValueStack中的傳遞的值--%>
<s:debug/>
</body>
</html>



原文鏈接:https://blog.csdn.net/weixin_39220472/article/details/80296890

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章