0
点赞
收藏
分享

微信扫一扫

【SpringMVC】003-请求参数绑定


目录

​​一、请求参数绑定入门​​

​​1、基本数据类型和字符串类型的绑定​​

​​2、实体类型(JavaBean)的绑定​​

​​第一步:新建一个param.jsp页面,专门用来测试请求参数的绑定​​

​​第二步:创建实体类Student​​

​​第三步:创建StudentController控制器​​

​​第四步:运行测试​​

​​3、集合的绑定​​

​​第一步:创建Note类:​​

​​第二步:修改Student类:​​

​​第三步:修改param.jsp页面:​​

​​第四步:运行测试:​​

​​二、配置解决中文乱码的过滤器​​

​​在web.xml配置文件种添加即可,代码如下:​​

​​三、自定义类型转换器​​

​​1、举例说明​​

​​2、案例演示​​

​​第一步:简化Student类​​

​​第二步:自定义用于类型转换的类​​

​​第三步:在spring-mvc.xml配置文件中配置类型转换器​​

​​第四步:修改param.jsp页面​​

​​第五步:运行测试​​

​​四、获取Servlet原生的API​​

​​1、原则​​

​​2、示例​​

​​3、可写入的参数​​

一、请求参数绑定入门

1、基本数据类型和字符串类型的绑定

当用户请求的URL如XXX?username=hehe&password=123时,我们需要获取请求参数,使用MVC框架可以这么写:

(备注:此种方式支持基本数据类型和字符串类型、实体类型(JavaBean),集合数据类型(list,map集合等))

package com.zibo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

//控制器
@Controller
public class HelloController {
//设置路径为"/hello"
@RequestMapping(value = "/hello")
public String sayHello(String username, String password){
//请求参数输出
System.out.println(username + password);
//控制台打印"Hello Spring MVC!"
System.out.println("Hello Spring MVC!");
//返回success.jsp页面
return "success";
}
}

2、实体类型(JavaBean)的绑定

第一步:新建一个param.jsp页面,专门用来测试请求参数的绑定

<%--
Created by IntelliJ IDEA.
User: ZiBo
Date: 2020/8/9
Time: 14:52
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>请求参数绑定</title>
</head>
<body>
<h3>请求参数绑定!</h3>
<a href="student/get?name=haha&age=20&gender=boy">点我调转到success.jsp页面</a>

</body>
</html>

第二步:创建实体类Student

package com.zibo.bean;

public class Student {
private String name;
private String age;
private String gender;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

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

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", gender='" + gender + '\'' +
'}';
}
}

第三步:创建StudentController控制器

package com.zibo.controller;

import com.zibo.bean.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/student")
public class StudentController {
@RequestMapping("/get")
public String getStudent(Student student){
System.out.println("执行了getStudent()方法!");
System.out.println(student.toString());
return "success";
}
}

第四步:运行测试

【SpringMVC】003-请求参数绑定_jsp页面

3、集合的绑定

第一步:创建Note类:

package com.zibo.bean;

public class Note {
private String page;
private String content;

public String getPage() {
return page;
}

public void setPage(String page) {
this.page = page;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

@Override
public String toString() {
return "Note{" +
"page='" + page + '\'' +
", content='" + content + '\'' +
'}';
}
}

第二步:修改Student类:

package com.zibo.bean;

import java.util.List;
import java.util.Map;

public class Student {
private String name;
private String age;
private String gender;

private List<Note> notes;
private Map<String,Note> noteMap;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

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

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public List<Note> getNotes() {
return notes;
}

public void setNotes(List<Note> notes) {
this.notes = notes;
}

public Map<String, Note> getNoteMap() {
return noteMap;
}

public void setNoteMap(Map<String, Note> noteMap) {
this.noteMap = noteMap;
}

@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", gender='" + gender + '\'' +
", notes=" + notes +
", noteMap=" + noteMap +
'}';
}
}

第三步:修改param.jsp页面:

<%--
Created by IntelliJ IDEA.
User: ZiBo
Date: 2020/8/9
Time: 14:52
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>请求参数绑定</title>
</head>
<body>
<h3>请求参数绑定!</h3>
<%-- <a href="student/get?name=haha&age=20&gender=boy">点我调转到success.jsp页面</a>--%>
<form action="student/get" method="post">
<input type="text" name="name"/><br/>
<input type="text" name="age"/><br/>
<input type="text" name="gender"/><br/>
<input type="text" name="notes[0].page"/><br/>
<input type="text" name="notes[0].content"/><br/>
<input type="text" name="noteMap['one'].page"/><br/>
<input type="text" name="noteMap['one'].content"/><br/>
<input type="submit" name="提交"/>
</form>
</body>
</html>

第四步:运行测试:

【SpringMVC】003-请求参数绑定_java_02

二、配置解决中文乱码的过滤器

在web.xml配置文件种添加即可,代码如下:

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- 声明servlet——前端控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 使用init-param指定Spring MVC的配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!-- 当启动服务器的时候创建DispatcherServlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置servlet的映射——前端控制器-->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!-- 此处配置为/,意味着将所有的URL映射到该servlet-->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 配置解决中文乱码的过滤器-->
<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>
</web-app>

三、自定义类型转换器

1、举例说明

当用户请求的URL如XXX?username=hehe&password=123时,获取到的内容实际上全为字符串类型,但是若接受的数据类型为Interger型,也可以正常接受,是因为MVC为我们提供了适配大部分数据类型的转换器,接收到字符串“123”之后可以直接转换为数字123,但是由于系统定义的类型转换器不是万能的,有些场景是无法满足我们需求的(例如日期支持2020/8/10而不支持2020-8-10),我们需要自定义类型转换器;

2、案例演示

第一步:简化Student类

package com.zibo.bean;

import java.util.Date;

public class Student {
private String name;
private String age;
private Date birthday;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

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

public Date getBirthday() {
return birthday;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}

@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", birthday=" + birthday +
'}';
}
}

第二步:自定义用于类型转换的类

package com.zibo.utils;

import org.springframework.core.convert.converter.Converter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringToDate implements Converter<String, Date> {
@Override
public Date convert(String s) {
//创建日期格式化对象
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
//格式化
try {
return df.parse(s);
} catch (Exception e) {
throw new RuntimeException("数据类型转换出现错误" + e.getMessage());
}
}
}

第三步:在spring-mvc.xml配置文件中配置类型转换器

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 开启注解扫描-->
<context:component-scan base-package="com.zibo.controller"/>
<!-- 视图解析器:解析/WEB-INF/pages/文件夹,后缀为.jsp的页面-->
<!-- 前缀为所在文件夹,后缀为文件类型,使用的时候只需要指定文件名字即可-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 配置自定义的类型转换器-->
<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.zibo.utils.StringToDate"/>
</set>
</property>
</bean>
<!-- 开启SpringMVC注解的支持和自定义类型转换器-->
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"/>
</beans>

第四步:修改param.jsp页面

<%--
Created by IntelliJ IDEA.
User: ZiBo
Date: 2020/8/9
Time: 14:52
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>请求参数绑定</title>
</head>
<body>
<h3>请求参数绑定!</h3>
<%-- <a href="student/get?name=haha&age=20&gender=boy">点我调转到success.jsp页面</a>--%>
<form action="student/get" method="post">
<input type="text" name="name"/><br/>
<input type="text" name="age"/><br/>
<input type="text" name="birthday"/><br/>
<input type="submit" name="提交"/>
</form>
</body>
</html>

第五步:运行测试

【SpringMVC】003-请求参数绑定_spring_03

四、获取Servlet原生的API

1、原则

想要获取什么,就在参数里面写什么,直接类获取;

2、示例

【SpringMVC】003-请求参数绑定_jsp页面_04

3、可写入的参数

【SpringMVC】003-请求参数绑定_spring_05

【SpringMVC】003-请求参数绑定_jsp页面_06

举报

相关推荐

0 条评论