超详细笔记记录(SpringMVC的请求和响应) 其六

本文详细讲解了SpringMVC中数据响应的方式,包括返回字符串、ModelAndView对象和回写数据。同时,文章介绍了如何从请求中获取数据,如参数、头信息、文件上传等,并探讨了参数绑定、自定义类型转换器和处理RESTful风格参数的方法。
摘要由CSDN通过智能技术生成

今日内容

  • SpringMVC的数据响应
    • 页面跳转
    • 会写数据
  • SpringMVC获得请求数据
    • 获得普通数据
    • 获得文件上传

1. SpringMVC的数据响应

1.1 SpringMVC的数据响应方式

  1. 页面跳转

    • 直接返回字符串 return
    • 通过ModelAndView对象返回
  2. 回写数据

    • 直接返回字符串 return
    • 返回对象或集合

1.2 页面跳转

1. 返回字符串形式

直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转
视图解析器

<bean id="viewRsolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
</bean>

如返回的是:return index; 怎会拼接上prefix的值为前缀suffix为后缀/jsp/index.jsp

2. 返回ModelAndView对象
 //重定向
@RequestMapping("/quick2")
public ModelAndView quickMethod2(){
   
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("redirect:index.jsp");
        return modelAndView;
 }
//转发
@RequestMapping("/quick3")
public ModelAndView quickMethod3(){
   
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("forward:/WEB-INF/views/index.jsp");
        return modelAndView;
 }
3. 向request域存储数据

在进行转发时,往往要向request域中存储数据,在jsp页面中显示,那么Controller中怎样向request域中存储数据呢?

  1. 通过SpringMVC框架注入的request对象setAttribute()方法设置
  2. 通过ModelAndView的addObject()方法设置

通过SpringMVC框架注入的request对象setAttribute()方法设置

//本质上是应用了spring会自动帮你创建形参部分的对象
@RequestMapping("/quick")
public ModelAndView quickMethod(HttpServletRequest request){
   
       request.setAttribute("name","zhangsan");
       return "index";
 }

通过ModelAndView的addObject()方法设置

//存储数据到视图处理对象 取值方法同上 ${username}
@RequestMapping("/quick3")
public ModelAndView quickMethod3(){
   
        //Model 模型 :封装数据
        //View   视图 :展示作用数据
       ModelAndView modelAndView =new ModelAndView();
        //设置视图名称
        modelAndView.setViewName("nihao");
        //设置模型数据
        modelAndView.addObject("username","itcast");
        return modelAndView;
 }

1.3 回写数据

1. 回写字符串

Web基础阶段,客户端访问服务器端,如果想直接回写字符串作为响应体返回的话,只需要使用
response.getWriter().print(“hello world”) 即可,那么在Controller中想直接回写字符串该怎样呢?

  1. Spring框架帮你创建response对象
  2. 通过·@ResponseBody直接返回字符串

1. 通过SpringMVC框架注入的response对象,使用response.getWriter().print(“hello world”) 回写数据,此时不需要视图跳转,业务方法返回值为void。

//本质上是应用了spring会自动帮你创建形参部分的对象
@RequestMapping(value = "/quick5")
    public void save5(HttpServletResponse response) throws IOException {
   
        response.getWriter().println("Hellow itcast");
  }

2. 将需要回写的字符串直接返回,但此时需要通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是跳转是直接在http响应体中返回。

@RequestMapping(value = "/quick6")
    @ResponseBody()//告诉springMVC框架不要进行视图跳转 直接进行数据响应
    public String save6() throws IOException {
   
        return "nihao";
    }
2. 回写json格式字符串,也可以说是回写对象
  1. 手动拼接
  2. ObjectMapper对象进行转换
  3. SpringMVC中转直接返回对象即可自动转化为json对象

1.客户端与服务器端往往要进行json格式字符串交互,此时我们可以手动拼接json字符串返回。

@RequestMapping(value = "/quick7")
    @ResponseBody()//告诉springMVC框架不要进行视图跳转 直接进行数据响应
    public String save6() throws IOException {
   
        return "{\"name\":\"zhangsan\",\"age\":18}";
    }

2. 使用web阶段学习过的json转换工具jackson进行转换,导入jackson坐标。

<!--jackson的jar包导入-->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-core</artifactId>
	<version>2.9.0</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.9.0</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值