?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?
2019獨角獸企業重金招聘Python工程師標準>>>
今天來總結一下Struts2的知識點,學習編程我的思路一般是這樣的:
① why ?為什么要學這個技術(有什么優秀的地方,可以解決哪些問題?)。
②what ? 這個技術是什么玩意?有什么牛逼的地方值得我們學習,這個技術的核心是什么。
③How ? ?怎么學?基本技術都是自己自學的,我的學習思路就是,看視頻,拿例子來學習知識,在敲代碼的過程中理解問題。在此期間如果遇到不懂得或者是感覺很模糊的地方,及時的上網找相應的博客進行理解。基本上就是在敲代碼中學習技術。并且對技術要及時的進行總結,但是我不推薦一個知識點總結一次,這樣根本沒有那么多的時間,最好的是看完之后,從全局出發,對整個知識進行積累和總結,在總結的過程中,多看一下其他人的博客,集思廣益,收獲會很大。
④Do ! ?做!做是什么?是理論到實踐的必經之路,是你成為大牛的必經之路,找個項目,認真的做完,對一些常用的技巧和方法進行歸納整理,發布到自己的博客上,在做項目的時候,有很多的途徑,我最喜歡 的是看視頻了,只要你前面沒偷懶,認真的學習了,在這個時候你就會發現都是so easy的事情。在做項目的時候,要注意的是,遇到不會的,或者是有新的理解一定要去探索,這樣會知道的越來越多,同時為了防止遺忘,及時的對博客進行更新,或許你遇到的問題也可能是別人遇到的,這樣你的人氣值就上來了!
比如對Struts2 的學習。其實大約一周前就學完了,但是懶癌犯了,懶得動,一直拖著沒整理。因此提醒大家:當日事,當日畢!當日事,當日畢!當日事,當日畢!因為明天還有很多事情要做......
在沒有進行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是什么玩意?核心?主要的功能? ? ? ? ? ? ? ? ??
Struts2在用戶請求、模塊化處理方面、頁面展示表現的很牛逼。
?
應用基本處理流程:Web容器在接收到HttpServletRequest請求傳遞給一個過濾器ActionContextCleanUp,之后經過Otherfiters。接下來調用FilterDispatcher核心控制器,其通過調用ActionMapper確認請求的是哪一個Action.ActionMapper返回一個收集Action詳細信息的ActionMaping對象。
之后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文件存放
?
五、創建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>
轉載于:https://my.oschina.net/u/3386278/blog/3054124
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指Offer(java答案)(51-6
- 下一篇: vue基于element-ui的三级Ch