SpringMvc--后续(参数问题)

参数问题

java 复制代码
package com.hwq.controller;

import com.hwq.beans.User;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import java.sql.Array;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.logging.SimpleFormatter;

@Controller
public class ParamController {

    @InitBinder
    public void initData(WebDataBinder web){
        //将日期格式转化成yyyy-MM-dd
        web.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
    }
    /*
    方式一:传统request接收参数
    param1?id=1

    get中文乱码问题:
        调整Tomcat服务器server.xml配置

    post中文乱码(偏码过滤器)
        在web.xml中配置过滤器
        <filter>
        <filter-name>encodingFilter</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>
        <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
        </init-param>
        </init-param>
        </filter>
        <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
        </filter-mapping>

     */

    @RequestMapping("/param1")
    public String Param1(HttpServletRequest request){
        String name = request.getParameter("name");
        System.out.println("name="+name);
        return "index";
    }
    /*
    方式二:直接使用参数接收参数
    param2?id=12
     */
    @RequestMapping("/param2")
    public String Param1(String name){
        System.out.println("id="+name);
        return "index";
    }
    /*
    方式三:使用数组接收参数      int integer[]
    param3?hobby=睡觉&hobby=打豆豆
     */
    @RequestMapping("/param3")
    public String Param3(String[] hobby){
        System.out.println("likes="+ Arrays.toString(hobby));
        return "index";
    }
    /*
    方式四:使用集合接收参数
    param4?hobby=睡觉&hobby=打豆豆
     */
    @RequestMapping("/param4")
    public String Param4(@RequestParam("hobby") List<String> hobby){
        System.out.println("likes="+ hobby);
        return "index";
    }
    /*
    方式五:日期   接收参数
        方式一:字符串接收
        param5?data=2019-09-09
        方式二:形式参数直接接收,这种方式对日期格式有严格要求yyyy/MM/dd
        param51?data=2019/09/09
        方式三:使用日期初始化绑定
            @InitBinder
            public void initData(WebDataBinder web){
            //将日期格式转化成yyyy-MM-dd
                 web.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
            }
     */
    @RequestMapping("/param5")
    public String Param5(String data){
        System.out.println("data="+ data);
        //将字符串转化成日期
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date parse = simpleDateFormat.parse(data);
            System.out.println("parse="+parse);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "index";
    }
    @RequestMapping("/param51")
    public String Param51(Date data){
        System.out.println("data="+ data);
        //将字符串转化成日期
        return "index";
    }
    @RequestMapping("/param52")
    public String Param52(Date data){
        System.out.println("data="+ data);
        //将字符串转化成日期
        return "index";
    }
    /*
    方式六:RestFull风格传参
     */
    @RequestMapping("/param6/{id}/{name}")
    public String Param6(@PathVariable("id") Integer id, @PathVariable("name") String name){
        System.out.println("id="+id+"name="+name);
        return "index";
    }
    /*
        方式七:对象传参
         */
    @RequestMapping("/param7")
    public String Param7(User user){
        System.out.println("user="+user);
        System.out.println(user.getGroup());
        return "index";
    }


}

方式一:传统request接收参数

方式二:直接使用参数接收参数

创建一个add.jsp

方式三:使用数组接收参数

方式四:使用集合接收参数

方式五:日期 接收参数

java 复制代码
/*
方式五:日期   接收参数
    方式一:字符串接收
    param5?data=2019-09-09
    方式二:形式参数直接接收,这种方式对日期格式有严格要求yyyy/MM/dd
    param51?data=2019/09/09
    方式三:使用日期初始化绑定
        @InitBinder
        public void initData(WebDataBinder web){
        //将日期格式转化成yyyy-MM-dd
             web.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
        }
 */
@RequestMapping("/param5")
public String Param5(String data){
    System.out.println("data="+ data);
    //将字符串转化成日期
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    try {
        Date parse = simpleDateFormat.parse(data);
        System.out.println("parse="+parse);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return "index";
}
@RequestMapping("/param51")
public String Param51(Date data){
    System.out.println("data="+ data);
    //将字符串转化成日期
    return "index";
}
@RequestMapping("/param52")
public String Param52(Date data){
    System.out.println("data="+ data);
    //将字符串转化成日期
    return "index";
}

方式六:RestFull风格传参

创建一个User类

java 复制代码
package com.hwq.beans;

import java.util.Date;
import java.util.List;

public class User {
    private int id;
    private String username;
    private String password;
    private int age;
    private List<String> hobby;
    private Date data;
    private Group group;

    public Group getGroup() {
        return group;
    }

    public void setGroup(Group group) {
        this.group = group;
    }

    public User() {
    }

    public User(int id, String username, String password, int age, List<String> hobby, Date data) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.age = age;
        this.hobby = hobby;
        this.data = data;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<String> getHobby() {
        return hobby;
    }

    public void setHobby(List<String> hobby) {
        this.hobby = hobby;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", hobby=" + hobby +
                ", data=" + data +
                '}';
    }
}

Group类

方式七:对象传参

相关推荐
汤姆yu2 分钟前
基于springboot的民间文化艺术品销售系统
java·spring boot·后端
二进制小甜豆15 分钟前
Spring MVC
java·后端·spring·mvc
Yvonne97822 分钟前
定时任务:springboot集成xxl-job-core(一)
java·spring boot·xxl-job
泰勒疯狂展开34 分钟前
Java研学-MongoDB(一)
java·开发语言·mongodb
red_redemption37 分钟前
JSP、HTML和Tomcat
java·tomcat·html
李斯维41 分钟前
循序渐进 Android Binder(一):IPC 基本概念和 AIDL 跨进程通信的简单实例
android·java·android studio
weixin_4723394643 分钟前
StarRocks的几种表模型
java·服务器·前端
无名之逆44 分钟前
[特殊字符]Build High-Performance Web Services with Hyperlane
java·前端·java-ee·eclipse·tomcat·maven·visual studio
天天摸鱼的java工程师1 小时前
Nginx 配置实战:从摸鱼到部署,手把手教你搞定生产级配置
java·后端·nginx
程序员清风1 小时前
字节二面:Elasticsearch搜索,在搜索用到分词后,返回的第一条可能不是最匹配name的数据,这种如何解决?
java·后端·面试