SpringMVC笔记(2)

SpringMVC笔记(2)

一、SpringMVC的数据响应

1.1 数据响应方式

1.1.1 页面跳转

  1. 直接返回字符串

    返回的字符串与内部资源视图解析器的前后缀拼接 进行访问(默认为转发)

  2. 通过ModelAndView对象返回

<%@ page isELIgnored="false" %>
@RequestMapping("/save2")
//注入思想由Spring提供参数的创建
public ModelAndView save2(ModelAndView modelAndView){
    //设置视图名称
    modelAndView.setViewName("success");
    //添加模型数据,相当于存储于域中
    modelAndView.addObject("username","gyb");
    System.out.println("ModelAndView..");
    return  modelAndView;
}

1.1.2 回写数据

  1. 直接返回字符串
  • 通过写形参注入Response对象,然后调用getWriter.print()

  • 加入@ResponseBody,告诉Spring是直接返回字符串(消息体)

    • /**
       * 返回字符串
       */
      @RequestMapping("/save3")
      @ResponseBody
      public String save3(){
          return "saving..";
      }
      
    • 返回json格式字符串导入坐标

    • <!--    json-->
          <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>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
          </dependency>
      
    • 添加mvc注解驱动

      <!--mvc注解驱动-->
          <mvc:annotation-driven/>
      
      /**
           * 返回json格式
           */
          @RequestMapping("/save4")
          @ResponseBody
          public User save4(){
              User user = new User();
              user.setUsername("gyb");
              user.setPassword("123");
              //返回json格式的字符串
              return user;
          }
      
  1. 返回对象或集合

二、SpringMVC的请求

2.1 请求参数类型

  • 基本类型参数

    Controller中业务方法中的参数名请求参数名字一致,参数会自动映射匹配

    /**
     * 获取基本请求参数
     */
    @RequestMapping("/save5")
    @ResponseBody
    public void save5(String username, String age){
        System.out.println(username);
        System.out.println(age);
    }
    
  • POJO类型参数

    Controller中业务方法中的POJO参数的属性名请求参数名字一致,参数会自动映射匹配

    /**
     * 获取POJO类型参数
     */
    @RequestMapping("/save6")
    @ResponseBody
    public void save6(User user){
        System.out.println(user);
    }
    
  • 数组类型参数

    /**
     * 获取数组类型参数
     */
    @RequestMapping("/save7")
    @ResponseBody
    public void save7(String str[]){
        System.out.println(Arrays.asList(str));
    }
    
  • 集合类型参数

请求体的数据是json格式的,并且为application/json,才可以进行自动映射封装

/**
 * 集合类型参数
 */
@RequestMapping("save8")
@ResponseBody
//在参数前添加请求体注解
public void save8(@RequestBody List<User> userList){
    System.out.println(userList);
}

2.2 参数绑定注解@requestParam

  • value:与客户端的请求参数名相同即可接受任意请求参数

  • required:次在指定的请求参数是否必须存在,默认为true

  • defaultValue:客户端没有请求参数时,默认值

    /**
     * 参数绑定注解
     */
    @RequestMapping("save9")
    @ResponseBody
    //注解中的username为请求参数名,与前台对应
    public void save9(@RequestParam(value = "username" ,defaultValue = "123") String name){
        System.out.println(name);
    }
    

2.3 Restful风格的参数获取

在Restful风格中,现有规定如下:

  • GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。
  • POST(CREATE):在服务器新建一个资源,调用insert操作。
  • PUT(UPDATE):在服务器更新资源,调用update操作。
  • DELETE(DELETE):从服务器删除资源,调用delete语句

2.4 获取请求信息

获取请求头的参数cookie的参数

/**
 * 获取请求信息
 *  获取请求头信息(userAgent)
 */
@RequestMapping("save10")
@ResponseBody
public void save10(@RequestHeader("User-Agent") String userAgent){
    System.out.println(userAgent);
}
/**
 * 获取请求信息
 *  获取cookie的JSESSIONID
 */
@RequestMapping("save11")
@ResponseBody
public void save11(@CookieValue ("JSESSIONID") String JSESSIONID){
    System.out.println(JSESSIONID);
}

2.5 文件上传

2.5.1 文件上传客户端三要素

  • 表单项 type=”file”
  • 表单的提交方式是 post
  • 表单的enctype属性是多部分表单形式,及enctype=”multipart/form-date”

2.5.2 单文件上传步骤

  1. 导入fileupload和io坐标
<!--    fileupload-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
<!--    io-->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>
  1. 配置文件上传解析器
<!--    配置文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="maxUploadSize" value="500000"/>
    </bean>
  1. 编写文件上传代码
/**
 * 文件上传
 */
@RequestMapping("fileUpload")
@ResponseBody
public void fileUpload(String username, MultipartFile uploadFile){
    System.out.println(username);
    System.out.println(uploadFile);
}

2.6 注意:

静态资源无法找到映射,需要配置spring-mvc.xml

<!--    开放资源访问-->
<!--    1.交给默认处理-->
    <mvc:default-servlet-handler/>
<!--    2.开放js资源-->  
    <mvc:resources mapping="/js/**" location="/js/"/>

el表达式在jsp中放行

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115193.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • FOC入门教程_晚上开飞机前面有灯吗

    FOC入门教程_晚上开飞机前面有灯吗深入浅出FOC(FieldOrientedControl)前言:为什么要学习FOC?1.电机控制是自动化控制领域重要一环。2.目前直流无刷电机应用越来越广泛,如无人机、机械臂、云台、仿生机器人等等。3.电机控制工程师薪水较高。需要什么基础?1.C语言,指针,结构体,编程规范。2.STM32外设使用。3.原理图阅读。4.芯片手册阅读。5.数序坐标系知识为什么要出本教程?1.直流无刷电机应用越来越广泛,网上资料比较散落,因此想要出一篇系统性的教程,从头到尾,深入浅出,帮助初学者快速

    2025年8月4日
    3
  • xml xsi_schema和scheme关系

    xml xsi_schema和scheme关系摘要:相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头拷贝过来,并没有理解其中元素(比如xmlns,xmlns:xsi,xsi:s

    2022年8月1日
    3
  • 手把手教你学DSP5509视频教程「建议收藏」

    手把手教你学DSP5509视频教程「建议收藏」链接:https://pan.baidu.com/s/1GwRgSKOm_4wKkNUS65iJrA提取码:ybdy

    2022年5月5日
    48
  • linux设置和修改时间与时区命令_linux 文件修改时间

    linux设置和修改时间与时区命令_linux 文件修改时间linux系统时间有两个,一个是硬件时间,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时间,是linux系统Kernel时间。当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作。有时我们会发现系统时钟和硬件时钟不一致,因此需要执行时间同步。方法一一、date查看/设置系统时间1、将日期设置为2017年11月3日[root@linux

    2025年7月21日
    3
  • ODT下载安装步骤「建议收藏」

    ODT下载安装步骤「建议收藏」ODT下载安装步骤

    2025年10月9日
    4
  • redis常见命令使用

    redis常见命令使用

    2021年10月10日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号