返回值分类
1.字符串
controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
<!--视图解析器-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<!-- 文件的前缀-->
<property name="prefix" value="/WEB-INF/pages/" />
<!-- 文件的后缀名-->
<property name="suffix" value=".jsp" />
</bean>
------------------------------------------------controller
public String testString(Model model) {
System.out.println("testString.......");
//模拟从数据库中查询User对象
User user = new User();
user.setUsername("joyTop");
user.setPassword("123.com");
user.setAge(22);
model.addAttribute("user",user);
return "success";
}
-----------------------------------------------success.jsp:前端取值
${user}
${user.username}
${user.password}
${user.age}
2.void
@RequestMapping("/testVoid")
public void testVoid11(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("testVoid.......");
//1.编写请求转发 使用转发不会调用springMVC.xml里面配置的视图解析器
//request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
//2.重定向 只能访问webapp下面的jsp页面
//response.sendRedirect(request.getContextPath()+"/index.jsp");
//3.直接响应 response解决乱码问题
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("无返回参数直接响应");
return;
}
3. 响应之返回值ModelAndView
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
System.out.println("testString.......");
ModelAndView mv = new ModelAndView();
//模拟从数据库中查询User对象
User user = new User();
user.setUsername("joyTop");
user.setPassword("123.com");
user.setAge(21);
//把user对象存入ModelAndView中,底层也是把user存入request域对象中
mv.addObject("user", user);
//跳转到指定目录,使用springMVC.xml配置的视图解析器
mv.setViewName("success");
return mv;
}
4.forward 转发orRedirect 重定向
@RequestMapping("/testForwardOrRedirect")
public String testForwardOrRedirect() {
System.out.println("testForwardOrRedirect.......");
//请求转发 不走springMVC.xml配置文件中的视图解析器,所有要写全路径
//return "forward:/WEB-INF/pages/success.jsp";
//重定向 走springMVC.xml配置文件中的视图解析器
return "redirect:/index.jsp";
}
5.ResponseBody 响应和接收 json 数据
//--------------------前端
<button id="btn">发送ajax的请求</button>
<script type="text/javascript" src="./js/jquery.min.js"></script>
<script>
//页面加载,绑定点击事件
$(function () {
$("#btn").click(function () {
//alert("hello btn");
$.ajax({
//编写json格式,设置属性和值
url:"user/testAjax",
contentType:"application/json;charset=UTF-8",
data:'{"username":"joyTop","password":"123.com","age":"2"}',
type:"post",
success:function (data) {
//data服务器端响应的json数据
alert(data);
alert(data.username);
}
});
});
});
</script>
//---------------------后端
@RequestMapping("/testAjax")
@ResponseBody
public User testAjax(@RequestBody User user) {
System.out.println(user+"testAjax.......");
//客户端发送ajax请求,传的是json字符串,后端把json字符串封装到user对象中
//响应,
user.setUsername("卢军");
user.setAge(22);
return user;
}