最近公司項目要開始使用Spring MVC替代Struts2了,就學習了一下Spring MVC的使用.這是第一個Spring mvc程序,分別使用xml和注解兩種方式.
一、使用xml格式進行構建
1、使用SpringMVC,首選需要在web.xml中配置攔截器和過濾器
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <!-- hello 這個名字需要和后面的Spring配置文件對應 --> <servlet-name>hello</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 設置啟動優先級 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- filter用來設置編碼 --> <filter> <filter-name>CharacterFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>enconding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping></web-app>
servlet的名字hello,不是隨便取的,需要和后面的servlet對應.Filter是編碼過濾器.
2、 在WEB-INF下定義springmvc的配置文件hello-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd 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-3.1.xsd"> <!-- 定義一個/welcome ,當請求到/welcome的時候,攔截器進行攔截,然后去調用對應的控制器,進行業務的處理 --> <bean id="/welcome" class="com.springmvc.web.WelcomeController"></bean> <!-- 定義一個視圖 用來處理返回的視圖 prefix和suffix分別用來定義視圖對應頁面的前綴路徑和后綴路徑 視圖返回welcome 對應到的路徑便是 /WEB-INF/page/welcome.jsp--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/"></property> <property name="suffix" value=".jsp"></property> </bean></beans>
3、自定義Controller,繼承自AbstractController
package com.springmvc.web;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.AbstractController;//定義一個controller,需要繼承AbstractControllerpublic class WelcomeController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { System.out.println("========="); return new ModelAndView("welcome"); } }
4、 最后在/WEB-INF/page/下建立welcome.jsp,然后在瀏覽器訪問http://127.0.0.1:8080/Spring_Hello/welcome即可訪問.
二、 利用注解方式編寫第一個SpringMVC程序.(這是我們日常開發最常使用的方式)
1、 同樣在web.xml中配置servlet和filter,跟xml方式一樣,這里略過
2、 在hello-servlet.xml中寫明注解掃描包和開啟注解模式
在原來的xml的攔截器前面添加兩句
<!-- 配置注解掃描包 --> <context:component-scan base-package="com.springmvc.web"></context:component-scan> <!-- 開啟注解模式 --> <mvc:annotation-driven/>
3、還是要配置InternalResourceViewResolver視圖控制,以及添加prefix和suffix屬性
4、寫HelloController控制類(這次不需要在hello-servlet.xml中注冊,也不需要繼承自Spring的controller)
package com.springmvc.web;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class HelloController { @RequestMapping({"/hello","/"}) public String Hello(){ return "Hello"; } @RequestMapping("/welcome.html") public String Welcome(){ return "welcome"; }}
調用http://127.0.0.1:8080/Spring_Hello/hello就能跳轉到hello.jsp頁面(當然,hello.jsp文件需要先創建)
調用http://127.0.0.1:8080/Spring_Hello/welcome.html,就可以跳轉到welcome.jsp.(不同于剛才調用的welcome,剛才的路徑沒有.html后綴)
新聞熱點
疑難解答