轉載請帶上鏈接:http://www.cnblogs.com/silentdoer/articles/7134332.html。
最近在自學SpringMVC,百度了很多資料都是比較老的,而且里面很多都不能用,后來自己多方對比后終於弄出來了一個,在這里記錄以及跟同是新手的你分享下。
首先說下我用的各種環境:
Windows10系統
SpringMVC用的是目前最新的4.3.4版本;
tomcat用的是8.0.45版本(大家可以下8.5的或更高版本的,我的是壓縮包而非安裝程序,個人覺得用壓縮包更方便);
JDK和JRE用的是1.8的;
IDE用的是Eclipse neon.2;
好了,搭建環境就自己弄下吧(比如安裝JDK[和配置PATH之類的]和安裝Eclipse[注意JDK如果是64位的Eclipse也必須是64位的]和下載tomcat和下載SpringMVC的jar包及設置Eclipse的工作區間),
接下來我會通過圖片和文字的方式詳細的給出創建一個簡單的SpringMVC項目的步驟。
1、打開Eclipse,點擊左上角File-New-Dynamic Web Project,如圖:
2、彈出窗口:
Project name可以改成自己的項目名,圖中用藍筆畫了的大家注意檢查一下是不是一樣(Tomcat可以是你們自己的版本,但是最好比8.0要高,而其它的就先按圖中的來吧);
接下來點擊Next,彈出窗口:
然后將上圖中的build\classes改成WebRoot\WEB-INF\classes,注意這里不改也行,但是為了和MyEclipse項目結構一致最好還是改下(而且個人覺得MyEclipse創建的Dynamic Web Project的項目結構更合理和易理解);
點擊Next彈出窗口:
注意,如果上一步改成了WebRoot\WEB-INF\classes則這一步就最最好將Content directory改成WebRoot(原先是WebContent),然后將藍色圈中的勾打上,點擊Finish。
2、進行完上面的步驟后得到項目結構如下圖:
對着Java Resources下的src點擊右鍵New-Package,彈出框如圖:
寫好Name后點擊Finish。
然后對WEB-INF右鍵New-Folder,彈出如圖:
點擊Finish,(可忽略 ---> 注意,一般除主頁以外的動態頁面都是要放在WEB-INF文件夾內的(一般是WEB-INF的子文件夾里,用於分類,如我這里就是在子文件夾jsp中)。
此時項目的結構是:
3、將項目所需的SpringMVC包添加到項目中,步驟是先復制所有SpringMVC4.3.4版本的jar,然后對WEB-INF文件夾下的lib文件夾右鍵-粘貼(或Ctrl+v)即可(添加jar包到項目里據說有三種方法,我這里用最簡單的方法添加),如圖:
其實這個項目是不需要加入這么多jar包的,但是我懶得去測試哪些要哪些不要就都復制進去了(測試的方法可以是邊刪邊運行,直到刪到不能刪為止)。
4、接下來對silentdoer.web.controller右鍵,New-Class新建一個類名為HelloWorldController,如圖:
點擊Finish后改寫HelloWorldController.java的代碼為:
package silentdoer.web.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.ui.Model; // 這里我寫的注釋要結合springmvc.xml里面的配置和index.jsp里面的內容一起看才容易理解 @Controller public class HelloWorldController { // RequestMapping中的hello是要客戶端請求時所映射的字符串(個人的理解,暫時找不到更好的說法),而helloWorld函數則是處理該映射 @RequestMapping("/hello") public String helloWorld(Model model) { // 通過Model對象可以將數據返回給動態頁面/前端頁面(由服務器處理) String viewArgValue = "Hello World, SpringMVC"; model.addAttribute("message", viewArgValue); // 這里的message就是動態頁面中的參數名,即hello.jsp頁面中${message}中的message,viewArgValue是參數值 // 返回WEB-INF/jsp/hello.jsp文件給客戶端(是經過服務端處理的),因為我們springmvc.xml里配置了prefix和suffix故這里前綴+邏輯視圖名+后綴就得到了要返回文件的完整路徑 // 這里順便說一下WEB-INF下的資源是客戶端無法直接訪問到的 return "/hello"; } }
接下來配置web.xml文件,將其更改為:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>FirstSpringMVCProj</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!-- 設置SpringMVC配置文件的位置,注意該位置默認是src文件夾下 --> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 據說是攔截所有靜態文件的請求,如.js;.css文件等 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 設置默認頁面,注意這個頁面是直接在WebRoot文件夾下的,如果是在WebRoot下的view文件夾下就要配置成view\index.jsp,但是默認頁面不要放在WEB-INF內 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
接下來在src下新建springmvc.xml文件,右鍵src文件夾New-Other,輸入XML找到XML類型文件,如圖:
點擊Next,將名字改為springmvc.xml后點擊Finish。
將springmvc.xml里面的配置改為:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 注意上面的也可以寫成spring-context-4.3.xsd,如果不寫則默認是用當前的版本 --> <!-- 注意這里的base-package的值就是HelloWorldController.java所在的包名 --> <context:component-scan base-package="silentdoer.web.controller" /> <!-- 注意prefix前后的/不要漏了,WebRoot類似是根目錄 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
接下來在jsp文件夾下新建一個JSP File,改名為hello.jsp(由於比較簡單就不截圖了),然后該文件中的代碼為:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <p>This is my message: ${message}</p> </body> </html>
然后對着WebRoot文件夾新建index.jsp文件,里面的代碼為:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a href="hello.html">Hello World</a> </body> </html>
現在的項目結構如下:
至此項目已經寫好了,還需要配置Tomcat(記得將tomcat解壓縮到軟件盤符里,我的是R盤名為:apache-tomcat-8.0.45[文件夾])
點擊Eclipse內上方的Window-preferences,然后點擊Server-Runtime Environments,如圖:
點擊Add,選中Apache Tomcat v8.0(如果你的是別的版本就選你們對應的),點擊Next,彈出如圖:
Browse...找到自己Tomcat存放的位置(我的Tomcat位置如上圖,這里推薦下載Zip包的Tomcat即可然后解壓到相應位置中)將藍框中改為自己相應的JDK,點擊Finish。
Preferences中變為如圖:
點擊OK。
接下來就可以運行了,對項目右鍵Run As-Run on Server,彈出如圖:
直接點擊Finish即可,過一會兒(項目運行也是要時間的嘛)Eclipse代碼區域會彈出頁面如圖:
點擊Hello World即可完成跳轉。
如果想在瀏覽器里看按照上圖輸入地址即可。
如果想停止運行點擊下方的Tomcat然后點擊右邊的紅框即可,如圖:
至此已全部完畢。