一:result標籤的type屬性
1 result標籤裏面除了name屬性之外,還有一個屬性 type屬性
(1)type屬性:如何到路徑裏面(轉發還是重定向)
2 type屬性值
(1)默認值,做轉發操作,值是 dispatcher
(2)上面兩個值dispatcher、redirect,這兩個值一般針對到頁面中配置,配置到其他的action裏面
- chain:轉發到action,一般不用,緩存問題
- redirectAction:重定向到action
Action獲取表單提交數據:
其中BookAction實例:
1 使用模型驅動封裝表單提交的數據 2 使用ActionContext或者ServletRequest獲取數據
package com.hr.action;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.hr.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class BookAction extends ActionSupport implements ModelDriven<User> {
private User user;
public void setUser(User user) {
this.user = user;
}
//使用模型驅動封裝表單提交的數據
public String demo1() {
System.out.println(user);
return NONE;
}
@Override
public User getModel() {
user = new User(); //在這裏實例化或者在外面實例化
return user;
}
//使用ActionContext或者ServletActionContext獲取數據
//Action獲取提交的表單數據
public String demo2() {
//第一種方法: 得到Request對象
// HttpServletRequest request = ServletActionContext.getRequest();
// String username = request.getParameter("username");
// String password = request.getParameter("password");
// String address = request.getParameter("address");
// User user = new User();
// user.setUsername(username);
// user.setPassword(password);
// user.setAddress(address);
// System.out.println(user);
//第二種方法,得到ActionContext對象
ActionContext actionContext = ActionContext.getContext();
//map中key是name的值,value是輸入的值
Map<String, Object> map = actionContext.getParameters();
//遍歷
Set<String> set = map.keySet();
for(String s:set) {
//得到的是數組,因爲會有複選框的情況
Object[] objArray = (Object[]) map.get(s);
System.out.println(s + "---------" + Arrays.toString(objArray));
}
return NONE;
}
}
其中,提交的jsp頁面代碼:
demo1.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>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/book_demo1.action" method="post">
username:<input type="text" name="username"/>
<br/>
password:<input type="text" name="password"/>
<br/>
address:<input type="text" name="address"/>
<br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
demo2.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>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/book_demo2.action" method="post">
username:<input type="text" name="username"/>
<br/>
password:<input type="text" name="password"/>
<br/>
address:<input type="text" name="address"/>
<br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
別忘了src下面的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>
<package name="demo1" extends="struts-default" namespace="/">
<action name="book_*" class="com.hr.action.BookAction" method="{1}"></action>
</package>
<package name="demo2" extends="struts-default" namespace="/">
<action name="book2_*" class="com.hr.action.BookAction2" method="{1}">
<result></result>
</action>
</package>
</struts>
3 使用屬性封裝 4使用表達式封裝
BookAction2.java
package com.hr.action;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.hr.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class BookAction2 extends ActionSupport {
//1 屬性封裝:定義屬性
private String username;
private String password;
private String address;
//2屬性封裝:生成set和get方法
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
/**
* 使用屬性封裝得到表單提交的數據
* 要求:會用
* @return
*/
public String demo3() {
System.out.println("屬性封裝" + username);
System.out.println("屬性封裝" + password);
System.out.println("屬性封裝" + address);
return NONE;
}
//1 表達式封裝:聲明實體類
private User user;
//2 表達式封裝:生成實體類的set和get方法
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
//3表達式封裝:在表單輸入項的name屬性值裏面寫表達式形式
/**
* 使用表達式封裝
* 使用表達式封裝可以把表單數據封裝到實體類裏面去
* 要求:會用
* @return
*/
public String demo4() {
System.out.println(user);
return NONE;
}
}
demo3.jsp和demo4.jsp同上面