1. 程式人生 > >一、Struts2快速入門

一、Struts2快速入門

概述

Struts2是一個基於MVC設計模式的Web層框架,是Struts1的下一代產品,在 struts1和WebWork的技術基礎上進行了合併的全新的Struts 2框架。
其全新的Struts 2的體系結構與Struts 1的體系結構差別巨大。
Struts 2以WebWork為核心,採用攔截器的機制來處理使用者的請求,這樣的設計也使得業務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品。
雖然從Struts 1到Struts 2有著太大的變化,但是相對於WebWork,Struts 2的變化很小。

Struts2框架的快速入門

1.下載開發包
官網地址,我這裡使用的是2.3.24的版本,在這裡可以看到所有版本
下載完後解壓struts-2.3.24-all.zip包後,會看到以下目錄,這裡簡單介紹下:

  • apps:Struts2框架提供了一些示例模板
  • libs:Struts2框架開發的jar包
  • docs:Struts2框架開發文件
  • src:Struts2框架原始碼

2.整合Struts2的jar包
當你開啟開發包的libs目錄的時候,你會發現多達107個jar包,顯然這並不是Struts2必須的核心jar包,那麼如果找到他的核心jar包呢?
我們可以從他的示例模板入手,找到開發包下的apps目錄,將struts2-blank.war該模板用解壓工具解壓,這個模板是一個空白模板,它裡面包含了Struts2的最核心的13個jar包,如下所示:
在這裡插入圖片描述


將這目錄下的所有jar包拷貝至你的web專案的lib目錄下即可。

3.配置Struts2攔截器
前面介紹也說了Struts2是採用攔截器的機制來處理使用者的請求,因此應該猜到這一步我們需要在web.xml中配置filter過濾器,改過濾器就是Struts2框架寫好的。如下所示:

<?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" id="WebApp_ID" version="2.5">
<!-- 配置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>

至於該StrutsPrepareAndExecuteFilter過濾器的全路徑名稱我是怎麼找到的呢?
這裡介紹2種方式:
第一種還是檢視struts2-blank.war這個示例模板,開啟WEB-INF\web.xml就可以輕鬆copy了;
另一種方式就是檢視引入的jar包在eclipse上的預覽,找到Web App Libraries,這裡可以檢視到所有引入的jar包,然後找到struts2-core-2.3.24.jar>org.apache.struts2.dispatcher.ng.filter>StrutsPrepareAndExecuteFilter.class,這樣選擇copy全路徑就ok了.例如:
在這裡插入圖片描述

4.建立響應請求的類
隨便建立一個類,例如HelloAction,字尾Action也不是必須的,只是一種Struts2的使用習慣,然後新增一個響應請求的方法,如下所示:

package blog.csdn.net.mchenys;

public class HelloAction {

	/**
	 * 方法許可權必須public
	 * 返回值必須String型別
	 * 方法引數必須是空引數
	 * @return
	 */
	public String helloWorld() {
		System.out.println("hello struts2");
		return null;
	}
}

5.建立Struts2的配置檔案
Struts2會根據對映檔案內配置的屬性,通過反射來執行對應類中的對應方法,該檔名稱必須是struts.xml,存放路徑必須要放在web工程的src目錄下,例如:

<?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">

<struts>

	<!-- 包結構 
		name="default" :預設包
		namespace="/"  :匹配的路徑以/開頭
		extends="struts-default" :預設
	-->
	<package name="default" namespace="/" extends="struts-default">
	
		<!-- 配置請求對映的action
			name="hello" :結合namespace一起使用就是 /hello, 那麼匹配的路徑就是/hello的請求
			class="blog.csdn.net.mchenys.HelloAction  :響應類的全路徑名稱
			method="helloWorld"	:響應類中對應的響應方法
		 -->
		<action name="hello" class="blog.csdn.net.mchenys.HelloAction" method="helloWorld"/>
	</package>

</struts>

至於struts.xml的預設配置,以及schema約束去哪裡查詢,最簡單快捷的方式還是檢視開發包下的struts2-blank.war這個示例模板,找到struts-2.3.24-all\struts-2.3.24\apps\struts2-blank\WEB-INF\src\java下的struts.xml,如下所示,copy到web工程做修改即可.
在這裡插入圖片描述

6.測試響應請求
建立測試的jsp頁面,新增一個a連線,然後請求路徑末尾以/hello結尾即可,因為這個匹配路徑必須要和struts.xml中配置的對應,其中/對應的是配置檔案中namespace,而hello對應的是action標籤中的name屬性. 如下所示demo1.jsp,建立在WebContent的demo資料夾內.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>快速部署Struts2</title>
</head>
<body>

	<a href="${pageContext.request.contextPath }/hello">hello Struts2</a>
</body>
</html>

至此,就可以啟動web專案,然後在瀏覽器位址列中輸入http://localhost:8080/web專案名/demo/demo1.jsp,例如:
在這裡插入圖片描述
此時,點選a連結hello Struts2,如果可以看到控制檯輸出了hello struts2的字串,
在這裡插入圖片描述
說明Struts2成功響應了請求,它成功的呼叫了響應類的helloWorld響應方法,至此Struts2的部署ok。