基于注解的SpringMVC

如果想直接在处理器/控制器里使用response向客户端写回数据,可以通过返回null来告诉DispatcherServlet我们已经写出响应了。

response.getWriter().write("Hello World!!");       
    return null;

不使用注解:

Spring默认提供了一些Controller接口的实现类以方便我们使用,我们写一个Controller的时候可以继承AbstractController然后实现handleRequestInternal方法即可。

基于注解的SpringMVC:

之前所看到的所有的xml配置,如果替换成基于注解只需要在spring的xml文件中做如下配置:
<mvc:annotation-driven/>

<context:component-scan base-package="com.briup.web.controller"></context:component-scan>

在Spring中,
处理器类可以使用   @Controller注解
业务逻辑层可以使用 @Service注解
数据持久层可以使用 @Repository注解

1,基于注解的Controller

使用注解后,就不需要再实现特定的接口,任意一个javaBean对象都可以当做处理器对象,对象中任意一个方法都可以作为处理器方法。
只需
    在类上加上 @Controller注解
    方法上加上 @RequestMapping注解
即可

Spring2.5中引入注解:

@Controller
用于标识是控制器/处理器类;
@RequestMapping
请求到处理器功能方法的映射规则;
@RequestParam
请求参数到处理器功能处理方法的方法参数上的绑定;

Spring3引入了更多的注解:

@RequestHeader
请求头数据到处理器功能处理方法的方法参数上的绑定;
@RequestBody
请求的body体的绑定

URL路径映射限定:

1,普通URL路径映射

@RequestMapping("/hello")

2,URI模板模式映射

@RequestMapping(value="/users/{userId}")
    {XXX}占位符

3,Ant风格的URL路径映射

4,正则表达式风格的URL路径映射:

之前js的学习文档,和java的正则几乎一致,js正则中的一个/变为java中的俩个/即可

请求方法映射限定:

@RequestMapping(value="/hello", method={RequestMethod.POST,RequestMethod.GET})
    可以匹配"/hello",并且请求方式只能是POST或者GET

请求参数映射限定:

1)请求数据中有指定参数名

@RequestMapping("/test")
@Controller
public class HomeController {
    @RequestMapping(params="create",method=RequestMethod.GET)
    public ModelAndView test1(){
        return null;
    }

可以匹配的路径为:/test?create,get方式请求

2)请求数据中没有指定参数名
@RequestMapping(params="!create", method=RequestMethod.GET)

请求头数据映射限定:

请求头数据中有指定参数名
@RequestMapping(value="/header/test1", headers="Accept")
    表示请求的URL必须为"/header/test1"且请求头中必须有Accept参数才能匹配。

js对象转成json格式字符串:
  var obj ={id:,name:"tom",age:20};
  var jSonStr = JSON.stringify(obj);

json格式字符串转成js对象:
  jSonStr = '{"id":1,"name":"tom","age":20}';
  obj = JSON.parse(jSonStr);

Controller接收客户端传的参数:

1)参数是基本数据类型/包装类型/String
        @RequestMapping("test")
        public String test(int age){...}

注意参数名字要和客户端传的参数名一致,否则需要使用@RequestParam来指定参数名

2)参数是数组类型

3)参数是类类型(例如实体类Uesr、Student等)

注意客户端传值类似于这样:
            username=tom&password=123&dob=2017-10-21
        
        注意:
            1.username/password/dob必须是User中存在的property
            2.日期类型的转换

。。。。。。

猜你喜欢

转载自www.cnblogs.com/wskb/p/10939471.html