SpringMVC参数接收见解4

这篇具有很好参考价值的文章主要介绍了SpringMVC参数接收见解4。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

# 4.参数接收

Springmvc中,接收页面提交的数据是通过方法形参来接收:

  • 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参

  • springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换器)在特殊情况下需要自定义converter,如对日期数据

4.1.基本数据类型

  • 编写controller

    @Controller
    @RequestMapping("/account")
    public class AccountController {
    
        @RequestMapping("/findAccount5")
        public String findAccount5(String username,Model model){
            model.addAttribute("msg", username);
            return "success";
        }
        
        @RequestMapping("/findAccount6")
        public String findAccount6(String username,Integer age,Model model){
            model.addAttribute("msg", username+" "+age);
            return "success";
        }
    }
    
  • 在index.jsp里面定义超链接

    <a href="/account/findAccount5?username=eric">参数接收-基本数据类型</a>
    <a href="/account/findAccount6?username=eric&age=22">参数接收-多个基本数据类型</a>
    

4.2.POJO类型参数绑定

  • 编写pojo

    public class Account implements Serializable {
        private Integer id;
        private String name;
        private Float money;
        private Address address;
       //省略get set toString方法
     }
    
    public class Address implements Serializable {
        private String provinceName;
        private String cityName;
         //省略get set toString方法
     }
    
  • 编写controller

    package com.by.controller;
    
    import com.by.pojo.Account;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    @RequestMapping("/account")
    public class AccountController {
    
        @RequestMapping("/saveAccount")
        public String saveAccount(Account account, Model model){
            model.addAttribute("msg", account);
            return "success";
        }
    }
    
  • 在index.jsp里面添加表单

    <form action="account/saveAccount" method="post">
        账户名称:<input type="text" name="name"><br/>
        账户金额:<input type="text" name="money"><br/>
        账户省份:<input type="text" name="address.provinceName"><br/>
        账户城市:<input type="text" name="address.cityName"><br/>
        <input type="submit" value="保存">
    </form>
    

4.3.restful风格

  • restful概述:

(Representational State Transfer,表现层状态转移):URL定位资源时,用HTTP动词(GET,POST,DELETE,PUT)描述操作

4.3.1.restful风格URL

  • 在Restful之前的操作:
    http://127.0.0.1/user/query?id=1 根据用户id查询用户数据
    http://127.0.0.1/user/save 新增用户
    http://127.0.0.1/user/update?id=1 修改用户信息
    http://127.0.0.1/user/delete?id=1 删除用户信息

  • RESTful用法:
    http://127.0.0.1/user/1 GET 根据用户id查询用户数据
    http://127.0.0.1/user POST 新增用户
    http://127.0.0.1/user PUT 修改用户信息
    http://127.0.0.1/user/1 DELETE 删除用户信息

  • RESTful总结:

    Restful风格就是请求url统一,根据不同的请求方式,请求不同的后台方法。如果需要携带参数,在url上使用/{}占位符。

4.3.2.@PathVaribale

  • 作用

    用于绑定url中的占位符。例如:/account/{id},这个{id}就是url占位符

    url支持占位符是spring3.0之后加入的,是springmvc支持rest风格url的重要标志。

  • 描述需要使用指定的请求方式来请求该方法

    @Controller
    @RequestMapping("/account")
    public class AccountController {
        
    	@RequestMapping(value="/findAccount7/{id}")
        public String findAccount11(@PathVariable Integer id, Model model){
            model.addAttribute("msg", id);
            return "success";
        }
    }
    
  • 测试:在index.jsp里面定义超链接

    <a href="/account/findAccount7/123">restful传参</a><br>
    

4.3.请求参数乱码问题

4.3.1.POST请求方式解决乱码问题

  • 在web.xml里面设置编码过滤器

    <filter>
      <filter-name>CharacterEncodingFilter</filter-name>
      <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
      </filter-class>
      <!-- 设置过滤器中的属性值 -->
      <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
      </init-param>
    </filter>
    <!-- 过滤所有请求 -->
    <filter-mapping>
      <filter-name>CharacterEncodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  • 测试
    SpringMVC参数接收见解4,spring,后端,mvc

4.3.2.GET请求方式解决乱码问题

  • tomcat对GET和POST请求处理方式是不同的,GET请求的编码问题,要改tomcat的 配置信息,如下:

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <port>8080</port>
            <path>/</path>
            <!--按UTF-8进行编码-->
            <uriEncoding>UTF-8</uriEncoding>
        </configuration>
    </plugin>
    

4.4.自定义类型转换器

4.4.1.使用场景

  • 在index.jsp里面添加日期类型

        <form action="account/saveAccount" method="post">
          账户名称:<input type="text" name="name"><br/>
          账户金额:<input type="text" name="money"><br/>
          账户省份:<input type="text" name="address.provinceName"><br/>
          账户城市:<input type="text" name="address.cityName"><br/>
          开户日期:<input type="text" name="date"><br/>
          <input type="submit" value="保存">
        </form>
    
  • 在pojo里面添加日期类型

    public class Account implements Serializable {
        private Integer id;
        private String name;
        private Float money;
        private Address address;
        //添加日期类型
        private Date date;
        //省略get set toString方法
    }    
    
  • 测试
    SpringMVC参数接收见解4,spring,后端,mvc
    SpringMVC参数接收见解4,spring,后端,mvc

  • 原因

    我们前台传递的是字符串类型的参数,但是后台使用的是Date类型接收的。我们期望springmvc可以帮我们做数据类型的自动转换,显然没有做,所以我们需要自己自定义类型转换器。

4.4.2.自定义类型转换器

  1. Converter接口说明:

  2. 定义一个类,实现Converter接口

    public class DateConverter implements Converter<String, Date> {
        @Override
        public Date convert(String source) {
            try {
                DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                return format.parse(source);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    
  3. 在 springmvc.xml配置文件中配置类型转换器

    	<!--开启springmvc注解支持-->
        <mvc:annotation-driven conversion-service="cs"></mvc:annotation-driven>
        <!-- 配置类型转换器工厂 -->
        <bean id="cs"
              class="org.springframework.context.support.ConversionServiceFactoryBean">
            <!-- 给工厂注入一个新的类型转换器 -->
            <property name="converters">
                <set>
                    <!-- 配置自定义类型转换器 -->
                    <bean class="com.by.converter.DateConverter"></bean>
                </set>
            </property>
        </bean>
    

4.5.使用ServletAPI接收参数

  • 编写controller

    @Controller
    @RequestMapping("/account")
    public class AccountController {
    
        @RequestMapping("/findAccount8")
        public String findAccount8(HttpServletRequest request, 
                                   HttpServletResponse response){
            String username = request.getParameter("name");
            String age = request.getParameter("age");
            request.setAttribute("msg",username+" "+age);
            return "success";
        }
    }
    
  • 在index.jsp里面定义超链接文章来源地址https://www.toymoban.com/news/detail-806216.html

    <a href="/account/findAccount8?username=eric&age=19">Servlet接收参数</a>
    

到了这里,关于SpringMVC参数接收见解4的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 五、Spring MVC 接收请求参数以及数据回显、乱码问题

    客户端或者前端通过 URL 请求传递过来的参数,在控制器中如何接收? 1、当参数和 Controller 中的方法参数一致时,无需做处理,可以正常接收 代码示例以及对应 URL http://localhost:8080/user?name=sys 测试结果 2、当参数和 Controller 中的方法参数不一致时,需要通过 @RequestParam 控制

    2024年02月12日
    浏览(39)
  • SpringMVC 参数传递见解5

    编写controller 在index.jsp里面定义超链接 编写controller 在index.jsp里面定义超链接 编写controller 在index.jsp里面定义超链接

    2024年01月19日
    浏览(58)
  • 在 Spring MVC 中,用于接收前端传递的参数的注解常用的有以下几种

    目录 1、对于json请求体参数, 2、对于路径传参 3、对于query传参 4、对于form-data参数, 总结:   1、对于json请求体参数, 请求头的Content-Type应为application/json。在前端,可以使用 data格式 传参。在后端,可以使用 @RequestBody 注解来接收参数。   2、对于路径传参 (例如:test/

    2024年01月23日
    浏览(43)
  • Spring MVC的入门 见解2

    2.1.1.创建工程 2.1.2.添加web支持 右键项目选择 Add framework support... 添加web支持 效果 注意: 不要先添加打包方式 将web目录要拖拽到main目录下,并改名为webapp 2.1.3.pom.xml 2.2.1.index.jsp 2.2.2.controller 2.2.3.springmvc.xml 2.2.4.success.jsp 2.2.5.web.xml 2.2.6.测试 访问:http://localhost:8080/hello 2.3.1.

    2024年01月16日
    浏览(55)
  • SpringMVC接收参数

    Springmvc中,接收页面提交的数据是通过方法形参来接收: 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换器)在特殊情况下需要自定义converter,如对日期数据 编写controller 在

    2024年01月19日
    浏览(39)
  • SpringMVC参数接收与数据响应

    1、普通类型参数 (1)在可以在方法参数上使用@RequestParam注解来绑定请求参数,此注解允许指定请求参数的名称,以及是否是必须传的参数。 (2)如果需要传的参数是URL的一部分,可以使用@PathVariable注解来绑定路径参数。 2、对象类型参数 常用的是@RequestBody注解,如果请求

    2024年02月08日
    浏览(43)
  • Spring Mvc:初识SpringMvc

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 SpringMvc版本:5.3.1 ①SpringMVC是Spring的一种 子框架 ,它是Spring为【 展现层 | 表示层 | 表述层 | 控制层 】提供的 基于MVC设计理念 的优秀的Web框架,是目前最主流的MVC框架。

    2024年02月13日
    浏览(55)
  • Spring MVC 之MVC 体系结构、什么是SpringMVC

    三层架构 我们的开发架构⼀般都是基于两种形式,⼀种是 C/S 架构,也就是客户端/服务器;另⼀种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,⼏乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。 三层架构中,每

    2024年02月09日
    浏览(51)
  • 【SpringMVC】Spring Web MVC入门(一)

    前面我们了解了什么是Spring,那么今天我将为大家分享一种在日常网站开发中使用非常广泛的框架——Spring Web MVC。 先来看看官方解释。 Spring Web MVC是Spring Framework提供的Web组件,它是一个MVC设计模式的框架,主要用于开发灵活、松散耦合的Web应用程序。它提供了模型-视图-控

    2024年02月05日
    浏览(44)
  • @PathVariable、@PathParam、@RequestBody接收axios传递的请求参数;后端接收前端传递过来的参数

    目录 一、前言 :Content-Type 类型    (1)、 application/x-www-form-urlencoded 类型 (2)、application/json 类型 二、@PathVariable 二、@PathParam  三、@RequestBody  四、后端发送数据给前端 五、注意事项         请求参数以key-value的形式传输         请求参数以JOSN串的形式传输         ax

    2024年01月18日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包