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

微信公衆號:compassblog
html

歡迎關注、轉發,互相學習,共同進步!前端

有任何問題,請後臺留言聯繫java

一、Struts2框架概述

(1)、什麼是Struts2

Struts2是一種基於MVC模式的輕量級web框架,本質上至關於一個servlet。在MVC設計模式中,Struts2做爲控制器來創建模型與視圖的數據交互,以WebWork爲核心,採用攔截器機制來處理用戶的請求,使得業務邏輯控制器可以與ServletAPI徹底脫離,是致力於組件化和代碼重用的J2EE Web框架。web

(2)、Struts2優點與功能

  • 項目開源,使用及拓展方便。apache

  • 提供Exception處理機制。設計模式

  • Result方式的頁面導航,經過Result標籤很方便的實現重定向和頁面跳轉。瀏覽器

  • 經過簡單、集中的配置來調度業務類,使得配置和修改都很是容易。bash

  • 提供簡單、統一的表達式語言來訪問全部可供訪問的數據。微信

  • 提供標準、強大的驗證框架和國際化框架。網絡

  • 提供強大的、能夠有效減小頁面代碼的標籤。

  • 提供良好的Ajax支持。

  • 擁有簡單的插件,只需放入相應的JAR包,任何人均可以擴展Struts2框架,好比自定義攔截器、自定義結果類型、自定義標籤等,爲struts2定製須要的功能,不須要什麼特殊配置,而且能夠發佈給其餘人使用。

  • 使用智能的默認設置就能夠完成大多數項目程序開發所須要的功能,不須要另外進行繁瑣的設置。

二、搭建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 name="hello" namespace="/demo" extends="struts-default" >
        <action name="HelloAction" class="com.struts2.demo.HelloAction" method="demo" >
            <result name="success">/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容器,到瀏覽器地址欄訪問測試,結果以下圖:


本項目執行環境:jdk1.七、Tomcat7.0

三、Struts2訪問流程


注:圖片源於網絡。關於攔截器相關內容,後期會持續更新!

四、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系列一」 獲取本項目源碼


若是你認爲這篇文章有用,歡迎轉發分享給你的好友!

本號文章能夠任意轉載,轉載請註明出處!

原文連接:mp.weixin.qq.com/cgi-bin/app…

您可能還喜歡:

                                                關注微信公衆號,瞭解更多

                                                      

相關文章
相關標籤/搜索