一、SpringMVC以注解为主
1.开启SpringMVC框架的注解支持<mvc:annotation-driven/>
2. 定义静态资源包,这种请求则不会通过HandleMapping,直接去包中获取
<mvc:resourceslocation="/static/" mapping="/static/**"/>
3.开启自动扫描,并且只扫描web层的组件
<context:component-scanbase-package="com.lovo">
<!-- spring框架所提供的两大过滤器-->
<!-- 除了有annotation,还有这么几个过滤器assignable(类名),regex,aspectj-->
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
spring3.1之后的版本无需配置HandleMapping,只要开启注解支持,默认使用DefaultAnnotationHandleMapping
4.开启视图解析器
<!-- 视图解析器(ViewResolver) -->
<beanid="urlBasedViewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<!-- 如果你的页面中使用到了JSTL技术的话,那么需要指定JstlView这个类来解析 -->
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix"value="/"></property> <!-- //usermag/userlist.jsp -->
<property name="suffix"value=".jsp"></property>
</bean>
5.SpringMVC注解
A.使用@controller将某JAVA类标记成一个表现层组件, 该JAVA类无需继承或实现任何JAVA类或接口
B.使用@RequestMapping完成请求与处理该请求的方法之间的映射关系
method用于指定该方法可以处理请求方法类型,如果不满足,将抛出:HTTP Status 405 - Request method 'GET' not supported
params用于指定参数过滤,如果不满足,将抛出:HTTPStatus 400
(1)@RequestMapping(value="/toLogin",params="flag")
代表请求中必须要有名为flag的提交项
(2)@RequestMapping(value="/toLogin",params="!flag")
代表请求中不能有名为flag的提交项
(3)@RequestMapping(value="/toLogin",params="flag=hello")
代表请求中必须有名为flag的提交项,且值为hello
(4)@RequestMapping(value="/toLogin",params="flag!=hello")
代表请求中如果有名为flag的提交项,其值不能为hello
(5)@RequestMapping(value="/toLogin",params={"flag1","flag2=hello"})
代表请求中必须有名为flag1的提交项,同时必须有名为flag2的提交项,且flag2的值必须为hello
Value必填属性代表请求路径,模糊配置
(1)@RequestMapping(value=“/users/**”)
匹配“/users/abc/abc”;
(2)@RequestMapping(value="/product?")
匹配“/product1”或“/producta”,但不匹配“/product”或“/productaa”;
(3)@RequestMapping(value="/product*")
匹配“/productabc”或“/product”,但不匹配“/productabc/abc”;
(4)@RequestMapping(value="/product/*")
匹配“/product/abc”,但不匹配“/productabc”;
(5)@RequestMapping(value={"/test1", "/create"})
6.提交方式
A. 作用域对象(个数和顺序都可以自己定义)
B.表单提交项
@RequestParam("username")Stringname,
@RequestParam("password")Stringpwd)
C.表单数据封装的Bean对象(要求对象的属性名必须要与提交项名称一致)
D. Map作为参数类型(向Map设值,等同于向Request设值)
E. @CookieValue 作为参数,通常用于获取来自于浏览器的Cookie信息
F.通常如果需要获取一些浏览器相关信息的时候,就可以使用@RequestHeader
G. Rest架构风格的提交,路径中的{id}、{name}、{sex}代表占位符,需要使用@PathVariable从路径中获取,也可以将多个参数项直接封装成Bean对象,要求对象中属性名与占位符一致
H. PrintWriter 通常与Ajax配合使用,返回类型一般是void
7.请求转发,重定向
请求转发return "forward:/params/three"
重定向redirect:/params/three