环境搭建
1.1 jar
1.2 web.xml
1.3 struts.xml
struts.xml(核心配置文件)
添加依赖:(在pom.xml中)
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.13</version>
</dependency>
开发
Action
不需要指定父类(ActionSupport)
业务方法的定义
public String xxx();//execute
Action是多例模式(注:在spring中的配置中一定要注意)
Action用来接收参数
参数赋值
Action中定义属性,并提供get/set方法
userName, getUserName/setUserName
Defultaction.java
package com.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 com.opensymphony.xwork2.ModelDriven; /** * 1、动态方法调用 * 2、struts中的传参 * 2.1 set传参 * 2.2 参数名.属性名传参 * 2.3实现modeldriven接口 * 3、struts与tomcat的交互 * 将后台的值传到前台去 * request传值 * * 值栈传值(get方法传值) * @author xyls * */ public class DefultAction 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 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("。。。"); return null; } public String del() { System.out.println("user1:"+user1); System.out.println("user2:"+user2); System.out.println("sex:"+sex); HttpServletRequest request=ServletActionContext.getRequest(); this.request.setAttribute("rs", user1); return "success"; } public String edit() { System.out.println("。。。"); return null; } public String list() { System.out.println("。。。"); return null; } @Override public User getModel() { return user1; } @Override public void setServletResponse(HttpServletResponse response) { this.response=response; } @Override public void setServletRequest(HttpServletRequest request) { this.request=request; } }
ModelDriven
返回实体,不能为null,不需要提供get/set方法
ModelDriven返回实体和Action中属性重名,ModelDriven中优先级更高
与J2EE容器交互
非注入
耦合
ServletActionContext
解耦(建立使用解耦模式)
ActionContext
运行结果(控制台):
demo.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传参的3种方式</h2> <a href="${pageContext.request.contextPath}/sy/defult_del.action?uid=001&&uname=zs">测试model driver</a> <a href="${pageContext.request.contextPath}/sy/defult_del.action?sex=nan">测试set传参</a> <a href="${pageContext.request.contextPath}/sy/defult_del.action?user2.uid=002&&user2.uname=ls">测试参数名.属性名传参</a> </body> </html>