zoukankan      html  css  js  c++  java
  • 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}占位符

        @PathVariable:可用   方法名(@PathVariable int userId)来接收

    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等) 可以使用@RequestBody来接收

      

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

    。。。。。。

  • 相关阅读:
    图,深度,广度优先遍历(一)
    java实现快速排序
    图,深度,广度优先遍历(二)
    图,深度,广度优先遍历(三)
    Jpa动态多表if多条件联合查询(if中包含list不为null和“=”的判断),并对查询结果进行分页
    SpringBoo启动报错:Failed to load property source from location ‘classpath:/bootstrap.yml‘
    Java对象创建和Javabean创建
    Linux解压命令
    BDD测试利器:mocha+should.js
    《老码识途》读书笔记:第一章(中)
  • 原文地址:https://www.cnblogs.com/nyhhd/p/12592105.html
Copyright © 2011-2022 走看看