一、什么是框架?
來源于建筑行業,如果建筑一個茅草屋,不需要框架,如果建造一個幾個億的摩天大樓,就需要框架。
小系統用框架浪費人力,中大型系統用框架。
軟件中的框架,是一種半成品。實現了一些基礎功能的軟件。
我們項目開發需要在框架的基礎上進行,因為框架已經實現了一些功能,這樣就可以提高開發效率!
二、struts2框架介紹
Struts1:是最早的一種基于mvc模式的框架。
Struts2:是在Struts1的基礎上,融合了xwork的功能。
也可以說,Struts2?=?struts1??+??xwork。
Struts2框架預先實現了一些功能:
1.?請求數據自動封裝
2.?文件上傳的功能
3.?對國際化功能的簡化
4.?數據效驗功能
……………….
三、Struts2開發流程
版本:?2.3.x
3.1引入jar文件
1、commons-fileupload-1.2.2.jar【文件上傳相關包】
2、commons-io-2.0.1.jar【處理IO的一些工具類包】
3、struts2-core-2.3.4.1.jar【struts2核心功能包】
4、xwork-core-2.3.4.1.jar【Xwork核心包】
5、ognl-3.0.5.jar【Ognl表達式功能支持表】
6、commons-lang3-3.1.jar【struts對java.lang包的擴展,是struts內部的實現,和我們開發沒有關系,但必須要】
7、freemarker-2.3.19.jar【struts的標簽模板庫jar文件】
8、javassist-3.11.0.GA.jar【struts對字節碼的處理相關jar,我們一般情況下用JDK自帶的字節碼處理,但Struts自帶了,在新版本里才提供的,2.1就不需要】
3.2配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><display-name>hellostruts2</display-name><!-- 其他攔截器,其他攔截器要放在struts上面,要不然無效,因為struts攔截了所有請求 --><filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>
web.xml的作用見:http://blog.csdn.net/zengmingen/article/details/50534678
Tomcat啟動-à?加載自身web.xml---à加載所有項目的web.xml,通過在項目的web.xml中引入過濾器,
-àStruts的核心功能的初始化,通過過濾器完成?à?filter?【init/啟動執行,doFilter/訪問執行,destroy】
struts2-core-2.3.4.1.jar 中的StrutsPrepareAndExecuteFilter??即為核心過濾器
注意:使用的struts的版本不同,核心過濾器類是不一樣的!
3.3開發Action
1.action類,也叫做動作類;?一般繼承ActionSupport類,即處理請求的類(struts中的action類取代之前的servlet)
2.action中的業務方法,處理具體的請求
-à必須返回String
à方法不能有參數
-à異常可有可無
public class HelloAction extends ActionSupport {
// 處理請求
public String execute() throws Exception {}
}
3.4配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">
<struts><!--package 定義一個包,包作用:管理action,通常一個業務模塊用一個包name包名不能重復 extends 當前包繼承自哪個包abstract 表示當前包是否為抽象包,抽象包不能有action的定義,否則運行時報錯。abstract=true:只有當前包被其他包繼承時才使用。namespace 默認"/",是訪問路徑的一部分。action 配置請求路徑與Action類的映射關系name 請求路徑名稱class 請求處理的action類的全名method 請求處理方法resultname action處理方式返回值type 跳轉的結果類型標簽體中指定跳轉的頁面--><package name="xxxx" extends="struts-default"><action name="hello" class="com.zengmg.strtus.HelloAction" method="execute"><result name="success">/success.jsp</result></action></package></struts>
續
?