目标:
学会初步使用struts
1.struts的配置
2.动态方法调用
3.struts的传参
4.struts与tomcat的集成
相当于自定义mvc中的ation层
一、struts的配置
步骤:
①依赖->导入jar包->maven的pom.xml
②做配置->web.xml配置中央控制器->配置过滤器
③开发->写子控制器继承ActionSupport
1.在dom.xml加入struts依赖(依赖->导入jar包->maven的pom.xml)
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.13</version>
</dependency>
2.做配置->web.xml配置中央控制器->配置过滤器(和自定义mvc配置中央控制器一样)
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter (这个用ctrl+shift+t搜索)</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
所有配置文件都放在这个文件下面
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<include file="struts-default.xml"></include>//引入了struts的默认配置
<include file="struts-base.xml"></include>//开发人员对struts的基本配置
<include file="struts-sy.xml"></include>//项目涉及到的模块,分文件管理
</struts>
struts-base.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8" />//编码
<constant name="struts.devMode" value="true" />//开发模式
<constant name="struts.configuration.xml.reload" value="true" />//xml的热加载
<constant name="struts.i18n.reload" value="true" />//国际化
<constant name="struts.enable.DynamicMethodInvocation" value="true" />//动态方法调用<package name="base" extends="struts-default" abstract="true">
<global-allowed-methods>regex:.*</global-allowed-methods>
</package>
</struts>
struts-sy.xml(按包分类)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="sy" extends="base" namespace="/sy">
</package>
</struts>
以前开发 http://location:8080/mvc/xxx.action?methName=list---》xxx容易命名重复
现在的maven项目:http//location:8080/mvc/book/xxx.action--->按照包来命名
maven项目的结构:
src
mian
java 写代码的地方
resource 放配置的地方
webapp 放页面的地方
test
java 写测试的代码的地方
resource 放测试代码配置的地方
3. 开发->写子控制器继承ActionSupport
案列:
子控制器
package com.xhy.web;
import com.opensymphony.xwork2.ActionSupport;
public class Demo1Action extends ActionSupport{
public String add() throws Exception {
System.out.println("新增方法");
return "bookEdit";
}
public String del() throws Exception {
System.out.println("删除方法");
return "bookEdit";
}
public String edit() throws Exception {
System.out.println("修改方法");
return "bookEdit";
}
}
配置struts-sy.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="sy" extends="base" namespace="/sy">
方法一:<action name="/demo1_*" calss="com.xhy.web.Demo1Action" method="{1}"></action>
<result name="bookEdit">/bookEdit.jsp</result>
方法二(少数):<action name="/demo1_*_*" calss="com.xhy.web.Demo1Action" method="{1}"></action>
<result name="{2}">/bookEdit.jsp</result></package>
</struts>
{1}代表第一个*代表调用的方法
第二个*代表跳哪个界面
三、struts的传参
自定义mvc:Mdeldriver接口传参
struts:①modeldriver接口传参
②set方法传参
③通过对象属性传参
1、Modeldriver接口传参
首先建个实体类进行演示,子控制器Demo1Action当然需要实现Modeldriver接口
写一个测试方法
public String list() throws Exception {
System.out.println("edit方法……");
System.out.println(user1);
return "bookEdit";
}
调用(demo1.jsp):
<a href="${pageContext.request.contextPath }/sy/demo1_list.action?uid=001&&uname=zs">Modeldriver接口传参</a><br>
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";
}
调用:
<a href="${pageContext.request.contextPath }/sy/demo1_list.action?sex=nv">set方法传参</a><br>
3、通过对象属性传参
传个对象属性,给到set、get方法,输出调用
<a href="${pageContext.request.contextPath }/sy/demo1_list.action?user2.uid=002&&uname=xh">通过对象属性传参</a>
四、struts与tomcat的集成
解释:将后台的参数传到页面
第一种:
Demo1Action:
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("xxx", 12);
bookEdit文件中调用:
${xxx }
第二种:
子控制器实现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;
}
总结:
在创建maven项目一定要在网络完好的情况下运行
还有一定要等项目运行完再开始下一步
一定要极致的耐心