今天蛋疼了。項目須要,一個原先用struts2的項目要移到一個springmvc框架的項目上。以前覺得很簡單,原先的action換成controller,DAO換成service就行,沒想到作的時候發現最大的難點是之前jsp都用的struts2標籤寫的。若是用springmvc的話我只會用ext在js裏那種寫法。根本不適合原先的jsp+jquery的用法。最鬧聽的是讓我不用struts標籤我就不會了啊。 java
好了吐槽完畢,搗鼓了一天,有了眉目,還沒弄完,不過今天搞的信息量超大。停下來記錄備忘下。 jquery
今天的內容是怎麼搭建一個可使用struts標籤的項目 web
1 經過mvn引入struts相關的jar包,mvn組織項目及打包是真心好用 spring
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.1.6</version> </dependency>2 配置web.xml,主要是用來攔截,否則jsp在解析到struts標籤的時候會報錯。錯誤信息很好認,有錯的時候就看看web.xml的filter有沒有配置。
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>3 而後就是在jsp頁面裏引入struts2標籤
<%@ taglib uri="/struts-tags" prefix="s" %>4 接下來就是後臺的代碼,主要就是springmvc的簡單用法,測試沒用到serivce層,數據直接寫到controller裏了
@RequestMapping(params = "event=main") public ModelAndView display(HttpServletRequest request,HttpServletResponse response) { ModelAndView view = new ModelAndView("/askdba/test.jsp"); List<String> list=new ArrayList<String>(); list.add("123"); list.add("234"); list.add("345"); view.addObject("list",list); view.addObject("testString","asdfasdfasdfadsfads"); return view; }
5 再而後就是我糾結的地方了 shell
以前struts的用法是action中直接設置變量並給出getter和setter,而後前臺用s:proptery標籤直接顯示就行 apache
可是springmvc裏設置getter和setter前臺都不認啊。 json
因而乎打開s:debug標籤,打開s:debug標籤的方法以下: mvc
<s:debug></s:debug>而後我就發現,原來view addObject的內容都在request中,因而前臺代碼用struts標籤改寫成
<s:iterator var="s" value="#request.list"> <s:property value="s"></s:property> <br> </s:iterator> s:標籤:<s:property value="#request.testString"></s:property>
目前要作的就是把原先jsp裏的s標籤的內容都從request中取得便可,終於避免了原先前臺重寫的厄運。 app
總結一下,以前一直都是用struts的框架,後來項目須要用了springmvc,真心以爲springmvc強大。可是前臺的展現就不給力了,由於結果和json結合還好,遇到歷史項目的時候須要在前臺展現變量除了jsp直接寫java代碼和jstl C標籤就沒別的方法了。 框架