您的位置:首页 > 编程语言 > Java开发

SpringMVC框架学习-常用注解

2017-11-22 20:14 309 查看


一、注解开发方式中与JSON交互


1.1 使用@ResponseBody返回JSON数据

如果方法的返回值由@ResponseBody修饰,并且返回值类型不是基本类型和String,会按照JSON格式返回。如果返回值类型是基本类型或者String,直接返回值。如

@Controller
public class Hello4Controller {
@RequestMapping("/hello4")
public @ResponseBody
User hello4(@RequestParam(defaultValue = "没有名字的二狗",required = true) String name){
return new User(name,"123456",name.hashCode());
}
}
class User {
private String name;
private String password;
private int id;

public User(String name, String password, int id) {
this.name = name;
this.password = password;
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public void setPassword(String password) {
this.password = password;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}

返回示例,password字段没有getter方法,所以没有显示。




1.2 使用@RequestBody解析JSON数据

如果方法参数被
4000
@RequestBody,会把请求参数中对应的json字符串解析成对象


1.3 406错误

在pom文件中需要引入以下jackson依赖,否则会出现406错误

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>

406错误:


二、注解开发中的参数邦定


2.1 什么是参数邦定

所谓参数邦定,就是把请求中的请求数据邦定到方法中。举个例子,如果访问的请求为http://localhost:8080/hello4?name=张五侠,而处理这个请求的处理器Handler的处理方法为

@Controller
public class Hello4Controller {
@RequestMapping("/hello4")
public @ResponseBody String hello4(String name){//这个方法中的name被自动赋值为“张五侠”
return "Hello "+name+"!";
}
}

方法的参数name被自动赋值为"张五侠",这个过程被称为参数邦定。


2.2 普通参数邦定

A. 如果方法的形参中包含以下类型。默认赋值。
HttpServletRequest 
HttpServletResponse
HttpSession
Model/ModelMap

B. 如果方法中包含基本类型参数或者String,并且参数名称与URL请求的参数名称一致,自动邦定。

C. 如果形参被@RequestParam注解,自动邦定,@RequestParam中包含四个参数
name String类型,指定从URL的那个参数名邦定
required boolean类型,是否必需,默认true
defaultValue String类型,默认值,如果设置了默认值则required无效
value String类型,与name一样

D.类类型的参数邦定. 如果类类型中的字段名与URL中某个参数的参数名一致,自动帮定。


2.3 自定义参数邦定

某些类型的参数邦定SpringMVC是无法实现的,例如时间Date的邦定。因为SpringMVC无法知道URL中的Date字符串是什么格式的,这就需要我们自定义参数邦定。

所有的参数邦定器都必需实现Converter接口。例如定义一个String转Date的参数邦定器
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateConverter implements Converter<String,Date> {

public Date convert(String s) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
return format.parse(s);
} catch (ParseException e) {
throw new RuntimeException("这日期不对啊");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: