Struts2_01---Struts2入门、xml配置及action访问方式

一、Struts2概述


应用于 JavaEE三层结构中的 web层框架

struts2作用:解决BaseServlet需要复杂代码的问题。(BaseServlet需要写到底层反射,较复杂)

servlet和action区别:
	Servlet:默认在第一次访问时候创建,只创建一次。是单实例对象
	Action:访问时候创建,每次访问都会创建。是多实例对象

版本:struts-2.3.24-all.zip

了解:web层常用框架:struts2、springMVC

作用流程:

Struts2_01---Struts2入门、xml配置及action访问方式

二、Struts2入门


1)导包
2)创建action(三种方式)
	1)创建普通类,不继承任何类,不实现任何接口。
	2)创建类,实现接口 Action
			public class HelloAction implements Action{...}    
			需要导包:import com.opensymphony.xwork2.Action;
	3)创建类,继承类 ActionSupport(建议使用!!!)
			public class HelloAction extends ActionSupport{...}

3)配置struts2核心配置文件(action类访问路径)
	1)创建struts2核心配置文件
		- 位置:必须在src下面,
		- 名称:必须是struts.xml
	2)引入dtd约束
		在struts.xml中
	3)struts配置
			<package name="">
				<action name="">
					<result></result>
				</action>
			</package>
4)配置struts2过滤器
	1)进入到web.xml中,在<display-name>标签的下一行添加:
		<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>
	2)按ctrl点击<filter-class>内容,导入源码(源码路径:struts-2.3.24 / src)

Struts2_01---Struts2入门、xml配置及action访问方式

Struts2执行过程:

Struts2_01---Struts2入门、xml配置及action访问方式

三、structs.xml配置讲解

1)package标签:类似于代码包。  
	name属性:
		作用:起指明package的作用
		属性值要求:一个配置文件中可以有多个package标签,其各自name属性值不能相同
	
	extends属性:
		作用:使package里面配置的类具有action功能
		属性值要求:属性值固定为struts-default。
	
	namespace属性: 
		属性值:"/"
		作用:namespace属性值和action标签里面的name属性值构成访问路径  

2)action标签:配置action访问路径
	name属性:
			1)namespace属性值和action标签里面的name属性值构成访问路径
			2)一个package标签里面写多个action标签,每个action的name属性值不能相同。
		
	class属性:值为:action全路径
	
	method属性:
		1)指定执行action里面的方法,使用method进行配置。
		2)不配置则默认执行action中的execute方法。

3)result标签:根据action的方法返回值,配置到不同的路径里面
		name属性:属性值和被执行的方法返回值相同。
		
		type属性:
			1)配置如何到路径中(转发或者重定向)。默认为转发。
				- dispatcher:转发
				- redirect:重定向
				- chain:转发到action
				- redirectAction:重定向到action
		
		标签内容为跳转页面
			
代码示例:
	<?xml version="1.0" encoding="UTF-8"?>
	<!-- dtd约束 -->
	<!DOCTYPE struts PUBLIC
		"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
		"http://struts.apache.org/dtds/struts-2.3.dtd">
	<struts>
	
		<!-- 分模块开发:引入配置文件(引入后则下面不需要配置)
			<include file="配置文件全路径"></include>
		 -->
		
		<!-- 修改常量值 -->
		<constant name="struts.i18n.encoding" value="UTF-8"></constant>
		
		<!-- package标签:类似于代码包。  -->
		<package name="aaa" extends="struts-default" namespace="/">
			
			<!-- action标签:配置action访问路径 -->
			<action name="hello" class="action.HelloAction">
				
				<!-- result标签:根据action的方法返回值,配置到不同的路径里面-->
				<result name="ok">/index.jsp</result>
			</action>
		</package>
	</struts>

四、分模块开发、过滤器源码、struts常量:


1)分模块开发方式:
	作用: 解决代码来回修改的问题
	
	使用场景: 适用于多人合作开发
	
	做法:单独写配置文件,把配置文件引入到核心配置文件中
		<!-- 分模块开发:引入配置文件
			<include file="配置文件全路径"></include>
		 -->
	
2)过滤器源码:
	1)实现Filter接口
	2)过滤器在服务器启动时候创建,创建过滤器时候执行init方法
	
	init方法中主要加载配置文件
	- 包含自己创建的配置文件和struts2自带配置文件
		1)struts.xml
		2)web.xml

3)struts2常量:
    作用:struts2常量里面封装一部分功能
	 
	struts2的默认常量存放位置: 
		struts2-core-2.3.23.jar  --> org.apache.struts2  --> default.properties。
	
	修改常量值的三种方式:
		1)struts.xml中进行配置 (推荐使用)
			操作:在<struts>标签中使用<constant>标签进行配置.
				name:常量名. 
				value:常量值
			示例:<constant name="struts.i18n.encoding" value="UTF-8"></constant>
		
		2)在src下面创建 struts.properties,进行修改 (了解)
		3)在web.xml进行配置 (了解)

五、访问action的方式(三种)

第一种:使用action标签的method属性.在属性里面写执行的action的方法

Struts2_01---Struts2入门、xml配置及action访问方式

第二种:使用通配符方式实现

Struts2_01---Struts2入门、xml配置及action访问方式
Struts2_01---Struts2入门、xml配置及action访问方式

第三种:动态访问实现(不用)