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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux中解压zip文件

    Linux中解压zip文件简单记录一下linux中如何解压zip文件首先要安装unzipsudoaptinstallunzip之后可以使用下面命令来解压文件:unzipfile.zip将文件解压到指定文件夹中,如果该文件夹不存在,将会被创建unzipfile.zip-ddirectory…

    2022年5月23日
  • linux中的ldd命令简介

    linux中的ldd命令简介在linux中,有些命令是大家通用的,比如ls,rm,mv,cp等等,这些我觉得没有必要再细说了。而有些命令,只有开发人员才会用到的,这类命令,作为程序员的我们,是有必要了解的,有的甚至需要熟练使用。有的人总说,这些命令不重要,用的时候去查就行了,这么多么扯淡的说法啊。具体用法细节是可以可查,但至少得知道有ldd这个东西吧。连ldd都不知道,怎么知道ldd是干啥的呢?

    2022年4月28日
  • Mac navicat15 激活码【中文破解版】

    (Mac navicat15 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlH2AE5L25Z5-eyJsa…

    2022年3月28日
  • MPLS 虚拟专用网络技术原理与配置

    MPLS 虚拟专用网络技术原理与配置

    2021年4月13日
  • Docker安装Rabbitmq超详细教程

    Docker安装Rabbitmq超详细教程安装Rabbitmq1.使用docker查询rabbitmq的镜像dockersearchrabbitmq2.安装镜像安装name为rabbitmq的这里是直接安装最新的,如果需要安装其他版本在rabbitmq后面跟上版本号即可dockerpullrabbitmq3.运行mq:dockerrun-d–hostnamemy-rabbit–namerabbit-p15672:15672-p5673:5672rabbitmq通过dockerps-a查看部

    2022年5月24日
  • maven快照版本_网站首页快照不更新

    maven快照版本_网站首页快照不更新Maven快照策略,什么是Maven快照。快照版本与Realse版本的区别。修改Maven快照拉取策略。Maven拉取策略

    2022年10月4日

发表回复

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

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