SpringMVC解析post请求参数详解

目录
  • SpringMVC
    • 一,概述
    • 二、原理:
      • 1.创建form表单
      • css代码
    • 2.准备Student类
    • 3.创建启动类
    • 4,创建数据库,表
    • 使用JDBC把得到的数据入库
    • 5.创建StudentController类
  • 6.测试
  • 总结

SpringMVC

一,概述

作用是接受服务器请求并做出响应,是spring的后续产品,使用注解@RestController和@RequestMapping

MVC设计模式:

M是model模型,用来封装数据

V是view视图,用来展示数据

C是control控制器,用来控制浏览器如何请求,做出数据响应

好处:提高代码的复用性,松耦合

二、原理:

1.前端控制器DispatcherServlet:当浏览器发送请求成功后,充当调度者的角色,负责调度每个组件

2.处理器映射器HandlerMapping:根据请求的url路径,找到能处理请求的类名和方法名

Url:http://localhost:8080/abc 在HelloControl类中找到abc()

3.处理器适配器HandlerAdaptor:正式处理业务,并返回结果交给DispatcherServlet

4.视图解析器ViewResolver:找到正确的能展示数据的视图,准备展示数据

5.视图渲染view:展示数据

1.创建form表单

表单form默认提交方式是get,将提交的数据展示在网址上,而post提交方式隐藏了数据在网址上,因此更加的安全,这里使用springMVC来处理post的请求参数

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>学生管理系统</title>
		<link rel="stylesheet" href="../css/form.css"/>
	</head>
	<body>
		<!-- 利用表单,向服务器发送数据,
		默认是get提交,通过method属性修改提交方式
		 action属性,指定提交的位置-->
		<form method="post" action="http://localhost:8080/stu/add">
			<table width="500px" height="300px">
				<tr><td><h2>学生信息管理系统MIS</h2></td></tr>
				<tr><td>姓名:</td></tr>
				<tr><td><input class="a" type="text" placeholder="请输入姓名..." name="name" /></td></tr>
				<tr><td>年龄:</td></tr>
				<tr><td><input class="a" type="number" placeholder="请输入年龄..." name="age"/></td></tr>
				<tr><td>性别:(单选框)
					<input type="radio" name="sex" value="1" />男
					<input type="radio" name="sex" value="0" />女
				</td></tr>
				<tr><td>爱好:(多选)
					<input type="checkbox" name="hobby" value="ppq" />乒乓球
					<input type="checkbox" name="hobby" value="ps" />爬山
					<input type="checkbox" name="hobby" value="cg" />唱歌
				</td></tr>
				<tr><td>学历:(下拉框)
				<select name="edu">
					<option value="1">本科</option>
					<option value="2">硕士</option>
					<option value="3">博士</option>
					<option value="4">专科</option>
				</select>
				</td></tr>
					<tr><td>入学日期:</td></tr>
					<tr><td><input type="date" name="intime" /></td></tr>
					<tr><td>
						<input type="submit" value="保存"/ >
						<input type="reset" value="取消" />
					</td></tr>
			</table>
		</form>
	</body>
</html>

css代码

css的三种引入方式

1.行内样式:通过style属性引入css样式

例如:<h1 style="width: 20px; height: 10px; color: #FF0000;">行内样式</h1>

一般实际写页面时不提倡,测试的时候可以使用

2,内部样式表

通过<style></style>标签,写在head标签中

例如:<style> .b{ width: 200px; height: 100px; background-color: #FF69B4; } </style>

3,外部样式表

创建.css文件,将css样式写入其中,然后在html文件中引入,使用link标签

例如:href是css文件路径

<link rel="stylesheet" href="../css/form.css"/>`

我这里使用了外部样式表的方式,使css代码和html代码分离,使结构更加清晰

/* 输入框 */
/* 类选择器 */
.a{
		width: 300px;/*宽度*/
	    height: 40px;/*高度*/
		padding: 5px;/*内边距*/
		font-size: 15px;/*字号*/
}
/* 属性选择器 */
/*修饰提交按钮*/
input[type="submit"]{
	    width: 60px;
	    height: 30px;
	    background-color: blue;
		color: #fff;
		font-size: 15px;
		border-color: blue;
}
input[type="reset"]{
		width: 60px;
		height: 30px;
		background-color:hotpink;
		color: #fff;
		font-size: 15px;
		border-color: hotpink;
}
body{
	font-size: 20px;
}

页面还可以用css做得更加美观哦,这里只是为了测试,如果有兴趣还可以自己做得更加好看哦~

2.准备Student类

package cn.tedu.pojo;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Arrays;
import java.util.Date;
//@RequestMapping("find")
//是Model层,用来封装数据,就是一个pojo(封装的属性+get/set)
public class Student {
    //属性(成员变量):变量类型 变量名
    //提交数据的类型  页面上name属性的值
//    public Student find(){
        private String name;
        private Integer age;//避免一些异常,能用引用类型最好使用引用类型
        private Integer sex;
        private String[] hobby;
        private Integer edu;
        //浏览器上提交的日期默认是2021/8/12默认是String类型
        //报错400,需要把String的日期转成Date日期,使用注解 @DateTimeFormat
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date intime;
//    }
// 获取get   set   toString
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
   public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Integer getSex() {
        return sex;
    }
    public void setSex(Integer sex) {
        this.sex = sex;
    }
    public String[] getHobby() {
        return hobby;
    }
    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }
    public Integer getEdu() {
        return edu;
    }
    public void setEdu(Integer edu) {
        this.edu = edu;
    }
    public Date getIntime() {
        return intime;
    }
    public void setIntime(Date intime) {
        this.intime = intime;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", hobby=" + Arrays.toString(hobby) +
                ", edu=" + edu +
                ", intime=" + intime +
                '}';
    }
}

3.创建启动类

一般命名为RunApp,位置必须放在所有资源之上的包里

package cn.tedu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**这是一个启动类
 * 位置:必须在所有资源之上的包里*/
@SpringBootApplication
public class RunApp {
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class);
    }
}

4,创建数据库,表

要与Student类相对应,爱好这一字段是数组类型,而MySQL中没有数组类型,因此使用varchar

注意字符集使用utf-8

使用JDBC把得到的数据入库

5.创建StudentController类

首先要在pom.xml中导入jar包(工具包)

<!--    添加jdbc的jar包依赖-->
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
        </dependency>
    </dependencies>

下面是将数据入库的代码

package cn.tedu.controller;
//是controller层,控制层,用来接受请求和给出响应
import cn.tedu.pojo.Student;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Arrays;
@RestController
@RequestMapping("stu")
public class StudentController {
    @RequestMapping("add")
    public Object add(Student s) throws Exception {
        //实现入库insert--jdbc
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取连接
        String url = "jdbc:mysql://localhost:3306/cgb2106";
        Connection conn = DriverManager.getConnection(url, "root", "123456");
        //SQL骨架
            String sql = "insert into tb_student values(null,?,?,?,?,?,?)";
            //获取传输器
            PreparedStatement ps = conn.prepareStatement(sql);
            //给SQL设置值
            ps.setObject(1, s.getName());
            ps.setObject(2, s.getAge());
            ps.setObject(3, s.getSex());
            //s.getHobby())得到一个数组,不能直接入数据库,需要变成串
            ps.setObject(4, Arrays.toString(s.getHobby()));
            ps.setObject(5, s.getEdu());
            ps.setObject(6, s.getIntime());
            //执行SQL
            ps.executeUpdate();//执行增删改的SQL
            System.out.println("数据插入成功");
            return s;
        }
    }

6.测试

运行启动类,执行前端页面,提交表单数据,并在数据库中查看数据入库情况

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题

    在spring项目中,当请求方式为post时,可能在获取数据之后会有乱码的情况,其中一种解决方法就是在拿到请求参数之前设置编码格式为utf-8,如下 request.setCharacterEncoding("utf-8"); String strId = request.getParameter("id"); String strName = request.getParameter("name"); String strSex = reque

  • SpringMVC post请求的处理

    目录 一,SpringMVC解析POST提交的数据 –1,需求:解析form表单提交的大量数据 –2, 准备html页面 –3,准备Student类 –4,准备RunApp类 –5,准备StuController类 –6,测试 二,改造成Ajax提交post请求的数据 –1,修改网页的 保存按钮 –2,修改网页的 form标签 –3,通过ajax提交数据 –4,修改Controller的代码,添加了返回值和跨域问题的注解 –5,测试 三,总结SpringMVC –1,原理 –2,常用的注解 –3

  • SpringMVC框架post提交数据库出现乱码解决方案

    使用Post添加数据到数据库出现方块乱码 解决方法,在web.xml里最前面添加过滤器,代码如下,放在最前面,因为有优先级,要首先拦截 <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-para

  • 解决SpringMVC接收不到ajaxPOST参数的问题

    问题 今天遇到一个问题,代码如下 java: @PostMapping(value = "/method") @ResponseBody public Object method(Integer id,String audit_content) { return null; } js: var data = {id:7,audit_content:"11111111111111111111a1"}; $.ajax({ type: "POST",

  • SpringMVC post请求中文乱码问题解决

    这篇文章主要介绍了SpringMVC post请求中文乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们在页面难免提交一些中文数据给后台处理,但是发现后台拿到的数据乱码,可以在每一个controller中都设置编码,但是太过于麻烦, 正确的解决办法应该是在web.xml中配置解决中文乱码的过滤器: 问题现象:控制台打印中文乱码如下: 解决办法如下: (web.xml中配置解决中文乱码的顾虑器CharacterEncodingFil

  • SpringMVC解析post请求参数详解

    目录 SpringMVC 一,概述 二.原理: 1.创建form表单 css代码 2.准备Student类 3.创建启动类 4,创建数据库,表 使用JDBC把得到的数据入库 5.创建StudentController类 6.测试 总结 SpringMVC 一,概述 作用是接受服务器请求并做出响应,是spring的后续产品,使用注解@RestController和@RequestMapping MVC设计模式: M是model模型,用来封装数据 V是view视图,用来展示数据 C是control控

  • 学习SpringMVC——如何获取请求参数详解

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解这块,spring mvc就为你打开了五彩斑斓的世界.来来来,不要兴(mi)奋(hu),坐下来,我们好好聊聊这么些个注解兄弟们~~~(wait, 都没有听过? 好,来,你坐前排,就你!)  一.spring mvc如何匹配请求路径--"请求路径哪家

  • SpringMVC实现获取请求参数方法详解

    目录 1.通过ServletAPI获取 2.通过控制器方法的形参获取请求参数 3.@RequestParam 4.@RequestHeader 5.@CookieValue 6.通过POJO获取请求参数 7.解决获取请求参数的乱码问题 1.通过ServletAPI获取 将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象 <a th:href="@{/testServletAPI(username=

  • 基于SpringMVC接受JSON参数详解及常见错误总结

    最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前台全部改成Ajax了,跳转再使用SpringMVC控制转发.对于传输JSON数据这边有了更深的一些理解,分享出来,请大家指正. 在SpringMVC中我们可以选择数种接受JSON的方式,在说SpringMVC如何接受JSON之前,我们先聊聊什么是JSON.具体的定义我也不赘述了,在JavaScript中我们经常这样定义JSON 对象 var jsonO

  • SpringMVC请求数据详解讲解

    目录 一.RequestMapping注解 1.RequestMapping的属性 2.RequestMapping的请求参数绑定 二.RequestParam注解 三.RequestBody注解 四.RestFul风格 1.@PathVariable注解 2.使用method属性指定请求类型 一.RequestMapping注解 RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系 RequestMapping注解可以作用在方法和类上 作用在类上:第一级的访问目录 作

  • Java Spring MVC获取请求数据详解操作

    目录 1. 获得请求参数 2. 获得基本类型参数 3. 获得POJO类型参数 4. 获得数组类型参数 5. 获得集合类型参数 6. 请求数据乱码问题 7. 参数绑定注解 @requestParam 8. 获得Restful风格的参数 9. 自定义类型转换器 1.定义转换器类实现Converter接口 2.在配置文件中声明转换器 3.在<annotation-driven>中引用转换器 10. 获得Servlet相关API 11. 获得请求头 11.1 @RequestHeader 11.2 @

  • Spring集成Web环境与SpringMVC组件的扩展使用详解

    目录 一.Spring集成Web环境(解耦) 二.SpringMVC快速入门 三.SpringMVC的执行流程 四.SpringMVC组件解析 五.SpringMVC注解解析 六.SpringMVC组件扫描的扩展 七.SpringMVC的XML配置解析之视图解析器 一.Spring集成Web环境(解耦) 实际开发中,我们通常需要编写多个Web相关的Servlet的时候,如下 package com.kang.service; import org.springframework.context.

  • SpringMVC使用RESTful接口案例详解

    目录 一.准备工作 二.功能清单 三.具体功能-访问首页 一.准备工作 和传统 CRUD 一样,实现对员工信息的增删改查. ①搭建环境 添加相关依赖 web.xml springmvc.xml ②准备实体类 public class Employee { private Integer id; private String lastName; private String email; //1 male, 0 female private Integer gender; public Integ

  • JS JSOP跨域请求实例详解

    在项目开发中遇到跨域的问题,一般都是通过JSONP来解决的.但是JSONP到底是个什么东西呢,实现的原理又是什么呢.在项目的空闲时间可以好好的来研究一下了. 1.什么是JSONP? 要了解JSONP,不得不提一下JSON,那么什么是JSON? JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the langu

  • JavaScript处理解析JSON数据过程详解

    JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON的规则很简单: 对象是一个无序的"'名称/值'对"集合.一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"

随机推荐