添加須要的包後,在web.xml中添加以下配置web
<!-- Spring MVC配置 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/ApplicationContext-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- Spring配置 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 指定Spring Bean的配置文件所在目錄。默認配置在WEB-INF目錄下 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/ApplicationContext.xml</param-value> </context-param>
注意裏面有一個<load-on-startup> 表示啓動容器時初始化該Servlet;spring
自此請求已交給Spring Web MVC框架處理,所以咱們須要配置Spring的配置文件,默認DispatcherServlet會加載WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。本示例爲WEB-INF/ springMVC-servlet.xml。spring-mvc
由於我在mvc
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/ApplicationContext-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
中配置了指定的路徑,因此個人WEB-INF/ springMVC-servlet.xml轉移到了class路徑下的spring包內的app
其餘參數:框架
參數 | 做用 |
contextClass | 實現WebApplicationContext接口的類,當前的servlet用它來建立上下文。若是這個參數沒有指定, 默認使用XmlWebApplicationContext。 |
contextConfigLocation | 傳給上下文實例(由contextClass指定)的字符串,用來指定上下文的位置。這個字符串能夠被分紅多個字符串(使用逗號做爲分隔符) 來支持多個上下文(在多上下文的狀況下,若是同一個bean被定義兩次,後面一個優先)。 |
namespace | WebApplicationContext命名空間。默認值是[server-name]-servlet。 |
ApplicationContext-mvc.xml中
jsp
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 啓用spring mvc 註解 --> <context:annotation-config /> <mvc:annotation-driven /> <!--<mvc:default-servlet-handler/>--> <!-- 設置使用註解的類所在的jar包 --> <context:component-scan base-package="com.test"></context:component-scan> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- 在Spring4以後也取消 HandlerAdapter <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> 完成請求和註解POJP的映射 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean> --><!-- 對轉向頁面的路徑解析。prefix:前綴, suffix:後綴 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
<mvc:annotation-driven />
一直出現url
No mapping found for HTTP request with URI [/SpringMVCTest/test] in DispatcherServlet with name 'springMVC'spa
注意這段代碼,,本人由於未寫這段話硬生生的查了兩個多小時的資料才弄好。code
DispatcherServlet會利用一些特殊的bean來處理Request請求和生成相應的視圖返回。
關於視圖的返回,Controller只負責傳回來一個值,而後到底返回的是什麼視圖,是由視圖解析器控制的,在jsp中經常使用的視圖解析器是InternalResourceViewResovler,它會要求一個前綴和一個後綴