响应数据:
1、返回值是String类型
使用Model 对象将数据存到request域对象中,并直接返回跳转页面的文件名,利用在spring配置文件中配置的视图解析器解析跳转路径,这种方式在实际开发中比较常用。
@RequestMapping("/testString")
public String testString(Model model){
System.out.println("testString方法执行");
User user = new User();
user.setUsername("美美");
user.setPassword("123");
user.setAge(20);
model.addAttribute("user",user);
return "success";
}
在没有配置视图解析器的情况下还可以使用返回关键字的方式来完成请求转发或重定向:
这里的重定向不需要自己加项目真实路径。但这种加关键字的方式比较少用。
2、返回值是void类型
调用servlet原生的API如HttpServletRquest和HttpRequestResponse对象,完成请求转发或重定向。
3、返回值是ModelAndView类型
使用SpringMVC提供的ModelAndView对象将数据存储,底层也是存到request域对象中,并使用ModelAndView对象完成页面跳转(也会使用到视图解析器),最后将ModelAndView对象返回即可。
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
System.out.println("testModelAndView方法执行");
//ModelAndView是SpringMVC提供的对象
ModelAndView mv = new ModelAndView();
User user = new User();
user.setUsername("靓靓");
user.setPassword("456");
user.setAge(20);
//把user对象存到ModelAndView对象中,底层也是存到request中
mv.addObject("user",user);
//指定跳转页面
mv.setViewName("success");
return mv;
}
过滤静态资源:
在开发中一定会访问到静态资源,例如图片文件、css文件以及jQuery的js库文件等。而我们在使用SpringMVC时核心控制器会帮我们拦截一切请求,会导致我们也无法正常访问静态资源,这时就需要在spring配置文件中告诉控制器对哪些资源不进行拦截,例如放行jQuery的js库:
<!--告诉前端控制器哪些资源不进行拦截-->
<mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
响应json数据:
要将json格式的数据直接封装到对象需要一组jar包:
<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>
发送json格式的数据到后台:
$("#bt1").click(function () {
$.ajax({
//url是控制器中处理json数据的方法
url:"userResponse/testAjax",
contentType:"application/json;charset=UTF-8",
data:'{"username":"hehe","password":"123","age":20}',
dataType:"json",
type:"post",
success:function (data) {
//data是服务器返回的数据
alert(data.username);
alert(data.password);
alert(data.age);
}
});
});
响应json格式的数据到前端:
@ResponseBody注解可以将返回的对象转换为json格式的数据;
@RequestBody注解可以将json格式的数据直接封装到对象中。
@RequestMapping("/testAjax")
//@ResponseBody注解可以将返回的对象转换为json格式的数据
//@RequestBody注解可以将json格式的数据直接封装到对象中
public @ResponseBody User testAjax(@RequestBody User user){
System.out.println(user);
//模拟查询数据库
user.setUsername("haha");
user.setPassword("456");
//做响应,这时前端就能得到json格式的数据
return user;
}