struts2入門

weixin_33797791發表於2017-05-16

[TOC]

struts2

直譯:支柱

在Struts1和webwork框架基礎上發展的全新的框架

Struts2核心功能:

1、允許POJO(Plain Old Java Object)物件作為Action
2、Action的execute方法不再與ServletAPI耦合,更易測試
3、支援更多的檢視技術(JSP、FreeMarker、Velocity)
4、基於SpringAOP思想的攔截器機制,更易擴充套件
5、更強大、更易用輸入校驗機制
6、整合Ajax支援

struts2 入門

導包

5651148-f49fd312196c4b97.png
bags.png

配置Struts2核心過濾器web.xml

<?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_3_0.xsd" id="WebApp_ID" version="3.0">
  <filter>
   <filter-name>strust2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
   
  </filter>
  <filter-mapping>
  <filter-name>strust2</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

建立Action繼承ActionSupport

public class UserAction extends  ActionSupport {

    
    public String exectute(){
        System.out.println("我是struts2");
        return "ok";
        
    }
    
}

配置Action的訪問路徑

配置檔名必須是struts.xml,必須放在src下面,xml檔案需要引入dtd約束

<?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>
    <constant name="struts.devMode" value="true"></constant>
    <package name="default" namespace="/" extends="struts-default">
 
        <!--配置action  -->
        <action name="hello" class="com.wxb.action.UserAction"  method="exectute">
        <result name="ok">welcome.jsp</result>
        </action>
    </package>
 </struts>

對應關係

  • hello 對應action 標籤name的值 ----------請求入口
  • method對應action類中的方法 ------------請求方法
  • action方法返回值對應result標籤裡面的name值 ------------請求返回值
  • 響應地址/welcome.jsp 對應跳轉地址 ----------------請求地址

執行流程中的預設:

  • 預設action類是ActionSupport** (可省略)
  • 預設method=“execute” (可自由命名)
  • 預設result name=“success” (可自由命名)
  • 預設響應是轉發 (dispatcher) 可改為重定向

NOTICE:
在使用父類ActionSupport省略的時候 action裡的name 必須為預設的success

異常處理


      <!-- 異常全域性處理 -->
        <global-results>
      <result name="error" type="redirect">error.jsp</result>
        </global-results>
       <global-exception-mappings>
        <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
        </global-exception-mappings>

攔截器

<1>自帶攔截器 modelDriven** Exceptioon等

<2>自定義攔截器
場景舉例:統計方法執行時間

-建立自定義攔截器 需繼承AbstructInterceptor

-配置 Interceptors

-相應的action方法加上自定義攔截器

-相應的action方法補上default-Stack預設攔截器

動態訪問

  • 訪問方法不寫

  • 前端訪問入口是 user!方法

  • 方法返回值變成入口訪問的方法

<action name="user" class="com.wxb.action.UserAction">
      <result name="insertUser" type="redirectAction">user!selectUser</result>
      <result name="deleteUser" type="redirectAction">user!selectUser</result>
      <result name="updateUser" type="redirectAction">user!selectUser</result>
      <result name="selectUser">index.jsp</result>
      </action>
      

相關文章