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两个注解

原文地址:https://www.cnblogs.com/mhm111/p/11422415.html