Struts第一天

課程回顧:

 

1. 泛型

2. 反射

3. 註解

4. 註解優化BaseDao

 

目標:

         1.寫一個mystruts框架

         2.Strtus框架

 

1. 寫一個mystruts框架

MVC模式:

         Model   模型

         View    視圖

         Control  控制器

 

Control  控制器

         Servlet起到控制器作用!

         ----》 獲取請求數據封裝                                  【BeanUtils可以優化,(調用方法?)】

         ----》 調用Service處理業務邏輯       

         ----》 跳轉(轉發/重定向)              【跳轉代碼寫死】

 

傳統mvc開發總結:

         1. 跳轉代碼寫死,不靈活

         2. 每次都去寫servletweb.xml中配置servlet

                   (配置目的:請求, Servlet處理類)

 

 

需求:

         登陸、註冊

         登陸成功   --à   首頁

註冊成功     

                      --à   登陸

                   --à   首頁

 

 

 

 

 

2. 基於mvc模式的應用框架之struts

Struts就是基於mvc模式的框架!

(struts其實也是servlet封裝,提高開發效率!)

 

 

Struts開發步驟:

1. web項目,引入struts - jar包

2. web.xml中,引入struts的核心功能

                   配置過濾器

3. 開發action

4. 配置action

         src/struts.xml

 

1. 引入8個jar文件

2. web.xml

<!-- 引入struts核心過濾器 -->

    <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>

3. 開發Action

// 開發action處理請求

public class HelloAction extends ActionSupport {

   

    // 處理請求

    public String execute() throws Exception {

        System.out.println("訪問到了action,正在處理請求");

        System.out.println("調用service");

        return "success";

    }

}

 

4. 配置action :  src/struts.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

          "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="xxxx" extends="struts-default">

    <action name="hello" class="cn.itcast.action.HelloAction" method="execute">

         <result name="success">/success.jsp</result>

    </action>

    </package>

</struts>

 

 

3. Struts框架學習

a. 框架學習概述

SSH框架在mvc模式的的位置作用:

 

 

框架:

         軟件中的框架,是一種半成品; 我們項目開發需要在框架的基礎上進行!

         因爲框架已經實現了一些功能,這樣就可以提高開發效率!

 

b. Struts2框架

Struts1最早的一種基於mvc模式的框架;

Struts2 是在Struts1的基礎上,融合了xwork的功能;

也可以說,Struts2 =struts1  +  xwork

 

Struts2框架預先實現了一些功能:

         1. 請求數據自動封裝

         2. 文件上傳的功能

         3. 對國際化功能的簡化

         4. 數據效驗功能

         ……………….

 

c.Struts2開發流程:

版本: 2.3

Ø  引入jar文件

commons-fileupload-1.2.2.jar            【文件上傳相關包】

commons-io-2.0.1.jar

struts2-core-2.3.4.1.jar           【struts2核心功能包】

xwork-core-2.3.4.1.jar           【Xwork核心包】

ognl-3.0.5.jar                                        【Ognl表達式功能支持表】

commons-lang3-3.1.jar         【struts對java.lang包的擴展】

freemarker-2.3.19.jar           【struts的標籤模板庫jar文件】

javassist-3.11.0.GA.jar          【struts對字節碼的處理相關jar】

 

Ø  配置web.xml

 

Tomcat啓動-à 加載自身web.xml---à加載所有項目的web.xml

         通過在項目的web.xml中引入過濾器,

                   -àStruts的核心功能的初始化,通過過濾器完成

                   à filter 【

init/      啓動執行

doFilter/   訪問執行

destroy

<!-- 引入struts核心過濾器 -->

    <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>

 

 

struts2-core-2.3.4.1.jar

StrutsPrepareAndExecuteFilter  即爲核心過濾器

注意:

 使用的struts的版本不同,核心過濾器類是不一樣的!

 

Ø  開發Action

注意:

    1.action類,也叫做動作類; 一般繼承ActionSupport類

        即處理請求的類  (struts中的action類取代之前的servlet)

    2.action中的業務方法,處理具體的請求

        -à 必須返回String

        à  方法不能有參數

public class HelloAction extends ActionSupport {

    // 處理請求

    public String execute() throws Exception {}

}

 

Ø  配置struts.xml

 

 

c.Struts2執行流程

服務器啓動:

         1.加載項目web.xml

         2.創建Struts核心過濾器對象,執行filter à  init()

                   struts-default.xml,    核心功能的初始化

struts-plugin.xml,     struts相關插件

struts.xml                用戶編寫的配置文件

 

訪問:

         3.用戶訪問Action, 服務器根據訪問路徑名稱,找對應的aciton配置, 創建action對象

         4.執行默認攔截器棧中定義的18個攔截器

         5.執行action的業務處理方法

 

 

struts-default.xml, 詳解

 目錄:struts2-core-2.3.4.1.jar/struts-default.xml

 內容:

         1.bean節點指定struts在運行的時候創建的對象類型

         2.指定struts-default包  【用戶寫的package(struts.xml)一樣要繼承此包 】

                package  struts-default  包中定義了:

                          a.  跳轉的結果類型

                                   dispatcher    轉發,不指定默認爲轉發

                                   redirect       重定向

                                   redirectAction  重定向到action資源

                                   stream        (文件下載的時候用)

                          b. 定義了所有的攔截器

                                     定義了32個攔截器!

                                     爲了攔截器引用方便,可以通過定義棧的方式引用攔截器,

                              此時如果引用了棧,棧中的攔截器都會被引用!

                                  

                                   defaultStack

                                            默認的棧,其中定義默認要執行的18個攔截器!

 

 

                          c. 默認執行的攔截器棧、默認執行的action

                                   <default-interceptor-refname="defaultStack"/>

               <default-class-refclass="com.opensymphony.xwork2.ActionSupport" />

 

 

<interceptor

name="prepare"class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>

<interceptor

name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

 

攔截器(先睹爲快):

         攔截器功能與過濾器功能類似。

         區別:

                   共同點: 都攔截資源!

                   區別:

                            過濾器,攔截器所有資源都可以; (/index.jsp/servlet/img/css/js)

                            攔截器,只攔截action請求。

                           

                            攔截器是struts的概念,只能在struts中用。

                            過濾器是servlet的概念,可以在struts項目、servlet項目用。

 

 

// 面試題:攔截器什麼時候執行? (訪問/啓動)  先執行action類創建,先執行攔截器?

         //--》 1. 用戶訪問時候按順序執行18個攔截器;

         //---》 2. 先執行Action類的創建,再執行攔截器; 最後攔截器執行完,再執行業務方法

 

 

 

 

d.共性問題

問題1:Struts.xml配置文件沒有提示

解決a:

         找到struts-2.0.dtd文件,  拷貝到某個目錄:d:/dtd /..  (不要用中文目錄)

         讓MyEclipse關聯到上面dtd文件,

                   à windows àpreferences -à 搜索xml catalog

                   配置:

                            Location:    上面配置的dtd目錄

                            Key:     -//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN

解決b:

         或者,

                   讓機器連接互聯網,工具會自動下載dtd文件,緩存到MyEclipse中!

        

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章