SpringMVC_4 响应数据和结果视图
4.1 响应之返回值是String
4.2 响应之返回值是void类型
默认:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Til9Abn-1575903350213)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568062840787.png)]
测试代码
/**
* 2)返回值void,默认返回方法名,可以自己转
*/
@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("anchor1");
//编写请求转发的程序
/**
* 1)请求转发是一次请求,不用编写项目的名称
*/
//request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);
/**
* 2)重定向
*/
// System.out.println(request.getContextPath());
// response.sendRedirect(request.getContextPath()+"/index.jsp");
/**
* 3)直接响应
*/
//设置中文乱码
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print("hello哈啊");
return;
}
4.3 返回值是ModuleAndView类型
ModuleAndView对象是Spring所提供的一个对象,可以用来调整具体的SP视图
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
//创建一个ModelAndView对象
ModelAndView mv = new ModelAndView();
System.out.println("anchor2");
User user = new User();
user.setUsername("美美");
user.setPassword("33");
user.setAge(30);
//把user对象存储在mv对象中,也会把mv对象存入到request对象
mv.addObject("user", user);
//跳转到哪个页面
mv.setViewName("success");
return mv;
}
4.4 响应之使用forward和redirect进行页面跳转
@RequestMapping("/testForwardOrRedirect")
public String testForwardOrRedirect(){
System.out.println("执行了");
//return "forward:/WEB-INF/pages/success.jsp";
//重定向
return "redirect:/index.jsp";
}
4.5 响应json数据之过滤静态资源
(1)jquery.mni.js
复制一个,到如下目录(重要,与引入js文件和静态资源过滤有关)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fZxLfMRO-1575903350215)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568069267665.png)]
(2)配置请求页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RnLyP0An-1575903350217)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568069321729.png)]
请求页面引入jquery.mni.js
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EKvbsqEa-1575903350219)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568069425375.png)]
注意,引入时候实际上不能引入,原因:
DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置:
<!-- 设置静态资源不过滤 -->
<mvc:resources location="/css/" mapping="/css/**"/> <!-- 样式 -->
<mvc:resources location="/images/" mapping="/images/**"/> <!-- 图片 -->
<mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->
(3)配置controller
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YmXkxlky-1575903350223)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568069598268.png)]
如果直接是@RequestBody 后面加String body,将会得到请求体的信息
(4):(3)中使用的两个注解表示能够自动将json转为对象,将对象转为json,但是要想使用这两个注解,必须要引入json三jar包,如下
jackson-databind
jackson-core
jackson-annotations
son转为对象,将对象转为json,但是要想使用这两个注解,必须要引入json三jar包,如下
jackson-databind
jackson-core
jackson-annotations