SpringMVC返回值类型及响应数据类型
项⽬测试⽬录
1、响应返回值之String类型
controller的⽅法返回的字符串可以指定逻辑视图的名称,根据视图解析器为物理视图地址。
@Controller
@RequestMapping(path ="con")
public class controller {
@RequestMapping(path ="test")
public String test(){
System.out.println("");
return"success";
}
}
2、响应返回值之void类型
默认会去testVoid.jsp这个⽂件。
@RequestMapping(path ="testVoid")
public void testVoid(){
System.out.println("");
}
可以利⽤请求转发,然后去跳转到success.jsp页⾯,重定向因为是两次请求,所以⽆法访问WEB-INF中的内容
@RequestMapping(path ="testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response)throws Exception, IOException {
System.out.println("");
//请求转发
//        RequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
//        重定向
//        response.ContextPath()+"/index.jsp");
//        直接响应
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
return;
}
}
3、响应返回值之ModelAndView类型
controller⽅法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。
@RequestMapping(path ="testModel")
public ModelAndView testModel(){
System.out.println("");
ModelAndView mv =new ModelAndView();
User user =new User();
//把user对象存储到mv对象中去,也会把user对象存储到request对象中
mv.addObject("user",user);
//跳转到哪个页⾯
mv.setViewName("success");
return mv;
}
4、响应之使⽤forward和redirect进⾏页⾯跳转
这两个⽅法⽤不了视图解析器,需要⾃⼰去写路径。
forward转发:controller⽅法在提供了String类型的返回值之后,默认就是请求转发。关键字forward。
@RequestMapping(path ="testString")
public String testString(){
System.out.println("");
//return "forward:/WEB-INF/pages/success.jsp";
return"redirect:index.jsp";
}
5、@ResponseBody响应json数据
我们知道当⽤户发送⼀个请求的时候,就会拦截所有的资源,导致的⼀个问题就是静态资源(img、cs
s、js)也会被拦截到,从⽽不能被使⽤。解决问题就是需要配置静态资源不进⾏拦截,在l配置⽂件添加如下配置。
mvc:resources标签配置不过滤
location元素表⽰webapp⽬录下的包下的所有的⽂件。
mapping元素表⽰以/static开头的所有请求路径,如:/static/a或者/static/b
<resources mapping="/css/**"location="/css/"></resources>
<resources mapping="/images/**"location="/images/"></resources>
<resources mapping="/js/**"location="/js/"></resources>
获取json数据:利⽤RequestBody这个注解。
ajax
$(".btn")[0].onclick=function(){
$.ajax({
type :"post",
url :"con/testAjax",
cache :false,
data :{
"username":"hhhh",
"password":"bbbb"
},
dataType :"text",
success :function(msg){
var user =JSON.parse(msg);
alert(user.username);
},
error :function(XMLHttpRequest, textStatus, errorThrown){ alert("获取数据失败!");
}
})
}
有三种获取的⽅式:
1、简单的,这样可以获取数据。
@RequestMapping(path ="testAjax")
public String testAjax(User user){
System.out.println(user);
return"success";
}
执⾏结果:
2、直接为这个字符串
@RequestMapping(path ="testAjax")
public String testAjax(@RequestBody String body){
System.out.println(body);
return"success";
}
3、导⼊json的相关jar包
<dependency>
<groupId>com.</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
利⽤@ResponseBody注解,该注解可以将对象转换成字符串返回给前端的success回调函数。
@RequestMapping(path ="testAjax")
public@ResponseBody User testAjax(User user){springmvc常用标签
System.out.println(user);
System.out.Username());
user.setUsername("aaaa");
user.setPassword("aaaa");
return user;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。