SpringMVC SpringMVC响应 一、数据处理及跳转

1. 结果跳转方式

①.ModelAndView

设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面


    
    
    

对应的controller类

/**
 * 返回ModelAndView对象的方式
 * @return
 */
@RequestMapping("/save3")
public ModelAndView save3(){
    System.out.println("执行了...");
    // 创建mv对象
    ModelAndView mv = new ModelAndView();
    // 把一些数据,存储到mv对象中
    mv.addObject("msg","用户名或者密码已经存在");
    // 设置逻辑视图的名称
    mv.setViewName("suc");
    return mv;
}

②.ServletAPI

通过设置ServletAPI , 不需要视图解析器 .

1、通过HttpServletResponse进行输出

2、通过HttpServletResponse实现重定向

3、通过HttpServletResponse实现转发

@Controller
@RequestMapping(path = "/role") // 一级请求路径
public class RoleController {

    @RequestMapping("/t1")
    public void test1(HttpServletRequest req, HttpServletResponse rsp) throws IOException {
        rsp.getWriter().println("Hello,Spring BY servlet API");
    }

    @RequestMapping("/t2")
    public void test2(HttpServletRequest req, HttpServletResponse rsp) throws IOException {
        rsp.sendRedirect("/SpringMVCDemo/html/suc.html");
    }

    @RequestMapping("/t3")
    public void test3(HttpServletRequest req, HttpServletResponse rsp) throws Exception {
        //转发
        req.setAttribute("msg","hello");
        req.getRequestDispatcher("/html/suc.html").forward(req,rsp);
    }

}

③.SpringMVC

通过SpringMVC来实现转发和重定向 - 无需视图解析器;

测试前,需要将视图解析器注释掉

@Controller
@RequestMapping(path = "/role") // 一级请求路径
public class RoleController {

    @RequestMapping("/t1")
    public String test1(){
        //转发
        return "/html/suc.html";
    }

    @RequestMapping("/t2")
    public String test2(){
        //转发二
        return "forward:/html/suc.html";
    }

    @RequestMapping("/t3")
    public String test3(){
        //重定向
        return "redirect:/html/suc.html";
    }

}

2.ResponseBody响应json数据

json和JavaBean对象互相转换的过程中,需要使用jackson的jar包


  com.fasterxml.jackson.core
  jackson-databind
  2.9.0


  com.fasterxml.jackson.core
  jackson-core
  2.9.0


  com.fasterxml.jackson.core
  jackson-annotations
  2.9.0

DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置

标签配置不过滤

1. location元素表示webapp目录下的包下的所有文件

2. mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b


 
 
 

html代码




  
  Title
    
    


异步的数据交互

controller

/**
 * 异步的数据交互
 * 重定向
 * @return
 */
@RequestMapping("/save6")
public @ResponseBody User save6(User user){
    System.out.println(user);
    // 模拟,调用业务层代码
    user.setUsername("hello");
    user.setAge(100);
    // 把user对象转换成json,字符串,再响应。使用@ResposeBody注解 response.getWriter().print()
    return user;
}

你可能感兴趣的:(SpringMVC,java,前端,开发语言)