SpringMVC注解

来源:互联网 发布:notepad linux 编辑:程序博客网 时间:2024/04/28 18:40

一、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

0 0