1、环境搭建
①导jar包
②在web.xml中配置过滤器
注:filter-class 为StrutsPrepareAndExecuteFilter类的全类名。
③ struts.xml
struts.xml(核心配置文件)
下面是配置的代码
struts.xml
另外两个文件的代码:
struts-sy.xml(此文件相当于自定义mvc中的mvc.xml)
struts-base.xml(下面为配置的一些常量)
2、入门Hello struts!
package com.struts.study.one.demo;
public class Demo1Action{
/**
*如果在配置文件中没有指定方法,struts会默认匹配执行execute方法
*/
public String execute() {
System.out.println("Hello struts");
return "success";
}
}
新建一个用来测试的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>
<a href="${pageContext.request.contextPath}/sy/demo1Action.action">click</a>
</body>
</html>
3、动态调用方法
在action标签的name后拼上 _* , 且为action标签加上method属性
这里没有它规定的execute方法,而是我们自己定义的方法
package com.zking.study.one.demo;
public class Demo1Action{
public String add() {
System.out.println("add");
return "success";
}
public String remove() {
System.out.println("remove");
return "success";
}
}
前台点击跳这个方法
<a href="${pageContext.request.contextPath}/sy/demo1Action_add.action">click</a>
4、参数赋值
1. Action中定义属性,并提供get/set方法
package com.zking.study.one.demo;
public class Demo1Action{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute() {
System.out.println(name);
return "success";
}
}
与普通传参一样,需要与后台的属性名相等
<%@ 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>
<a href="${pageContext.request.contextPath}/sy/demo1Action.action?name=张三">click</a>
</body>
</html>
2. 实现ModelDriven接口 ,不需要提供get/set方法
package com.zking.study.one.demo;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ModelDriven;
import com.zking.study.one.entity.User;
public class Demo1Action implements ModelDriven<User>{
//定义的一个实体类,定义了一个属性uname
private User user=new User();
public String execute() {
System.out.println(user);
return "success";
}
}
前台调用方法
<body>
<a href="${pageContext.request.contextPath}/sy/demo1Action.action?uname=张三">click</a>
</body>
5.j2ee与struts上下文集成交互
注入
耦合 implement servletRequestAware 实现这个接口
解耦
非注入
耦合 直接这句话获取request (servletActionContext.getContext.getrequest)
解耦
还有值栈传值 定义一个属性 界面那边获取这个定义的属性 就可拿到值
private Object rs;//2.定义一个object的值 来拿到处理的结果 那边得到这个返回的结果
//用this.rs=..... 提供setget
public Object getRs() {
return rs;
}
public void setRs(Object rs) {
this.rs = rs;
}
public String add() {//1.通过这个拿到request域
//ServletActionContext.getRequest().setAttribute("rs", Integer.valueOf(cal.getNum1())+Integer.valueOf(cal.getNum2()));
//这是定义的上面那个值来返回
this.rs=Integer.valueOf(cal.getNum1())+Integer.valueOf(cal.getNum2());
return "success";
}
1、拿到request就可以向jsp页面传值
2、在action中定义属性,提供set、get方法,那么jsp页面也可以拿到值。