概述:
Struts2框架应用于javaee三层框架中的web层。是在Struts1和webwork基础上发张的一个全新的框架。
一、搭建一个最基本的struts2工程步骤:
1、导入基本的jar包依赖:
2、创建action:
首先:比较一下servlet和struts2的action的区别:
(1)每次访问servlet的时候,都会执行service方法。
写类继承httpServlet,重写里面的方法。并在web.xml文件配置servlet的访问路径。
(2)每次执行action,默认执行execute的方法。
//action类
public class HelloAction {
//每次访问action的时候,默认执行execute方法。
public String execute(){
return "success";
}
}
3、配置action类的访问路径:
(1)创建struts2核心配置文件,核心配置文件名称和位置是固定的,位置必须在src下面,名称是struts.xml;
(2)在struts.xml引入dtd约束;
(3)Action配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- 以上为引入的dtd约束 -->
<struts>
<!-- action的配置 -->
<package name="HelloDemo" extends="struts-default" namespace="/">
<!-- name:配置访问路径 -->
<action name="hellotest" class="com.zwp.action.HelloAction" method="execute">
<!-- 配置方法的返回值到页面 -->
<result name="ok" type="dispatcher">/hello.jsp</result>
</action>
</package>
</struts>
4、在web.xml配置文件配置过滤器:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>ssh-test</display-name>
<!-- 配置struts2过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
5、访问路径:http://localhost:8080/ssh-test/hellotest
至此,一个最基本的struts2项目就已经搭建完毕。
二、Struts2的基本概念:
1、Struts2的基本执行流程:
2、structs2的过滤器在服务端启动的时候创建,创建的时候会执行init方法,init方法中主要加载配置文件,包含自己创建的配置文件和struts自带文件。
3、Struts2核心配置文件:
文件名称和位置固定;在配置文件中主要有三个标签package、action、result,以及标签里面的属性。
(1)package标签:
<package name="HelloDemo" extends="struts-default" namespace="/">
类似于代码包,区别不同的action,必须首先写package标签,在package里面才能配置action。
package标签属性:
①name:name属性值跟功能本身没有关系。
②extends:extends="struts-default",属性值是固定的,struts-default。写了这个属性之后,在package里面的类具有action功能。
③namespace:namespace属性值和action标签里面的name属性值构成访问路径。
(2)action标签:
<action name="hellotest" class="com.zwp.action.HelloAction" method="execute">
action标签配置action访问路径:
action标签属性:
①name:package标签的namespace属性值和action标签里面的name属性值构成访问路径。在package标签里面可以写多个action标签,但是action标签的属性值不能相同。
②class:action的全路径。
③method:在action里面默认执行的方法execute方法,如果想执行action里面的其他方法,使用method进行配置。
(3)result标签:
<result name="ok" type="dispatcher">/hello.jsp</result>
根据action的方法的返回值,配置到不同的路径里面。
result属性:
①name:和方法返回值一样。
②type(重点):配置如何到路径中(转发或者重定向)。
---type属性默认值是做转发操作,值是dispatcher。
---做重定向操作,值是redirect。
--上面两个值一般针对到页面中的配置,如果想要配置到其他的action:
--chain:转发到action,一般不用,存在缓存问题
--redirectAction:重定向到action。