struts2学习笔记2

struts2学习笔记2

黑马视频的学习笔记2.

  • 结果页面配置

1.全局结果页面

多个action,方法里面的返回值相同,到的目标页面也相同,用全局结果页面配置

第一个action:

package cn.itcast.action;
import com.opensymphony.xwork2.ActionSupport;
public class BookAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		// TODO 自动生成的方法存根
		return SUCCESS;
	}
}
第二个action:
package cn.itcast.action;
import com.opensymphony.xwork2.ActionSupport;
public class OrdersAction extends ActionSupport {
	@Override
	public String execute() throws Exception {
		// TODO 自动生成的方法存根
		return SUCCESS;
	}
}

核心配置文件:

<package name="demo1" extends="struts-default" namespace="/">
		<global-results>
			<result name="success">/hello.jsp</result>
		</global-results>
		
		<action name="book" class="cn.itcast.action.BookAction"></action>
		<action name="orders" class="cn.itcast.action.OrdersAction"></action>
	</package>

2.局部结果页面

局部和全局同时配置,以局部为准

<package name="demo1" extends="struts-default" namespace="/">
		<global-results>
			<result name="success">/hello.jsp</result>
		</global-results>
	
		<action name="book" class="cn.itcast.action.BookAction">
			 <result name="success">/hello.jsp</result>
		</action>
		<action name="orders" class="cn.itcast.action.OrdersAction">
			<!-- <result name="success">/hello.jsp</result> -->
		</action>
	</package>

3.result标签的type属性:  配置如何到路径里面去

默认type=dispatcher,可修改为redirect(重定向);如果要到别的action里面,使用chain(一般不用),redirectAction

 <result name="success"  type="redirect">/hello.jsp</result>
 <result name="success"  type="redirectAction">orders</result>

  • 在action中获取表单提交数据

1.使用ActionContext类获取

package cn.itcast.form;

import java.util.Arrays;
import java.util.Map;
import java.util.Set;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Form1DemoAction extends ActionSupport{
	
	@Override
	public String execute() throws Exception {
		//actioncontext类对象获取表单提交数据
		ActionContext context=ActionContext.getContext();
		Map<String, Object> map=context.getParameters();
		
		Set<String> keys= map.keySet();
		
		for (String key : keys) {
			Object[]  object=(Object[]) map.get(key);
			System.out.println(Arrays.toString(object));
		}	
		return NONE;
	}
}

配置文件

<package name="form1" extends="struts-default" namespace="/">
<action name="form1" class="cn.itcast.form.Form1DemoAction"></action>
</package>

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}/form1.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>

2.使用ServletActionContext类获取

package cn.itcast.form;

import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Form2DemoAction extends ActionSupport{
	@Override
	public String execute() throws Exception {
		//第二种方式,使用servletActionContext	
		HttpServletRequest request=ServletActionContext.getRequest();
		String username=request.getParameter("username");
		String password=request.getParameter("password");
	        String address=request.getParameter("address");
			
		System.out.println(username+":"+password+":"+address);
		return NONE;			
	}	
}

配置文件

<package name="form1" extends="struts-default" namespace="/">
		<action name="form2" class="cn.itcast.form.Form2DemoAction"></action>
	</package>

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}/form2.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>

3.使用接口注入方式获取(很少用)

4.在action中操作域对象

package cn.itcast.form;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class Form2DemoAction extends ActionSupport{
	
	@Override
	public String execute() throws Exception {	
		HttpServletRequest request=ServletActionContext.getRequest();
		request.setAttribute("req", "reqvalue");
			
		HttpSession session=request.getSession();
		session.setAttribute("sess", "sessionvalue");	
			
		ServletContext context=ServletActionContext.getServletContext();
		context.setAttribute("contextname", "contextValue");
		
		return NONE;			
	}
}

struts2提供的获取表单数据封装到实体类对象中的方式


实体类代码:

package cn.itcast.entity;
public class User {
			private String username;
			private String password;
			private String address;
			
			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;
			}
					
			@Override
			public String toString() {
				return "User [username=" + username + ", password=" + password + ", address=" + address + "]";
			}
}

1.原始方式

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}/form4.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>

配置文件:

<package name="form2" extends="struts-default" namespace="/">
		<action name="form4" class="cn.itcast.form.Form4DemoAction"></action>
		<action name="data1" class="cn.itcast.data.DataDemo1Action"></action>
		<action name="data2" class="cn.itcast.data.DataDemo2Action"></action>
		<action name="list" class="cn.itcast.data.ListAction"></action>
		<action name="map" class="cn.itcast.data.MapAction"></action>
	</package>

action的代码

package cn.itcast.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import cn.itcast.entity.User;
public class Form4DemoAction extends ActionSupport{
	
	@Override
	public String execute() throws Exception {
	  
		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);				
		return NONE;
	}	
}

2.属性封装

注:把表单提交的数据直接封装到action的属性里面

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}/data1.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>

配置文件:

<package name="form2" extends="struts-default" namespace="/">	
		<action name="data1" class="cn.itcast.data.DataDemo1Action"></action>
		<action name="data2" class="cn.itcast.data.DataDemo2Action"></action>
		<action name="list" class="cn.itcast.data.ListAction"></action>
		<action name="map" class="cn.itcast.data.MapAction"></action>
	</package>

action的代码

package cn.itcast.data;
import com.opensymphony.xwork2.ActionSupport;
public class DataDemo1Action extends ActionSupport {
	private String username;
	private String password;
	private String address;

	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;
	}
	@Override
	public String execute() throws Exception {
		System.out.println(username+":"+password+":"+address);	
		return NONE;
	}
}

3.表达式封装

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}/data3.action" method="post">
  username:<input type="text"name="user.username"/><br/>
  password:<input type="text"name="user.password"/><br/>
  address:<input type="text"name="user.address"/><br/>
  
  <input type="submit" value="提交"/> 
  </form>
</body>
</html>

配置文件:

<action name="data3" class="cn.itcast.data.DataDemo3Action"></action>

action的代码

package cn.itcast.data;

import com.opensymphony.xwork2.ActionSupport;

import cn.itcast.entity.User;

public class DataDemo3Action extends ActionSupport {
	private User user;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	@Override
	public String execute() throws Exception {
		
		System.out.println(user);
		return NONE;
	}
}
注:3,4都能把数据封装到实体类对象中,但是模型驱动只能封装一种实体类对象中,表达式封装可以封装到不同的实体类对象中

4.模型驱动封装(用的较多)

注:能直接封装到实体类对象里面,而且表单输入项的name值与实体类的变量名对应相同。不能对同一个form同时用属性封装和模型驱动封装

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}/data2.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>

配置文件:

<package name="form2" extends="struts-default" namespace="/">	
		<action name="data1" class="cn.itcast.data.DataDemo1Action"></action>
		<action name="data2" class="cn.itcast.data.DataDemo2Action"></action>
		<action name="list" class="cn.itcast.data.ListAction"></action>
		<action name="map" class="cn.itcast.data.MapAction"></action>
	</package>

action的代码

package cn.itcast.data;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import cn.itcast.entity.User;

@SuppressWarnings("serial")
public class DataDemo2Action extends ActionSupport implements ModelDriven<User>{
     private User user=new User();
	@Override
	public User getModel() {
		return user;
	}
 @Override
	public String execute() throws Exception {
		System.out.println(user);
		return NONE;
	}
}
  • struts2获取数据封装到集合对象中

1.封装到list集合

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}/list.action" method="post">
  username:<input type="text"name="list[0].username"/><br/>
  password:<input type="text"name="list[0].password"/><br/>
  address:<input type="text"name="list[0].address"/><br/>
  <br/>
  username:<input type="text"name="list[1].username"/><br/>
  password:<input type="text"name="list[1].password"/><br/>
  address:<input type="text"name="list[1].address"/><br/>
  <input type="submit" value="提交"/>
 
  </form>
</body>
</html

配置文件:

<action name="list" class="cn.itcast.data.ListAction"></action>

action的代码

package cn.itcast.data;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import cn.itcast.entity.User;
public class ListAction extends ActionSupport {
	private List<User> list;
	public List<User> getList() {
		return list;
	}

	public void setList(List<User> list) {
		this.list = list;
	}

	@Override
	public String execute() throws Exception {
		System.out.println(list);	
		return NONE;
	}
}

2.封装到map集合

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}/map.action" method="post">
  username:<input type="text"name="map['one'].username"/><br/>
  password:<input type="text"name="map['one'].password"/><br/>
  address:<input type="text"name="map['one'].address"/><br/>
  <br/>
  username:<input type="text"name="map['two'].username"/><br/>
  password:<input type="text"name="map['two'].password"/><br/>
  address:<input type="text"name="map['two'].address"/><br/>
  <input type="submit" value="提交"/>
 
  </form>
</body>
</html>

配置文件:

<action name="map" class="cn.itcast.data.MapAction"></action>

action的代码

package cn.itcast.data;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import cn.itcast.entity.User;
public class MapAction extends ActionSupport {
	private Map<String, User> map;
	public Map<String, User> getMap() {
		return map;
	}
	public void setMap(Map<String, User> map) {
		this.map = map;
	}

	@Override
	public String execute() throws Exception {
		System.out.println(map);
		
		return NONE;
	}	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值