springMVC响应处理方式

1.响应之返回值是String类型~

@Controller
@RequestMapping("/resp")
public class ResponseController {

@RequestMapping("/testString")
public String testString(Model model){
    System.out.println("testString方法执行了...");
    // 模拟从数据库中查询出User对象
    User user = new User();
    user.setUsername("美美");
    user.setPassword("123");
    user.setAge(30);
    // model对象
    model.addAttribute("user",user);
    return "success";
}

}

注意 Model的addAttribute()可以往request域中存数据,这样在跳转jsp页面时就可以使用el表达式取值

2.响应之返回值是void类型

@Controller
@RequestMapping("/resp")
public class ResponseController {

@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
    System.out.println("testVoid方法执行了...");
    // 编写请求转发的程序
    // request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);

    // 重定向
    // response.sendRedirect(request.getContextPath()+"/index.jsp");
    
    // 直接会进行响应
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    response.getWriter().println("你好");

    return;
}

}

注意:如果是通过重定向的方式进行页面跳转时不能访问/WEB-INF目录下资源,/WEB-INF只能通过请求转发的方式访问到

3.响应之返回值是ModelAndView类型

@Controller
@RequestMapping("/resp")
public class ResponseController {

@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){

    // 创建ModelAndView对象
    ModelAndView mv = new ModelAndView();
    System.out.println("testModelAndView方法执行了...");
    // 封装数据
    mv.addObject("result","hello ModelAndView");
    // 封装结果视图
    mv.setViewName("success");
    return mv;
}

}

配合jsp

补充
Model、ModelMap和ModelAndView的使用详解
https://blog.csdn.net/itbiggod/article/details/79685610

4.响应之使用forward和redirect进行页面跳转

@Controller
@RequestMapping("/resp")
public class ResponseController {

@RequestMapping("/testForwardOrRedirect")
public String testForwardOrRedirect(){
    System.out.println("testForwardOrRedirect方法执行了...");

    // 请求的转发
    // return "forward:/WEB-INF/pages/success.jsp";

    // 重定向
    return "redirect:/index.jsp";
}

}

注意事项:
重定向不能直接访问/WEB-INF/目录下资源

5.响应json数据

前端代码
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>


Title

</head>
<body>
	<button id="btn">发送ajax的请求</button>
</body>
</html>


前端代码注意事项
	1.contentType必须是"application/json;charset=UTF-8"		否则会报415错误
	2.data传的参数必须是'{"key":value,"key":value}'			否则会报400错误
		注意不能是	{"key":value} 或  "key=value"

控制器代码

@Controller
@RequestMapping("/resp")
public class ResponseController {

	@RequestMapping("/testAjax")
	public @ResponseBody User testAjax(@RequestBody User user){
		System.out.println("testAjax方法执行了...");
		System.out.println(user);
		// 做响应
		user.setUsername("ajax modify");
		// 做响应
		return user;
	}
}

spring.xml的配置: mvc:annotation-driven 注解驱动

需要用到jackson依赖

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.9.0</version>
    </dependency>

注意: 配合异步ajax
1.此处是post请求
2.@RequestBody User user 代表将前段提交过来的json字符串数据直接封装到对象中
3.@ResponseBody User 代表将返回的user对象转换成json字符串回写到浏览器ajax的回调处
4.jackson版本需要在2.7.0以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值