课程目标:
1、struts的配置
2、struts的动态方法调用
3、struts的传参
4、struts与tomcat的集成
一、struts的配置修改web.xml由2.3至3.1
Archetype Created Web Application
配置插件,改jdk版本--》在pom.xml中改变
org.apache.maven.plugins maven-compiler-plugin3.7.0 1.8 1.8 UTF-8
改编译器:
然后就把一点五的改成一点八的了
1、依赖--》maven的pom.xml
导入jar包(struts与tomcat的jar包):在pom.xml文件中
javax.servlet javax.servlet-api4.0.1 provided org.apache.struts struts2-core2.5.13
依赖完成:
2、做配置(web.xml)--》配置过滤器
按住Ctrl+Shift+T,找到jar包的核心类,复制它的全路径名
在web.xml添加
struts2 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter struts2 /*
框架配置文件:
注意maven项目的结构:
src
main
java-->写代码的地方
resources-->放配置的地方
webapp-->放页面的地方
test
java-->写测试代码的地方
resources-->放测试代码对应配置的地方
3、开发--》写子控制器继承ActionSupport
DemoAction:
package com.smy.web;
import com.opensymphony.xwork2.ActionSupport;
public class DemoAction extends ActionSupport{
public String add() throws Exception {
System.out.println("add方法……");
return "bookEdit";
}
public String del() throws Exception {
System.out.println("del方法……");
return "bookEdit";
}
public String edit() throws Exception {
System.out.println("edit方法……");
return "bookEdit";
}
}
建一个跳转界面bookEdit:
struts.xml文件中选中struts-sy.xml按住Ctrl跳转到配置文件struts-sy.xml
进行配置
此处第一个*代表调用的方法
第二个*代表跳哪个界面
二、struts的动态方法调用第一种方法: /bookEdit.jsp 第二种方法:
struts的动态方法调用具有一个*的调用方法 新增
删除
修改
执行效果:
三、struts的传参
1、Modeldriver接口传参
首先建个实体类进行演示,子控制器Demo1Action当然需要实现Modeldriver接口
写一个测试方法
public String list() throws Exception {
System.out.println("edit方法……");
System.out.println(user1);
return "bookEdit";
}
调用(demo1.jsp):
Modeldriver接口传参
2、set方法传参
我们给Demo1Action添加个参数,给到set、get
private String sex;
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String list() throws Exception {
System.out.println("list方法……");
System.out.println(user1);
return "bookEdit";
}
调用:
set方法传参
3、通过对象属性传参
传个对象属性,给到set、get方法,输出调用
通过对象属性传参四、struts与tomcat的集成
也就是将后台的参数传到页面来
第一种:
Demo1Action:
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("age", 12);
bookEdit文件中调用:
${age }
第二种:
子控制器实现ServletRequestAware,ServletResponseAware的接口
并重写方法
private HttpServletResponse resp;
private HttpServletRequest req;
@Override
public void setServletResponse(HttpServletResponse response) {
this.resp=response;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.req=request;
}



