响应主要分为以下四种情况:
页面:jsp
数据+页面:jsp
数据:前后端分离
json数据:前后端分离
return关键字是请求转发的意思
响应页面
@RequestMapping("/t1")
public String t1(){
return "s1";
}
响应页面+数据
@RequestMapping("/t2")
public String t2(Model model){
moder.addAttribute("name","z3");
return "s2";
}
JSP页面
<%@page isELIgnored="false"%> -->开启el表达式
<html lang="en">
<head>
</head>
<body>
s2s2s2 --- ${name} -->el表达式
</body>
</html>
数据
@RequestMapping(value="/t5",produces="text/html;charset=utf-8")
@ResponseBody //-->加上这个就是直接返回字符串--禁用试图解析器
public String t5(){
return "s2"; //---->出现乱码问题
}
json数据
创建实体类
@Data //---->加get,set,toString,equal,
@AllArgsConstructor//--->有参构造
@NoArgsConstructor//--->无参构造
public class User{
private int age;
private String name;
}
引入坐标
<!-- 实体类用-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<!-- json-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version> 2,9以上
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version> 2,9以上
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version> 2,9以上
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
配置xml文件
<mvc:annotation-driven></mvc:annotation-driven>
对象
@RequestMapping("/t6")
@ResponseBody //-->加上这个就是直接返回字符串--禁用试图解析器
public User t6(){
User user=new User(23,"z3")
return user;
}
集合
@RequestMapping("/t7")
@ResponseBody //-->加上这个就是直接返回字符串--禁用试图解析器
public List<User> t7(){
List<User> list=new List();
list.add(new User(23),"z3");
list.add(new User(14),"l4");
list.add(new User(53),"w5");
return list;
}
重定向:
@RequestMapping("/t4")
@RequestBody
public String t4(){
return "redirect:/www.baidu.com";
//----->不经过视图解析器
}
重定向与请求转发区别:
重定型请求两次,请求转发一次
重定向地址栏改变,请求转发不变
重定向是随意,请求转发资源内部跳转
重定向不能传递数据,请求转发可以传递数据
重定向是response发起,请求转发是request发起