Struts——一個web應框架。
Struts基于MVC的一個web開源框架,也是一個表示層的框架,只能用于Web項目。
一 優缺點:
(1)優點:
1)這是一個開源框架,能讓開發人員更深入的了解其內部實現機制和原理。
2)框架自帶的標簽庫,非常靈活,提高了開發人員的工作效率。
3)頁面導航使系統的導航線路更加清晰,通過框架配置文件,就可以配置系統各個頁面的導航關系,能極大提高維護的效率和質量。
4)提供異常處理機制。
5)數據庫連接池管理,開發人員可以花更多精力在業務邏輯的實現上。
(2)缺點:
1)學習成本較高
2)Struts將MVC的控制層又進行了分層,增加了復雜度。
二 工作原理
通過一副圖展示一下:
(1)Web客戶端發出請求,被在web.xml配置文件中配置的ActionServlet截獲,同時暴露了struts-config.xml配置文件的路徑,調用該配置文件。
(2)ActionServlet通過讀取struts-config.xml配置文件,將請求信息映射至業務邏輯層Action工具類。
(3)Action類與Model層進行交互,實現數據的增刪改查等操作。
(4)Action對數據操作完畢,將命令返回至ActionServlet。
(5)ActionServlet收到該命令之后,轉發到相應的jsp頁面。
(6)JSP給予Web客戶端一個響應。
三 實例(用戶登錄)
1 jsp頁面代碼:關鍵action與web.xml配置的匹配攔截相一致,同時method采用post,安全性較高。
<%@ 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>用戶登錄</title></head><body> <form action="login.do" method="post"> 用戶:<input type="text" name="username"><br> 密碼:<input type="text" name="passWord"><br> <input type="submit" value="登錄"> </form></body></html> 2 web.xml配置文件:配置servlet和攔截web客戶端的url請求。<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> 3 創建表單實體類package com.liming.struts;import org.apache.struts.action.ActionForm;/** * * 登錄ActionForm,負責表單收集數據 * 表單的屬性必須和ActionForm中的get和set的屬性一致 * @author LM * */@SupPRessWarnings("serial")public class LoginActionForm extends ActionForm { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }} 4 創建業務邏輯Action工具類:用來接收請求信息,操作數據,并返回轉向信息。package com.liming.struts;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;/** * 登錄Action * 負責取得表單數據,調用業務邏輯、返回轉向信息 * @author LM * */public class LoginAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginActionForm laf = (LoginActionForm)form; String username = laf.getUsername(); String password = laf.getPassword(); if("admin".equals(username) && "admin".equals(password)){ //登錄成功 return mapping.findForward("success"); }else { //登錄失敗 return mapping.findForward("error"); } } } 5 Struts核心配置文件,配置ActionForm, ActionBean,異常的轉向,國際化資源文件的位置, 插件(便于和Spring集成)等<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config> <form-beans> <form-bean name="loginForm" type="com.liming.struts.LoginActionForm"/> </form-beans> <action-mappings> <action path="/login" type="com.liming.struts.LoginAction" name="loginForm" scope="request" > <forward name="success" path="/success.jsp"/> <forward name="error" path="/error.jsp"/> </action> </action-mappings></struts-config>總結:
Struts框架是MVC設計模式的一個優秀實現。 Struts定義了通用的Controller(控制器),通過配置文件(通常是 Struts -config.xml)隔離Model(模型)和View(視圖),以Action的概念以對用戶請求進行了封裝,使代碼更加清晰易讀。 Struts還提供了自動將請求的數據填充到對象中以及頁面標簽等簡化編碼的工具。
新聞熱點
疑難解答