?爲何要學這個技術(有什麼優秀的地方,能夠解決哪些問題?

今天來總結一下Struts2的知識點,學習編程個人思路通常是這樣的:html

    ① why ?爲何要學這個技術(有什麼優秀的地方,能夠解決哪些問題?)。前端

    ②what ? 這個技術是什麼玩意?有什麼牛逼的地方值得咱們學習,這個技術的核心是什麼。java

    ③How ?  怎麼學?基本技術都是本身自學的,個人學習思路就是,看視頻,拿例子來學習知識,在敲代碼的過程當中理解問題。在此期間若是遇到不懂得或者是感受很模糊的地方,及時的上網找相應的博客進行理解。基本上就是在敲代碼中學習技術。而且對技術要及時的進行總結,可是我不推薦一個知識點總結一次,這樣根本沒有那麼多的時間,最好的是看完以後,從全局出發,對整個知識進行積累和總結,在總結的過程當中,多看一下其餘人的博客,集思廣益,收穫會很大。mysql

    ④Do !  作!作是什麼?是理論到實踐的必經之路,是你成爲大牛的必經之路,找個項目,認真的作完,對一些經常使用的技巧和方法進行概括整理,發佈到本身的博客上,在作項目的時候,有不少的途徑,我最喜歡 的是看視頻了,只要你前面沒偷懶,認真的學習了,在這個時候你就會發現都是so easy的事情。在作項目的時候,要注意的是,遇到不會的,或者是有新的理解必定要去探索,這樣會知道的愈來愈多,同時爲了防止遺忘,及時的對博客進行更新,或許你遇到的問題也多是別人遇到的,這樣你的人氣值就上來了!web

  好比對Struts2 的學習。其實大約一週前就學完了,可是懶癌犯了,懶得動,一直拖着沒整理。所以提醒你們:當日事,當日畢!當日事,當日畢!當日事,當日畢!由於明天還有不少事情要作......sql

  在沒有進行Struts2 的學習以前,我用jsp+Servlet+javaBean+mysql+Jdbc+(bootStrap/EasyUi/Layui)開發了5個說大不大說小不小的狗屁項目,那tm寫的叫一個累啊......可是很爽啊,哈哈哈,由於要實現一個方法好比說分頁,那基本上就能夠從底幹到頂,熟悉整個流程。印象很深的一個功能是文件上傳和下載,若是使用Struts那簡直簡單的.....超級爽啊。可是沒學這個以前,我tm累的和狗同樣,仍是學習了別人的博客,本身加以改造,成功實現了數據庫mysql存文件名,服務器存儲文件,對文件可以進行上傳和下載。雖然累可是對這部分功能仍是瞭解的比較好了。框架確實好,用起來很爽。可是我仍是喜歡研究基礎的東西,這樣在學別的框架那就是輕車熟路了。話很少說咱們開始對Struts2進行剝皮抽筋的解剖整理。我接下來將主要從如下幾個方面進行總結:數據庫

Struts2是什麼玩意?核心?主要的功能?
Struts2的核心知識;
Struts2牛逼的攔截器,臥槽這纔是最牛的核心!
Struts2的值棧和OGNL牛逼啊!
Struts2的標籤三大類是什麼?
Struts2的國際化有哪些東西啊?
Struts2的驗證框架簡單嗎?
Struts2文件上傳和下載爲何如此簡單?
Struts2防止重複提交作的努力?
Struts2的小技巧(持久跟新......
          一  Struts2是什麼玩意?核心?主要的功能?                 apache

Struts2在用戶請求、模塊化處理方面、頁面展現表現的很牛逼。編程

 

  應用基本處理流程:Web容器在接收到HttpServletRequest請求傳遞給一個過濾器ActionContextCleanUp,以後通過Otherfiters。接下來調用FilterDispatcher核心控制器,其經過調用ActionMapper確認請求的是哪個Action.ActionMapper返回一個收集Action詳細信息的ActionMaping對象。api

以後ActionProxy得到FliterDispatcher傳遞來的控制權,ActionProxy調用配置管理器(Configuration Manager)從配置文件struts.xml讀取到配置信息。以後建立ActionInvocation對象,ActionInvocation在調用Action以前依次的調用所用的配置攔截器(Interceptor N),一旦執行結果返回結果字符串ActionInvocation負責查找結果字符串對應的(Result)而後執行Result,同時Result能夠調用一些模板(Jsp,FreeMarker,Velocity或者是其餘的)來呈現頁面。

  在調用攔截器以後,咱們進入攔截器(Interceptor N)會被執行(順序與Action執行以前相反)。以後響應(HttpServletResponse)被返回在web.xml中的配置的那些過濾器和核心控制器(FilterDispatcher)。

 

 

 

 

 

  下面咱們以一個實際的例子進行講解。首先咱們進行Struts2版本的HelloWorld的實現過程。

一 新建一個Dynamic web Project項目
第一步:File->New->Other->在搜索框裏面搜索Dynamic Web Project.

 

 

 

 

 

 

 

 

 

 

 

第二步:以後新建一個Web的項目(選擇Dynamic web module Version爲2.5) 完成以後finish。

 

二  引入必須的jar包

對於使用Struts2須要引入一些核心的jar包,其中的所需的jar包如圖1-1所示:

  

圖1-1 核心jar包(放在lib文件夾中)

三 配置過濾器(web.xml文件中)
  對web.xml進行配置,主要是配置過濾器,將全部的請求所有交給org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter核心控制器處理。配置內容以下;

 

複製代碼
 1 <filter>
 2     <filter-name>Struts2</filter-name>
 3     <filter-class>
 4 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
 5 </filter-class>
 6 </filter>
 7 <filter-mapping>
 8     <filter-name>Struts2</filter-name>
 9     <url-pattern>/*</url-pattern>
10 </filter-mapping>
複製代碼
 

  經過配置攔截器地址(<filter-mapping></filter-mapping),<url-pattern>/*</url-pattern>將全部的HttpServletReqeust請求所有交給了名字叫作Struts2的攔截器(<filter-name>Struts2</filter-name>)進行處理,在前面的<filter></filter>攔截器,定義的名爲Struts2攔截器(<filter-name>Struts2</filter-name>)被捕獲,進而調用了定義的攔截器類<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>進行處理。

四  配置Struts.xml文件
   struts.xml文件中必須的內容:

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
將struts.xml文件放在默認的src下。如圖1-2所示:

圖1-2 struts文件存放

 

5、建立HelloWorldAction類,並在struts中進行配置。
建立一個HelloWorldAction類,放在yxs.Action包下。在HelloWorldAction類中生成默認的 execute()方法。具體代碼以下:

複製代碼
 1  public class HelloWorldAction implements Action{
 2           /* (non-Javadoc)
 3            * @see com.opensymphony.xwork2.Action#execute()
 4 */
 5           @Override
 6           public String execute() throws Exception {
 7               // TODO Auto-generated method stub
 8               System.out.println("執行了Action的默認構造方法!");
 9               return SUCCESS;
10          }
11  }
複製代碼
該類實現了Action接口,execute方法返回SUCCESS。在struts.xml中進行配置:

複製代碼  1 <struts>  2 <!-- 默認繼承自struts-default包 -->  3     <package name="helloWorld" extends="struts-default">  4 <!-- 若是前端訪問hello方法,就會調用yxs.Action.HelloWorldAction類 -->  5         <action name="hello" class="yxs.Action.HelloWorldAction">  6         <!-- HelloWorldAction類若是返回success參數(SUCCESS就是success),就會調用helloWorld.jsp模板進行顯示 -->  7             <result name="success">helloWorld.jsp</result>  8         </action>  9     </package> 10 </struts> 複製代碼 六 建立helloWorld.jsp,部署tomcat實現HelloWorld helloWorld.jsp文件代碼以下: 複製代碼  1 </html>

相關文章
相關標籤/搜索