1. 程式人生 > >【SSH框架】之Struts2系列(一)

【SSH框架】之Struts2系列(一)

核心 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系列(一)