Spring MVC入门配置
1、web.xml的配置
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
// 为了找到Spring MVC的配置文件
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/spring-mvc.xml</param-value>
</init-param>
// servlet容器启动时就启动
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
// 这里会有一个坑,关于/和/*的区别
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--防止乱码使用到的过滤器-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
如果使用到 Spring MVC的RESTful功能的话,就要配置该filter,因为很多时候我们的请求只能是Get或者是Post
而没有DELETE,PUT的请求,所以当我们加上这个过滤器之后,可以通过post请求,并且带上一个属性为_method,值为“DELETE”或者是“PUT”的参数
在注解@RequestMapping()加上method=RequestMethod.DELETE或者PUT,就可以实现RESTful风格的请求
-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
/* 和 / 其实区别在于对静态资源的处理,例如请求一个jsp页面的话:
/* :会从HandlerMapping中找,找不到就报错,错误:No mapping found for HTTP request with URI
/ :使用/不会对jsp处理,直接访问到jsp
对于静态资源的处理后面还会配置到一个标签<mvc:default-servlet-handler/>,后面再讲。
所以,为了不要报错,以后url-pattern都是写 / 就对了。
2、spring-mvc.xml的配置
<!--
简单理解:处理url,查找相应的Handler,即使用@Controller和@RequestMapping前做准备,
实际上是注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,
配置一些messageconverter
-->
<mvc:annotation-driven/>
<!--IoC容器的扫描路径-->
<context:component-scan base-package="com.controller">
<!--这一步就是解决Spring MVC子容器与父容器直接的扫描重复问题,Spring MVC只负责COntroller层,父容器则负责Service和Dao层-->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--这就是关于静态资源的处理,对于一些js,css的请求,DispatcherServlet处理不了但是不应该报错,
就要给回Tomcat的Servlet处理-->
<mvc:default-servlet-handler/>
<!--视图解析器,对return的字符串进行解析找到相应的页面-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--视图名称的前缀,即return的字符的前面路径-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--视图名称的后缀,即return的字符的后缀-->
<property name="suffix" value=".jsp"/>
</bean>