自学内容网 自学内容网

SpringMVC框架(二)

目录

三、请求参数绑定

四、常用注解

1、RequestParam注解

2、RequestBody注解

3、RequestHeader注解

4、CookieValue注解

5、PathVaribale注解


三、请求参数绑定

1、案例

jsp代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>请求参数绑定</title>
</head>
<body>
​
    <h3>请求参数绑定入门</h3>
​
    <form action="/user/save1.do" method="post">
        姓名:<input type="text" name="username" /><br/>
        年龄:<input type="text" name="age" /><br/>
        <input type="submit" value="提交" />
    </form>
​
​
    <h3>请求参数绑定(封装到实体类)</h3>
​
    <form action="/user/save2.do" method="post">
        姓名:<input type="text" name="username" /><br/>
        年龄:<input type="text" name="age" /><br/>
        <input type="submit" value="提交" />
    </form>
​
    <h3>请求参数绑定(封装到实体类)</h3>
​
    <form action="/user/save3.do" method="post">
        姓名:<input type="text" name="username" /><br/>
        年龄:<input type="text" name="age" /><br/>
        金额:<input type="text" name="address.money" /><br/>
        <input type="submit" value="提交" />
    </form>
​
    <h3>请求参数绑定(封装到实体类,存在list集合)</h3>
​
    <form action="/user/save4.do" method="post">
        姓名:<input type="text" name="username" /><br/>
        年龄:<input type="text" name="age" /><br/>
        金额:<input type="text" name="address.money" /><br/>
​
        集合:<input type="text" name="list[0].money" /><br/>
        集合:<input type="text" name="list[1].money" /><br/>
        <input type="submit" value="提交" />
    </form>
​
</body>
</html>

Javabean代码

public class User implements Serializable {
​
    private String username;
    private Integer age;
​
    // 引用对象
    private Address address;
​
    // list集合
    private List<Address> list;
​
    public String getUsername() {
        return username;
    }
​
    public void setUsername(String username) {
        this.username = username;
    }
​
    public Integer getAge() {
        return age;
    }
​
    public void setAge(Integer age) {
        this.age = age;
    }
​
    public Address getAddress() {
        return address;
    }
​
    public void setAddress(Address address) {
        this.address = address;
    }
​
    public List<Address> getList() {
        return list;
    }
​
    public void setList(List<Address> list) {
        this.list = list;
    }
​
    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", age=" + age +
                ", address=" + address +
                ", list=" + list +
                '}';
    }
}
public class Address implements Serializable{
​
    // 金额
    private Double money;
​
    public Double getMoney() {
        return money;
    }
​
    public void setMoney(Double money) {
        this.money = money;
    }
​
    @Override
    public String toString() {
        return "Address{" +
                "money=" + money +
                '}';
    }
}

controller代码

@Controller
@RequestMapping("/user")
public class UserController {
​
    /**
     * 请求参数的绑定
     * @return
     */
    @RequestMapping("/save1.do")
    public String save(String username,Integer age){
        System.out.println("姓名:"+username);
        System.out.println("年龄:"+age);
        return "suc";
    }
​
    /**
     * 请求参数的绑定
     * @return
     */
    @RequestMapping("/save2.do")
    public String save2(User user){
        System.out.println("user对象:"+user);
        return "suc";
    }
​
    /**
     * 请求参数的绑定
     * @return
     */
    @RequestMapping("/save3.do")
    public String save3(User user){
        System.out.println("user对象:"+user);
        return "suc";
    }
​
    /**
     * 请求参数的绑定
     * @return
     */
    @RequestMapping("/save4.do")
    public String save4(User user){
        System.out.println("user对象:"+user);
        return "suc";
    }
​
}
​

2、解决请求参数中文乱码的解决

在web.xml中配置Spring提供的过滤器类

<!-- 配置过滤器,解决中文乱码的问题 -->
    <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>

3、自定义类型转换器

有两种方法

第一种方式使用DateTimeFormat注解的方式

    // 生日
    // 2000-11-11 格式的日期不能进行转换了,开发使用还是比较多,比较简单
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

第二种方式,自定义类型转换器。如果想自定义数据类型转换,可以实现Converter的接口

public class StringToDate implements Converter<String,Date>{
​
    /**
     * 进行类型转换的方法
     * @param s     用户输入的内容
     * @return
     */
    @Override
    public Date convert(String s) {
        // 判断
        if(s == null){
            throw new RuntimeException("请输入内容");
        }
        // 进行转换
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            // 进行转换
            return sdf.parse(s);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
​
}

四、常用注解

1、RequestParam注解

  • name: 参数的名称。如果请求参数的名称与方法参数名称相同,则可以省略。
  • required: 是否必需。默认为 true,必须要传请求参数,不传就会报错。如果为 false,则当参数不存在时,参数值将为 null
  • defaultValue: 默认值。当参数不存在或为空字符串时,可以使用默认值。如果没有传请求参数,使用默认值

2、RequestBody注解

  1. 作用:用于获取请求体的内容(注意:get方法不可以)
  2. 属性
    1. required:是否必须有请求体,默认值是true
  3. 代码如下
/**
     * @return
     */
    @RequestMapping("/save2.do")
    public String save2(@RequestBody String body){
        System.out.println("请求体内容:"+body);
        return "suc";
    }

3、RequestHeader注解

  1. 作用:获取指定请求头的值
  2. 属性
    1. value:请求头的名称
  3. 代码如下
/**
     * RequestHeader 获取请求头的值
     * @return
     */
    @RequestMapping("/save3.do")
    public String save3(@RequestHeader(value = "Accept") String header){
        System.out.println("Accept请求头的值:"+header);
        return "suc";
    }

4、CookieValue注解

  1. 作用:用于获取指定cookie的名称的值
  2. 属性
    1. value:cookie的名称
  3. 代码
/**
     * CookieValue 获取到cookie中的值
     * @return
     */
    @RequestMapping("/save4.do")
    public String save4(@CookieValue(value = "JSESSIONID") String cookie){
        System.out.println("值:"+cookie);
        return "suc";
    }

5、PathVaribale注解

  1. 作用:拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符
  2. 属性
    1. value:指定url中的占位符名称
  3. Restful风格的URL
    1. 请求路径一样,可以根据不同的请求方式去执行后台的不同方法
    2. restful风格的URL优点
      1. 结构清晰
      2. 符合标准
      3. 易于理解
      4. 扩展方便


原文地址:https://blog.csdn.net/a13641376265/article/details/145169688

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!