一、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。