標籤:效率 一個 完整 exception pack 需求 匯入 str 業務
在javaweb開發過程中,如果只使用servlet,jdbc,jsp進行開發,也可以遵從MVC的模式,這時候,servlet相當於control層,屬於負責處理商務邏輯的控制器,同時也需要對擷取和返回資料,連結的跳轉和轉寄進行封裝。那麼就顯得比較臃腫了。(類似iOS開發中的MVC,如果viewController負擔了資料處理,業務處理和頁面跳轉邏輯,會變得臃腫不堪,所以後面MVVM,VIP等模式進一步細化了模組劃分)。
struts架構,是apache公司開發的一款基於servlet封裝而成的架構,遵從MVC的設計模式,能進一步提高開發效率。
如果脫離struts架構,使用Servlet做項目開發,在項目啟動以後,每個模組中的各個介面,都會被可能寫成一個Servlet,每個Servlet在伺服器啟動一個都會在第一訪問(可以配置)建時候被建立一個servlet對象。Struts架構,可以通過過濾器,把Servlet降低為一個,通過區分不同的action,來區分不同的業務功能介面,某種程度上最佳化了Servlet的實現。
structs2架構的使用:
1,匯入struts2的jar包:
struts2-core-xxx.jar 核心功能包
xwork-core-xxx.jar xword核心包
commons-fileupload-xxx.jar 檔案上傳功能包
commons-io-xxx.jar io讀寫支援檔案上傳功能
ognl-xxx.jar ognl運算式支援包
commons-langxxx.jar lang的擴充
freemarker-xxx.jar 標籤模版庫
javassist-xxx.jar 位元組碼處理
其他按需求匯入
2,配置web.xml
主要是引入過濾器,StrutsPrepareAndExecuteFilter,核心過濾器
<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>
3,開發Action
action是動作類,通常繼承ActionSupport
action進行業務處理,執行具體的請求。
必須返回字串類型String
方法無參數。
package actions;import java.io.PrintWriter;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {/** * */private static final long serialVersionUID = 1L;public String login() throws Exception {HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.write("success"); out.close(); return null;}}
如果返回具體的字串,用戶端會展示struts.xml中配置的result返回頁面,返回null,然後進行response write方法,可以單純返回字串,相當於api介面
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 name="actions" extends="struts-default"> <action name="login" class="actions.LoginAction" method="login"> <result name="success">/index.jsp</result> </action> </package> </struts>
name: 訪問的介面uri
class:具體執行的Action類,帶完整包名
method:Action處理的具體函數名
(21) java web的struts2架構的使用