python從入門到放棄,Struts2入門到放棄

 2023-10-18 阅读 23 评论 0

摘要:寫在前面------------------------------------------------------------------------- 本文章主要從三個方面來學習Struts2框架 , 分別是 struts2登錄實例 和 struts2工作流程與工作原理 及在開發中注意到問題 , 之所以把例子放在前面來說,是為了可以使學習者通過代碼來學習框

寫在前面-------------------------------------------------------------------------

本文章主要從三個方面來學習Struts2框架 ,

分別是 struts2登錄實例 和 struts2工作流程與工作原理 及在開發中注意到問題 ,

之所以把例子放在前面來說,是為了可以使學習者通過代碼來學習框架,畢竟"實踐出真知"~

然后在根據寫的實例來分析Struts2的工作流程和實現原理,最后是總結Struts中的問題~

python從入門到放棄?一,Struts2實現登錄的實例

1.jar包下載

?? 以下的jar包是搭建環境所需要的,請根據鏈接進行下載

??? Asm-3.3: http://www.java2s.com/Code/Jar/a/Downloadasm33jar.htm?

???? Asm-commons-3.3: http://www.java2s.com/Code/Jar/a/Downloadasmcommons33jar.htm

???? Asm-tree-3.3: http://www.java2s.com/Code/Jar/a/Downloadasmtree33jar.htm

awk從放棄到入門???? Commons-fileupload1.3: http://mvnrepository.com/artifact/commons-fileupload/commons-fileupload/1.3

??? Commons-io-2.6: http://mirror.bit.edu.cn/apache//commons/io/binaries/commons-io-2.6-bin.tar.gz

??? Commons-lang3-3.7: http://mirror.bit.edu.cn/apache//commons//lang//binaries/commons-lang3-3.7-bin.tar.gz

??? Freemarker-2.3.20: http://mvnrepository.com/artifact/org.freemarker/freemarker/2.3.20

?? Javassist-3.11: http://mvnrepository.com/artifact/javassist/javassist/3.11.0.GA

?? Log4j-api2.9.1: http://mirror.bit.edu.cn/apache/logging/log4j/2.9.1/apache-log4j-2.9.1-bin.tar.gz

struts2工作原理、?? Log4j-core-2.3: http://mirror.bit.edu.cn/apache/logging/log4j/2.9.1/apache-log4j-2.9.1-bin.tar.gz

?? Ognl-3.0.19: http://mvnrepository.com/artifact/ognl/ognl/3.0.19

?? Struts2-core-2.5.13: http://www.java2s.com/Code/Jar/s/Downloadstruts2core212jar.htm

?? Xwork-croe-2.2.3: http://www.java2s.com/Code/Jar/x/Downloadxworkcore223jar.htm

2.創建web項目,搭建Struts2環境

  New-project-選擇web下的Dynameic Web Project(動態web項目)

struts1教程?  

  選擇完成后next

  

  紅框:項目的名字

  籃框:項目的位置

  黃框:tomcat版本

AE從入門到放棄,  完成后next

  

  不用管繼續Next

  

  到這里將黃框的選項打上勾,會生成web.xml文件,然后Finish

  一個動態的Web項目已經建成

go語言從入門到放棄、  導入jar包,目標:lib目錄下

  

  下一步配置web.xml中的struts2的過濾器和攔截器,這一步是重要的一步,當你啟動服務器時,會根據這個文件進行初始化,根據web..xml文件中的配置,加載所有的配置文件

  (注意:在struts2-core-2.1.3之前過濾器為filterdispatcher ,之后為后面StrutsPrepareFilter和StrutsExecuteFilter)

  

  接下來配置struts2的核心文件-struts.xml,這個文件可以用過濾器來理解,用戶發來請求經過該文件進行過濾,找到對應的action來進行對應的邏輯處理

struts和struts2、  下面是為了實現登錄來編寫的struts.xml的例子

?  

  在struts.xml中,是采用package來管理各種action

  Package中的name指定了該包的命名空間

  Extends是說當前這個包繼承自struts-default包,這個包可以在struts2-core-2.5.13.jar中找到

  Class指定了邏輯處理類的位置,method制定了邏輯處理類中進行邏輯處理的方法,返回類型固定,為String類

請簡述Struts2開發環境的搭建步驟、  Result指的是返回的字符串,根據name與返回的字符串進行對比,返回相應的頁面,

  注意:1.class可以用鼠標上移的方法來查看位置是否正確

    2.起名時要互相對應(method,result),否則回報錯:

  

  現在環境已經搭建完成,下面進行邏輯處理類和jsp的編寫

2. JSP? OR 邏輯處理類? J

struts2官網。  JSP;

  根據struts.xml的配置進行jsp的編寫,一共需要三個 ,分別是登錄的login.jsp,登錄成功的success.jsp,登錄失敗的error.jsp

  a) login.jsp

   

  b) success.jsp(此頁面運用了jsp九大內置對象的request,來實現了取值)

  

struts2還有人用嗎、  a) error.jsp

  

?

  注意:1.登錄頁面中form表單提交的 action ,要與struts.xml進行對應

???  ? 2.登錄成功的頁面和失敗的頁面名稱要與struts.xml中result的返回頁面對應

  邏輯處理類:

簡述struts2執行流程?  

  因為要實現登錄的效果,所以我們定義了username和password,生成get,set方法

  繼承了ActionSupport類,這個類主要是方便實現我們自己的action,大多數情況下都會繼承com.opensymphony.xwork2.ActionSupport類,并重寫此類里的public String execute() throws Exception方法。因為此類中實現了很多的實用借口,提供了很多默認方法,這些  默認方法包括國際化信息的方法、默認的處理用戶請求的方法等,這樣可以大大的簡化Acion的開發。

  我們創建了execute的方法,來進行登錄的邏輯判斷,登錄的信息必須是admin 123 才會登錄成功,且不為空才會返回success,否則會返回error

  注意:這里返回的String類型的值必須與struts.xml中result的name對應

  到此為止,我們已經將struts2的環境搭建完成,并實現了登錄的功能

從入門到放棄的幾本書,?  項目結構:

  

  測試結果

  a)登錄頁面:

  

  b)登錄成功:

struts2最新版本?  

  c)登錄失敗:

   

二,Struts2工作流程和實現原理 

1,工作流程:

  用戶發送請求—web.xml中的filterdispatcher---struts.xml---找到對應的action---邏輯處理----返回一個String類型的結果---result根據返回的結果找到jsp的位置—將結果返回到jsp

編程為何說從入門到放棄,  注意:struts2的核心控制器(過濾器)在2.1.3版本之前為FilterDispatcher,后面的版本為StrutsPrepareFilter和StrutsExecuteFilter

2.實現原理:

   

  根據上圖我們來進行梳理:

    a)???? 收到請求的服務器首先被初始化(上述登錄實例用的是tomcat服務器)

    b)??? 這個請求經過過濾器file,被filteredispatcher調用,filterdispatcher會訪問ActionMapper來決定是否需要調用某個Action

C語言從入門到放棄?    c)???? 如果需要調用,則將請求發給ActionProxy, ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類?

    d)??? ActionProxy創建一個ActionInvocation的實例。?

    e)???? ActionInvocation實例使用命名模式來調用,在調用Action的過程前后,會影響到相關攔截器(Intercepter)的調用。?

    f)????? 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是(但不總是,也可 能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。

    g)??? 將請求的結果返回給請求發送者

三.關于struts2應該注意的問題.

1.核心控制器(過濾器) StrutsPrepareAndExecuteFilter

?  StrutsPrepareAndExecuteFilter與struts2以前版本中的FilterDispatcher一樣。它是struts2框架的核心控制器,該控制器作為一個Filter運行在web應用中,它負責攔截所有的用戶請求,當用戶請求到達時,該Filter會過濾用戶請求,如果用戶請求以action結尾,該請求就會被轉入struts2框架來處理。

  Struts2框架獲取*.action請求后,將根據*.action請求的前面部分決定調用那個業務邏輯組件,例如:對于login.action請求,Struts2調用名為login的Action來處理該請求

  2.1.3之前的版本FilterDispatcher,后面版本為StrutsPrepareFilter和StrutsExecuteFilter

2.struts2的作用(為什么要有這個框架,優缺點)

  優點:

    (1)實現MVC模式,結構清晰,使開發者只關注業務邏輯的實現。

    (2)有豐富的標簽庫,如能靈活動用,則能大大提高開發效率

  缺點:

    (1)???? 跳轉到頁面需要配置 配置文件? 有幾個頁面就要配置幾個路徑

    (2)???? 對Servlet的依賴性過強。Struts處理Action時必需要依賴ServletRequest和ServletResponse,所以它擺脫不了Servlet容器。

    (3)???? Action類中使用全局變量,值容易亂

3,過濾器和攔截器的區別

  過濾器:是在java web中,你傳入的發出請求時過濾掉一些信息,或者提前設置一些參數,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設置字符集,或者去除掉一些非法字符

  攔截器:是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法后調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前打印出字符串(或者做其它業務邏輯的操作),也可以在你調用方法后打印出字符串,甚至在你拋出  異常的時候做業務邏輯的操作。

? 區別:

  攔截器是基于java的反射機制的,而過濾器是基于函數回調。

  攔截器不依賴與servlet容器,過濾器依賴與servlet容器。

  攔截器只能對action請求起作用,而過濾器則可以對所有的請求起作用。

  攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。

  在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次

4.Action中java的反射機制

  概念:主要是指程序可以訪問,檢測和修改它本身狀態或行為的一種能力,并能根據自身行為的狀態和結果,調整或修改應用所描述行為的狀態和相關的語義。

?  ?反射是Java中一種強大的工具,能夠使我們很方便的創建靈活的代碼,這些代碼可以再運行時裝配,無需在組件之間進行源代碼鏈接。

  在剛開始學習java的時候,寫的java程序的時候都會生成.class文件,所謂反射機制就是把所有的類文件放到一起,再另一個地方需要用的時候通過名字對應的方式去類中匹配。

  

?  在action里創建了一個方法 ,用來顯示所用表里所有內容

  在action這個方法里并沒有像往常一樣創建session來實現存值

  

  在jsp里面直接在迭代器里的value里直接寫上list集合

  下面的value里直接寫上對象名就ok

  如jsp文件需要用的時候通過名字來調用,比如說list,再action內創建集合,再頁面里通過name來與action里的list對應,jsp頁面就會取到list集合中的內容,

  這里推薦一篇文章: 深入理解Jave反射,有興趣可以看看,速成反射的就算了吧~

Struts2從入門到放棄到此結束~

項目地址: https://pan.baidu.com/s/1jIouDka 密碼: 7nzn

如有不解,請加本人qq:1196319567~

感謝博客園提供的平臺~

歡迎同行評論,交流~

轉載于:https://www.cnblogs.com/mmmmyblog/p/7867419.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/150177.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息