一:环境搭配
Struts的环境搭建基于Maven
在项目中的pom.xml加入struts:http://maven.apache.org/download.cgi
二:导入配置文件
三:配置xml
user
package com.zl; public class User { private String uid; private String uname; public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } @Override public String toString() { return "User [uid=" + uid + ", uname=" + uname + "]"; } public User(String uid, String uname) { super(); this.uid = uid; this.uname = uname; } public User() { super(); // TODO Auto-generated constructor stub } }
HelloAction
package com.zl.web; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.omg.PortableInterceptor.SUCCESSFUL; import com.zl.User; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ModelDriven; /** * 1.动态方法调用(MVC不具备的优势) * 2.Struts中的参数 * 1.set传参 * 2.参数名属性名传参 * 3实现modeldriven接口传参 * 3.struts与tomacat的交互 如何将后台的值传到前台去 * 1.request传值 * * * */ public class HelloAction implements ModelDriven<User>,ServletRequestAware,ServletResponseAware { private HttpServletRequest request; private HttpServletResponse response; private User user1 = new User(); private User user2; private String sex; private String uname; public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public User getUser2() { return user2; } public void setUser2(User user2) { this.user2 = user2; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String add() { System.out.println("add方法"); return "success"; } public String del() { System.out.println("del方法"); return "success"; } public String edit() { System.out.println("edit方法"); return "success"; } public String list() { System.out.println("list方法"); System.out.println("user1:" + user1); System.out.println("user2:" + user2); System.out.println("sex:" + sex); System.out.println("uname:"+uname); // HttpServletRequest request= ServletActionContext.getRequest(); // request.setAttribute("rs",user1); this.request.setAttribute("rs", user1); return "success"; } @Override public User getModel() { // TODO Auto-generated method stub return user1; } @Override public void setServletRequest(HttpServletRequest request) { this.request=request; } @Override public void setServletResponse(HttpServletResponse response) { this.response=response; } }
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> <h2>struts传参的三种方式</h2> <a href="${pageContext.request.contextPath }/sy/hello_list.action?uid=001&&uname=zs">测试modeldriven接口传参</a> <a href="${pageContext.request.contextPath }/sy/hello_list.action?sex=nv">测试set接口传参</a> <a href="${pageContext.request.contextPath }/sy/hello_list.action?user2.uid=002&&user2.uname=ls">测试参数名.属性名接口传参</a> <h2>与J2EE容器的交互</h2> </body> </html>
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> 成功页面:${rs } </body> </html>
注入与非注入
注入,注入需要实现ServletRequestAware接口,重写需要实现的方法setServletRequest;
将setServletRequest方法的参数私有化作为属性
package com.zl.web; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ModelDriven; public class HelloAction implements ModelDriven<User>,ServletRequestAware{ /** * 1.动态方法调用(mvc不具备的优势) * * 2.struts中的传参 * 2.1 set 传参 * 2.2 参数名点属性名 * 2.3实现modeldriven接口传参 * * 3.struts 与tomcat的交互 * 3.1如何将后台的值传到前台去 * 1 req 传值 * 2 值栈传值(get方法) * @return */ private HttpServletRequest requst; private User user1=new User(); private User user2; private String sex; public User getUser2() { return user2; } public void setUser2(User user2) { this.user2 = user2; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String add() { System.out.println("add。。。。"); return "success"; } public String del() { System.out.println("del。。。。"); return "success"; } public String update() { System.out.println("update。。。。"); return "success"; } public String list() { System.out.println("list。。。。"); System.out.println("user1:"+user1); System.out.println("user2:"+user2); System.out.println("sex:"+sex); // HttpServletRequest request=ServletActionContext.getRequest(); // request.setAttribute("rs",user1); this.requst.setAttribute("rs", user1); return "success"; } @Override public User getModel() { // TODO Auto-generated method stub return user1; } @Override public void setServletRequest(HttpServletRequest requst) { // TODO Auto-generated method stub this.requst=requst; } }
非注入
package com.zl.web; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ModelDriven; public class HelloAction implements ModelDriven<User>,ServletRequestAware{ /** * 1.动态方法调用(mvc不具备的优势) * * 2.struts中的传参 * 2.1 set 传参 * 2.2 参数名点属性名 * 2.3实现modeldriven接口传参 * * 3.struts 与tomcat的交互 * 3.1如何将后台的值传到前台去 * 1 req 传值 * 2 值栈传值(get方法) * @return */ private HttpServletRequest requst; private User user1=new User(); private User user2; private String sex; public User getUser2() { return user2; } public void setUser2(User user2) { this.user2 = user2; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String add() { System.out.println("add。。。。"); return "success"; } public String del() { System.out.println("del。。。。"); return "success"; } public String update() { System.out.println("update。。。。"); return "success"; } public String list() { System.out.println("list。。。。"); System.out.println("user1:"+user1); System.out.println("user2:"+user2); System.out.println("sex:"+sex); HttpServletRequest request=ServletActionContext.getRequest(); request.setAttribute("rs",user1); // this.requst.setAttribute("rs", user1); return "success"; } @Override public User getModel() { // TODO Auto-generated method stub return user1; } @Override public void setServletRequest(HttpServletRequest requst) { // TODO Auto-generated method stub this.requst=requst; } }