zoukankan      html  css  js  c++  java
  • springmvc的注解开发

     

    注解

    @Controller

    我们在自定义控制器时,需要实现Controller这个接口,可以使用@Controller,来代替实现接口

    既然使用注解同样需要注解扫描

     

    @RequestMapping

    我们需要通过映射器来获取访问的路径,springmvc给我们提供了@RequestMapping注解来定义路径,使映射器获取路径。

    @RequestMapping(“/user”)可以定义在方法上也可以定义在类上,一般定义在类上的路径一般是该模块的名称,定义在方法上的是该模块的某个功能的名称。

    注意:当我们使用RequestMapping自定义路径时,需要在web.xml中告诉核心控制器请求的规则。

     

    表示所有路径都需要经过核心控制器

     

    在控制器中的方法一般以返回值类型是String,返回的是jsp的路径,之后视图解析器解析return的路径,跳转到对应的jsp文件,如果视图解析器已经配置了前缀和后缀,只需要写jsp文件的名称即可。

    测试

     

    method

    请求分为getpost请求,在RequestMapping中有method属性来定义此请求只能由什么方式请求

     

    此为post请求我们在index.jsp中设置一个表单,分别以getpost来访问此路径,如果成功则跳转到result.jsp页面上

    get请求

     

    结果

     

     

    从路径上我们看出确实采用了get请求,但是在跳转时显示405表示get请求不支持

    post请求

    我们将表单换为post请求

     

    接收前端数据

    上面在测试请求方式的时候,传入了两个参数,所以后台需要接收,那么只需要在方法上加入形参,springmvc会将输入的数据与形参一一传入。

    注意:形参的属性名需要与<input>中的name属性相同,否则无法获取

     

    我们重新测试一下

     

    控制台显示出前端传入的值

    如果属性名没有对应的话,我们重新测试一下

     

     

    可以看到第一个值并没有获取到

    @RequestParam

    如果<input>中的name属性没有与参数的属性名照应,那么将无法获取传入的数据,此时可以使用@RequestParam作用在参数上,告诉参数前端的name属性名是什么。

    required :为true,代表还属性必须绑定数据,否则抛出一个异常,为false时表示该参数可绑定值也可以不绑定值

    defaultValue:给定参数一个默认值

     

    测试一下

     

    传入一个类

    如果前端传入的数据太多,我们不能定义那么多的参数,所以可以将数据定义在类中,传入一个类即可将数据定义在类中。

    注意:类中定义的属性名同样需要与<input>中的name属性照应

     

    测试一下

     

    类型转换

    转基本数据类型

    同时springmvc还具有类型转换的功能,我们前端传入的值统一为String类型,如果是年龄一类的,我们可以直接在方法的参数中将参数定义为int类型,springmvc会给我们进行类型转换。

     

    测试一下

     

    我们看到成功转换为int类型。

    转date类型

    上述是转换为基本数据类型,可以通过springmvc自带的转换器来转换,但是转换为date类型,我们需要手动转换。

    但是springmvc给我们提供了一个转换器Converter<S, T>,我们可以自定义一个类,实现该接口,在实现的方法中手动进行转换,并将其配置在springmvc.xml中即可自动转换。

    其中S是传入的数据类型,T是传出的数据类型

     

    springmvc.xml中配置

     

    记得在其中使用<mvc:annotation-driven conversion-service="conversionServiceFactory" />告诉核心控制器已经更换了转换器

    测试一下看到已经进行了类型转换

     

    @Pathvariable

    路径中我们可以使用占位符

     

    测试一下

     

    @CookieValue

    我们可以使用该注解获取Cookie中的值

     

    json转换

    @RequestBody

    前端的json转成对象给后端

    首先导包

    然后在创建方法测试

     

    @ResponseBody

    后端的对象转换为json发送到浏览器

    首先需要在springmvc.xml中配置json转换器

    <!-- json转换器 -->

       <bean id="mappingJacksonHttpMessageConverter"

          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

          <property name="supportedMediaTypes">

            <list>

               <value>text/html;charset=UTF-8</value>

            </list>

          </property>

       </bean>

     

       <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->

       <bean

          class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

          <property name="messageConverters">

            <list>

               <ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->

            </list>

          </property>

       </bean>

     

    controller中将对象转json响应浏览器

    同样可以将listjson响应到浏览器

     

    @ResponseBody可以作用在类上,那么代表着该类下的所有方法都可以返回json的数据格式

    @RestController

    包含@Controller和@ResponseBody两个注解

  • 相关阅读:
    js的this几种用法
    JS 事件绑定的几种方式 小笔记
    rem和em和px vh vw和% 移动端长度单位
    js 判断字符串中是否有某字符串
    angular2中的DOM操作之如何使input获取焦点
    angular2模板绑定样式
    论vw单位的实用性
    谷歌浏览器关闭同源策略方法
    video字幕无法显示,video视频在google中无法控制快进
    video视频铺满
  • 原文地址:https://www.cnblogs.com/mhm111/p/11422415.html
Copyright © 2011-2022 走看看