【SSH框架】之Struts2系列(一)
阿新 • • 發佈:2018-02-19
核心 mapping 調度 fault code 組件 -i -c params
微信公眾號:compassblog
歡迎關註、轉發,互相學習,共同進步!
有任何問題,請後臺留言聯系
1、Struts2框架概述
(1)、什麽是Struts2
Struts2是一種基於MVC模式的輕量級web框架,本質上相當於一個servlet。在MVC設計模式中,Struts2作為控制器來建立模型與視圖的數據交互,以WebWork為核心,采用攔截器機制來處理用戶的請求,使得業務邏輯控制器能夠與ServletAPI完全脫離,是致力於組件化和代碼重用的J2EE Web框架。
(2)、Struts2優勢與功能
- 項目開源,使用及拓展方便
- 提供Exception處理機制。
- Result方式的頁面導航,通過Result標簽很方便的實現重定向和頁面跳轉。
- 通過簡單、集中的配置來調度業務類,使得配置和修改都非常容易。
- 提供簡單、統一的表達式語言來訪問所有可供訪問的數據。
- 提供標準、強大的驗證框架和國際化框架。
- 提供強大的、可以有效減少頁面代碼的標簽。
- 提供良好的Ajax支持。
- 擁有簡單的插件,只需放入相應的JAR包,任何人都可以擴展Struts2框架,比如自定義攔截器、自定義結果類型、自定義標簽等,為struts2定制需要的功能,不需要什麽特殊配置,並且可以發布給其他人使用。
- 使用智能的默認設置就可以完成大多數項目程序開發所需要的功能,不需要另外進行繁瑣的設置。
2、搭建Struts2框架,完成第一個應用實例
(1)、新建一個動態Web項目HelloProject,將Struts2所需要的基本jar包導入項目的lib文件夾下,如下圖:
(2)、在src下新建一個Action類(普通的Java類)HelloAction,代碼如下:
package com.struts2.demo; public class HelloAction { public String demo(){ System.out.println("第一個Struts2項目實例!"); return "sucess"; } }
(3)、在src下新建一個struts.xml文件,具體代碼配置和說明如下:
<?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> <!-- package:將Action配置封裝.就是可以在Package中配置很多action. name屬性: 給包起個名字,起到標識作用.隨便起.不能其他包名重復. namespace屬性:給action的訪問路徑中定義一個命名空間 extends屬性: 繼承一個 指定包 abstract屬性:包是否為抽象的; 標識性屬性.標識該包不能獨立運行.專門被繼承 --> <package name="hello" namespace="/demo" extends="struts-default" > <!-- action元素:配置action類 name屬性: 決定了Action訪問資源名. class屬性: action的完整類名 method屬性: 指定調用Action中的哪個方法來處理請求 --> <action name="HelloAction" class="com.struts2.demo.HelloAction" method="demo" > <!-- result元素:結果配置 name屬性: 標識結果處理的名稱.與action方法的返回值對應. type屬性: 指定調用哪一個result類來處理結果,默認使用轉發. 標簽體:填寫頁面的相對路徑 --> <result name="success" type="dispatcher" >/hello.jsp</result> </action> </package> </struts>
(3)、在web.xml文件中配置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"> <display-name>HelloProject</display-name> <!-- 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> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
(4)、在WebContent下新建一個hello.jsp文件,具體代碼如下:
<%@ 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>Insert title here</title> </head> <body> <h1>第一個Struts2項目發布測試成功!</h1> </body> </html>
(5)、發布第一個Struts2項目HelloProject到Tomcat容器,到瀏覽器地址欄訪問測試,結果如下圖:
3、Struts2訪問流程:(圖片源於網絡)
4、Struts2配置文件詳解:即struts.xml文件
(1)、package
<!-- package:將Action配置封裝.就是可以在Package中配置很多action. name屬性: 給包起個名字,起到標識作用.隨便起.不能其他包名重復. namespace屬性:給action的訪問路徑中定義一個命名空間 extends屬性: 繼承一個 指定包 abstract屬性:包是否為抽象的; 標識性屬性.標識該包不能獨立運行.專門被繼承 --> <package name="hello" namespace="/" extends="struts-default" >
(2)、action
<!-- action元素:配置action類 name屬性: 決定了Action訪問資源名. class屬性: action的完整類名 method屬性: 指定調用Action中的哪個方法來處理請求 --> <action name="HelloAction" class="com.struts2.demo.HelloAction" method="demo" >
(3)、result
<!-- result元素:結果配置 name屬性: 標識結果處理的名稱.與action方法的返回值對應. type屬性: 指定調用哪一個result類來處理結果,默認使用轉發. 標簽體:填寫頁面的相對路徑 --> <result name="success">/hello.jsp</result>
關註微信公眾號compassblog,後臺回復 “Struts2系列一” 獲取本項目源碼
原文鏈接:https://mp.weixin.qq.com/s?__biz=MzU5MTE0ODcwNQ==&mid=2247483946&idx=1&sn=fc4b41ce8c447e09ace0cc86058f48e9&chksm=fe3221e4c945a8f2d87897a18ea9cd190b9669b732b4f3d678cf86de8d84228ed4df021ac11d#rd
如果你認為這篇文章有用,歡迎轉發分享給你的好友!
本號文章可以任意轉載,轉載請註明出處!
掃碼關註微信公眾,了解更多
【SSH框架】之Struts2系列(一)