SpringMVC学习(三):数据处理及跳转

五、响应数据和结果视图

1、返回值分类

(1)字符串

controller方法返回字符串可以指定逻辑视图名,通过试图分析器解析为物理视图地址。

//返回值类型是字符串
@RequestMapping("/testString")
public String testString(Model model){
    System.out.println("testString方法执行了");
    User user = new User();
    user.setUsername("杨健");
    user.setPassword("123456");
    user.setAge(23);
    //model对象
    model.addAttribute("user",user);
    return "success";
}
----------------------------------------------
<a href="user/testString">testString</a>

(2)void

Servlet原始API可以作为控制器中方法的参数

//返回值类型是void
//请求转发一次请求,不用编写项目的名称
@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
    System.out.println("testString方法执行了");
    //编写请求转发的程序
    //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);

    //重定向,也可以通过reponse页面重定向
    //response.sendRedirect(request.getContextPath()+"/index.jsp");

    //设置中文乱码问题,也可以通过response指定响应结果
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");

    //直接会进行响应
    response.getWriter().print("你好");
    return;
}
---------------------------------------------
<a href="user/testVoid">testVoid</a>

(3)ModelAndView

ModelAndView是SpringMVC为我们提供的一个对象,该对象也可以用于控制器方法的返回值。

getModelMap(),添加模型到该对象中,我们在页面上可以直接用el表达式获取。获取方式${attributeName}

setViewName():用于设置逻辑视图名称,视图解析器会根据名称前往指定的视图。

注意:

我们在页面上获取使用的是requestScope.username取得,所以返回ModelAndView类型时,浏览器跳转只能是请求转发。

//返回ModelAndView
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(Model model){
    //创建ModelAndView对象
    ModelAndView mv = new ModelAndView();
    System.out.println("testModelAndView方法执行了");
    //模拟从数据苦衷查询User对象
    User user = new User();
    user.setUsername("杨澈");
    user.setPassword("654321");
    user.setAge(29);
    //把user对象存储到mv对象中,也会把user对象存入到request对象中
    mv.addObject("user",user);
    //跳转到哪个页面
    mv.setViewName("success");
    return mv;
}
-------------------------------------------
<a href="user/testModelAndView">testModelAndView</a>

2、转发和重定向

(1)forward转发

如果用了forward:路径必须写成实际视图url,不能写成逻辑视图。它相当于“request.getRequestDispatcher(“url”).forward(request,response)”。使用请求转发,既可以转发到 jsp,也可以转发到其他的控制器方法。

//用关键字的方式进行转发或者重定向
@RequestMapping("/testForwardOrRedirect")
public String testForwardOrRedirect(){
    System.out.println("testForwardOrRedirect方法执行了......");

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

    //重定向
    return "redirect:/index.jsp";
}
-------------------------------------------------
<%--用转发或者重定向的方式--%>
<a href="user/testForwardOrRedirect">testForwardOrRedirect</a>

(2)Redirect重定向

contrller 方法提供了一个 String 类型返回值之后,它需要在返回值里使用:redirect:它相当于“response.sendRedirect(url)”。需要注意的是,如果是重定向到 jsp 页面,则 jsp 页面不能写在 WEB-INF 目录中,否则无法找到。

3、ResponseBody响应json数据

@ResponseBody,该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。

Springmvc默认用MappingJacksonHttpMessageConverter对json数据进行转换,需要加入jackson的包。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.0</version>
</dependency>
//@RequestBody 接收的  @ResponseBody  响应的
@RequestMapping("/testAjax")
public @ResponseBody User testAjax(@RequestBody User user){
    System.out.println("testAjax方法执行了......");
    //客户端发送的是ajax请求,传的是json字符串,后端把json字符串封装到user对象中
    System.out.println(user);
    //做响应,模拟查询数据库
    user.setUsername("吴毛豆");
    user.setAge(0);
    user.setPassword("686868");
    //做响应
    return user;
}
----------------------------------------------------------
<button id="btn">发送ajax的请求</button>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC提供了多种跳转页面的方法,其中常用的有以下几种: 1. 使用String类型返回值:在Controller的处理方法中,返回一个字符串类型的视图名,Spring MVC会根据这个视图名自动查找对应的视图,然后返回给浏览器。例如: ```java @RequestMapping("/index") public String index() { return "index"; // 视图名为index } ``` 2. 使用ModelAndView类型返回值:在Controller的处理方法中,返回一个ModelAndView类型的对象,该对象包含要跳转到的视图名以及要传递给视图的数据。Spring MVC会根据该对象中的视图名自动查找对应的视图,然后返回给浏览器。例如: ```java @RequestMapping("/index") public ModelAndView index() { ModelAndView mav = new ModelAndView("index"); // 视图名为index mav.addObject("message", "Hello, World!"); // 向视图中传递数据 return mav; } ``` 3. 使用重定向:在Controller的处理方法中,使用RedirectView或redirect:前缀来指定要跳转到的URL。Spring MVC会将该URL返回给浏览器,然后浏览器会向该URL发起新的请求。例如: ```java @RequestMapping("/index") public String index() { return "redirect:/home"; // 使用重定向跳转到/home } 或者 @RequestMapping("/index") public RedirectView index() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("/home"); // 使用RedirectView跳转到/home return redirectView; } ``` 4. 使用forward:在Controller的处理方法中,使用forward:前缀来指定要跳转到的URL。Spring MVC会将该URL转发给浏览器,然后浏览器会向该URL发起新的请求。例如: ```java @RequestMapping("/index") public String index() { return "forward:/home"; // 使用forward跳转到/home } ``` 以上就是Spring MVC中常用的跳转页面的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值