SpringMVC的响应数据和结果视图

38 篇文章 1 订阅
17 篇文章 2 订阅

响应数据之返回值是String类型

方法执行完,需要跳转到指定的页面,最终给用户一个响应。springmvc提供了很多种响应的方式。
controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
jsp

<a href="user/testString">testString</a>

controller

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/testString")
    public String testString(){
        System.out.println("testString方法执行了");
        return "success";
    }
}

springmvc.xml

<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--表示文件解析所在的目录-->
    <property name="prefix" value="/WEB-INF/pages/"></property>
    <!--表示文件的后缀名-->
    <property name="suffix" value=".jsp"></property>
 </bean>

当我们点击超链接,方法就可以执行,返回success,它就会根据我们的视图解析器,去请求/WEB-INF/pages/目录下的jsp文件

在这里插入图片描述
在这里插入图片描述
整个环境搭建完成,方法返回字符串,根据视图解析器成功跳转到某个页面。
在这里插入图片描述
在这里插入图片描述

<h1>执行成功</h1>
<!--将数据存到model对象中,转发到页面,然后从request域中把值取出来-->
${user.username}
${user.password}
${user.age}
@RequestMapping("/testString")
public String testString(Model model){
    System.out.println("testString方法执行了");
    //模拟从数据库中查询出User对象,然后把对象存起来,转发到页面上
    User user =new User();
    user.setUsername("美美");
    user.setPassword("123");
    user.setAge(15);
    model.addAttribute("user",user);
    //model对象
    return "success";
}

在这里插入图片描述

响应数据之返回值是void类型

返回值类型是void,不会再进行跳转。先了解一下默认的情况

<a href="user/testVoid">testVoid</a>
//返回值类型是void 
@RequestMapping("/testVoid")
public void testVoid(Model model){
    System.out.println("testVoid方法执行了");
}

在这里插入图片描述
如图,点击超链接后,发生404错误,/WEB-INF/pages/user/testVoid.jsp
默认情况下请求testVoid.jsp,没有返回值的时候,默认请求请求路径名称的jsp。这种情况下说明请求路径是一个默认值,这个时候我们就要在pages下面建立一个user和testVoid.jsp
如果不想这么做,并且返回void怎么办
对于转发地址:请求转发一次请求,不用编写项目的名称,重定向两次请求,要写项目名字。通过转发方式:

//返回值类型是void,不会再进行跳转。
/*
* * */
@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("testVoid方法执行了");
    //编写请求转发的程序
    //目录必须要写完整,当你手动去调转发的方法,它不会再帮你去执行视图解析器,也就是不会帮你跳转到WEB-INF目录下去找jsp文件
    request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
    //不想让后面的代码继续执行,就需要写return
    return;
}

目录必须要写完整,当你手动去调转发的方法,它不会再帮你去执行视图解析器,也就是不会帮你跳转到WEB-INF目录下去找jsp文件
通过重定向方式:

response.sendRedirect(request.getContextPath()+"/WEB-INF/pages/success.jsp");

此时报404错误
不能这样写,重定向相当于重新发了一个请求,直接发请求不能请求web-inf配置里面的页面,转发没问题,想跳页面

response.sendRedirect(request.getContextPath()+"xxx.jsp");

地址会发生变化,最终显示index.jsp这个目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
直接进行响应。(之前都是跳到某个jsp,然后由Tomcat服务器帮我们跳转到html,最终响应给用户)。现在都是直接发请求,然后控制器直接通过输出流,来把数据直接响应给浏览器

@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("testVoid方法执行了");
    //编写请求转发的程序
   // response.sendRedirect(request.getContextPath()+"/index.jsp");
        //设置中文乱码
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    //直接会进行响应
    response.getWriter().print("你好");
    return;
}

响应之返回值是ModelAndView类型

ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值
可以用来调整具体的SP视图
它也可以通过视图解析器帮你跳转到某某页面。
modelandview,可以理解为它既包含model的功能,又包含view的功能,model可以存储Javabean对象,view可以存储你想往哪个页面跳转,就跟第一个代码做的功能类似。

//返回值类型是ModelAndView
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
    //创建modelandview
    ModelAndView mv=new ModelAndView();
    
    System.out.println("testModelAndView方法执行了...");
    User user =new User();
    user.setUsername("美美");
    user.setPassword("123");
    user.setAge(15);
    
    //把user对象存储到mv对象中。底层也会把user对象存入到request对象中
    mv.addObject("user",user);
    
    //跳转到哪个页面,跳转到的目录是视图解析器所指定的
    mv.setViewName("success");
    return mv;
}
<br/>
<a href="user/testModelAndView">testModelAndView</a>

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringMVC是一个用于构建Web应用程序的Java框架。在SpringMVC中,处理请求和响应是通过使用控制器方法来实现的。控制器方法使用@RequestMapping注解来映射请求的URL,并通过方法参数来获取请求参数和响应对象。 在处理请求时,可以使用@RequestParam注解来获取请求参数的值。例如,可以在方法参数上使用@RequestParam注解来获取请求中的特定参数值。另外,也可以使用@PathVariable注解来获取URL中的路径参数。 在处理响应时,可以使用@ResponseBody注解将方法的返回值直接写入HTTP响应体中,而不是进行视图跳转。这样可以直接返回字符串、JSON格式的数据或其他类型的数据。 另外,在SpringMVC中,还有一些核心组件,如处理器映射器、处理器适配器和视图解析器。处理器映射器负责将请求映射到相应的控制器方法,处理器适配器负责将请求参数绑定到方法参数,并调用相应的控制器方法,视图解析器负责将方法的返回值解析为视图。 总结起来,SpringMVC通过控制器方法、注解和核心组件来处理请求和响应,使得开发者可以方便地构建Web应用程序。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [springMVC的请求和响应](https://blog.csdn.net/weixin_38088097/article/details/105840310)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [SpringMVC的请求和响应](https://blog.csdn.net/weixin_51146329/article/details/123166475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值