【framework】spring3-入
- 2020 年 1 月 3 日
- 筆記
補充:我把相關jar包上傳到 http://down.51cto.com/data/477540 |
---|
spring3發布有相當長一段時間了,因為待業在家,一直幫朋友提供些方案,沒有太多關注。近期打算翻譯一下spring-reference,發現網上已經存在一些版本了,為了不重複發明輪子,我就弄個個實際例子來寫寫。
集成
做java的都好喜歡eclipse,沒辦法,雖然其他語言的程式設計師一直批判java程式設計師沒有IDE就沒法做開發,批判就批判吧,確實好用,好歹也帶動了經濟。
我用的是工具如下:
IDE: eclipse3.6 中間件(應用伺服器): tomcat7.0.27 svn: subversive maven: 3.0.4 framework: springMVC 3.05 |
---|
我喜歡eclipse3.6以後的版本,因為他裝插件的時候直接搜索就OK,搜索完成後,已經幫你檢測出是否已經安裝,可以更新。很方便
1.集成svn
svn在eclipse上官方推薦的是subversive,但不代表其他就不好。
點擊:help–>eclipse marketplace

2. 集成maven
同樣在搜索欄里maven
install Maven Integration for Eclipse WTP
3. spring提供svn地址下載一些項目demo,地址如下
https://anonsvn.springframework.org/svn/spring-samples
在這個地址里下載spring的mvc-basic等項目
4. 一起看下mvc-basic的結構
典型的maven的結構
├─.settings ├─src │ ├─main │ │ ├─java │ │ │ └─org │ │ │ └─springframework │ │ │ └─samples │ │ │ └─mvc │ │ │ └─basic │ │ │ └─account │ │ ├─resources │ │ └─webapp │ │ ├─resources │ │ │ └─blueprint │ │ │ ├─plugins │ │ │ │ ├─buttons │ │ │ │ │ └─icons │ │ │ │ ├─fancy-type │ │ │ │ ├─link-icons │ │ │ │ │ └─icons │ │ │ │ └─rtl │ │ │ └─src │ │ └─WEB-INF │ │ ├─classes │ │ ├─layouts │ │ ├─lib │ │ ├─messages │ │ ├─spring │ │ │ └─appServlet │ │ └─views │ │ └─account │ └─test
——–pom.xml
這裡我單獨畫出pom.xml目的主要是因為maven項目的核心文件就是pom.xml,這裡有他所有的依賴和相關組件
5. 通過eclipse,右鍵pom.xml—>Run As—>maven install
maven會自動下載相關的依賴jar包(網速不好的話,會比較尷尬)。我回頭把相關包傳上去,maven伺服器經常出現無法下載的和jar下載不全的情況。偏偏spring官網下載的相關包里沒有spring-webmvc-3.0.5.RELEASE.jar等
註:maven可以發布war到本地或者遠程tomcat下,這裡不細講
6. 簡單走一遍流程
6.1 看web.xml
<servlet> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <!--集成spring,核心調度DispatcherServlet --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> <!--載入spring自己的配置文件--> /WEB-INF/spring/appServlet/servlet-context.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
6.2 查看/WEB-INF/spring/appServlet/servlet-context.xml
<!--載入控制器(原注釋) 複製黏貼處問題了,看來看的人真不多。。–> <!--非spring註解,所需的註解驅動載入 2012-9-1修改--><mvc:annotation-driven />
<!--跟目錄訪問,默認訪問welcome.jsp--> <mvc:view-controller path="/" view-name="welcome"/>
<!-- jsp在WEB-INF在受到保護,不被外界直接訪問,是一種比較常見的安全策略,同時定定義了jsp的地址和擴展名--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
6.3 查看控制器
@Controller @RequestMapping(value="/account") public class AccountController { private Map<Long, Account> accounts = new ConcurrentHashMap<Long, Account>(); /** * 如果是account的get請求,走getCreateForm */ @RequestMapping(method=RequestMethod.GET) public String getCreateForm(Model model) { model.addAttribute(new Account()); return "account/createForm"; } /** * 如果是account的post */ @RequestMapping(method=RequestMethod.POST) public String create(@Valid Account account, BindingResult result) { if (result.hasErrors()) { return "account/createForm"; } this.accounts.put(account.assignId(), account); //實際上這裡跳轉到了getView方法 return "redirect:/account/" + account.getId(); } /** * 跳轉到頁面view */ @RequestMapping(value="{id}", method=RequestMethod.GET) public String getView(@PathVariable Long id, Model model) { Account account = this.accounts.get(id); if (account == null) { throw new ResourceNotFoundException(id); } model.addAttribute(account); return "account/view"; } }
6.4 啟動項目,地址欄輸入http://localhost:8080/mvc-basic/
我們得到的剛好是welcome.jsp頁面內容

6.5 點擊@Controller Example,查看createForm.jsp 由getCreateForm方法跳轉的頁面
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 這是spring的標籤,用在 <form:label for="name" path="name" cssErrorClass="error">Name</form:label> <form:input path="name" /> <form:errors path="name" />
看看頁面效果

7. 為 了調試方便,可以在eclipse下運行tomcat,debug跟蹤一下springMVC的流程。
好了,一個簡單的springMVC入門小例子講解到這裡,要想深入了解,可以從
https://anonsvn.springframework.org/svn/spring-samples下載其他例子一一嘗試,或者關注筆者。