1. 程式人生 > >Struts2_day01---Struts2入門、xml配置及action訪問方式

Struts2_day01---Struts2入門、xml配置及action訪問方式

一、Struts2概述


應用於 JavaEE三層結構中的 web層框架

struts2作用:解決BaseServlet需要複雜程式碼的問題。(BaseServlet需要寫到底層反射,較複雜)

servlet和action區別:
	Servlet:預設在第一次訪問時候建立,只建立一次。是單例項物件
	Action:訪問時候建立,每次訪問都會建立。是多例項物件

版本:struts-2.3.24-all.zip

瞭解:web層常用框架:struts2、springMVC

作用流程:

在這裡插入圖片描述

二、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執行過程:

在這裡插入圖片描述

三、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的方法

在這裡插入圖片描述

第二種:使用萬用字元方式實現

在這裡插入圖片描述
在這裡插入圖片描述

第三種:動態訪問實現(不用)