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类

方式七:对象传参

相关推荐
架构文摘JGWZ3 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
拾光师4 小时前
spring获取当前request
java·后端·spring
aPurpleBerry4 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j
我是苏苏4 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言
xujinwei_gingko4 小时前
Spring IOC容器Bean对象管理-Java Config方式
java·spring
2301_789985944 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
IT学长编程4 小时前
计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·毕业设计·springboot·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·教师科研管理系统
m0_571957584 小时前
Java | Leetcode Java题解之第406题根据身高重建队列
java·leetcode·题解
程序猿小D4 小时前
第二百三十五节 JPA教程 - JPA Lob列示例
java·数据库·windows·oracle·jdk·jpa
Zd085 小时前
14.其他流(下篇)
java·前端·数据库