SpringMVC与前端交互案例教程

目录
  • 一,创建day13的module
  • 二,复习SpringMVC
    • –1,需求:访问/car/get ,获取汽车数据
    • –2,创建RunApp类
    • –3,创建Car类
    • –4,创建CarController类
  • 三,SpringMVC解析请求参数
    • –1,普通的GET提交
    • –2,RestFul提交
  • 四,简单的前后端关联
    • –1,需求
    • –2,创建html页面
    • –3,创建UserController类,解析参数
  • 五,利用JDBC技术,把请求参数入库
    • –1,添加jdbc的依赖(修改pom.xml)
    • –2,准备user表
    • –3,修改UserController类的save()
    • –4,测试
  • 六、总结

一,创建day13的module

选中project-右键-new-module-选择maven-next-输入module名-finish

二,复习SpringMVC

–1,需求:访问/car/get ,获取汽车数据

–2,创建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);
    }
}

–3,创建Car类

package cn.tedu.pojo;
//Model用来封装数据
public class Car {
    private int id;
    private String name;
    private double price;
    //Constructor构造方法,用来方便的new
    public Car(){}
    public Car(int id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
}

–4,创建CarController类

package cn.tedu.controller;
//MVC里的C层,用来接受请求和做出响应(springmvc)
import cn.tedu.pojo.Car;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController//接受请求,并把json数据返回
@RequestMapping("car")  //规定了url地址的写法
public class CarController {
    @RequestMapping("get")
    public Car get(){
        Car c = new Car(10,"BMW",19.9);
        return c ;
    }
}

三,SpringMVC解析请求参数

SpringMVC框架,可以自动解析请求中,携带的参数。甚至可以直接封装成Java对象。而不必自己一个个解析参数。

–1,普通的GET提交

package cn.tedu.controller;
//MVC里的C层,用来接受请求和做出响应(springmvc)
import cn.tedu.pojo.Car;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController//接受请求,并把json数据返回
@RequestMapping("car")  //规定了url地址的写法
public class CarController {
    //SpringMVC框架解析请求中的参数
    //http://localhost:8080/car/get5?id=10&name=BMW&price=9.9
    @RequestMapping("get5")
    public void get5(Car c){//springmvc框架会把请求的参数,封装给car对象
        System.out.println(c.getId()+c.getName()+c.getPrice());
    }
    //http://localhost:8080/car/get4?id=10&name=BMW
    @RequestMapping("get4")
    public void get4(Integer id,String name){
        //id是用来接受url里id的值,name用来接受url里name的值
        System.out.println(id+name);
    }
    //http://localhost:8080/car/get3?id=10
    @RequestMapping("get3")
//    public void get3(int id){ //参数是基本类型,访问这个方法必须带参数,否则有异常
    public void get3(Integer id){//参数是引用类型,访问这个方法没带参数就是null
        System.out.println(id);
    }
    //自己解析请求中的参数
    public void get2(){
        String url="http://localhost:8080/car/get2?id=10&name=BMW&price=9.9";
        //先按?切出来,取第二部分,再用&切出来参数名和参数值[id=10,name=BMW,price=9.9]
        String[] s = url.split("\\?")[1].split("&");
        for (String ss : s) {
            String key =  ss.split("=")[0];
            String value = ss.split("=")[1] ;
        }
    }
    @RequestMapping("get")
    public Car get(){
        Car c = new Car(10,"BMW",19.9);
        return c ;
    }
}

–2,RestFul提交

package cn.tedu.controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//对比,请求参数的不同获取方式:get/restful
@RestController
@RequestMapping("car2")
public class CarController2 {
    //1.普通的get方式获取请求参数
    //解析参数:http://localhost:8080/car2/get?id=10&name=BMW&age=10&sex=1
    @RequestMapping("get")
    public String get(Integer id,String name,Integer age,Integer sex){
//        return id+name+age+sex ;//直接把结果展示在浏览器上
        return "{'id':'"+id+"'}" ;//组织成json串给浏览器展示
    }
    //2.restful方式获取请求参数:通过{}绑定地址中参数的位置 + 通过注解获取{???}的值
    //解析参数:http://localhost:8080/car2/get2/10/BMW/10/1
    @RequestMapping("get2/{id}/{name}/{x}/{y}")
    public void get2(@PathVariable Integer id,
                     @PathVariable String name,
                     @PathVariable   String x,
                     @PathVariable Integer y){
        System.out.println(id);
        System.out.println(name);
        System.out.println(x);
        System.out.println(y);
    }
}

四,简单的前后端关联

–1,需求

点击页面的a,Get方式提交数据,交给框架解析参数

–2,创建html页面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>用get方式提交数据给服务器</title>
	</head>
	<body>
		<a href="http://localhost:8080/user/save?id=857&name=jack&age=666">点我提交数据get</a>
		<a href="http://localhost:8080/user/save2/857/jack/666">点我提交数据restful</a>
	</body>
</html>

–3,创建UserController类,解析参数

package cn.tedu.controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("user")
public class UserController {
    //1. 解析get的请求参数 http://localhost:8080/user/save?id=857&name=jack&age=666
    @RequestMapping("save")
    public void save(Integer id,String name,Integer age){
        System.out.println(id+name+age);
    }
    //2. 解析restful的请求参数 http://localhost:8080/user/save2/857/jack/666
    //get和restful的区别?
         //get的好处是数据都在地址栏拼接,restful的好处是相对安全
        //restful主要是用来优化、简化get提交数据的写法
    @RequestMapping("save2/{x}/{y}/{z}")
    public void save2(@PathVariable Integer x,
                      @PathVariable String y,
                      @PathVariable Integer z){
        System.out.println(x+y+z);
    }
}

五,利用JDBC技术,把请求参数入库

–1,添加jdbc的依赖(修改pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cgb2104boot01</artifactId>
        <groupId>cn.tedu</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>day13</artifactId>
    <!--添加jar包的依赖-->
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
        </dependency>
    </dependencies>
</project>

–2,准备user表

CREATE TABLE `user` (
  `id` int(3) default NULL,
  `name` varchar(10) default NULL,
  `age` int(2) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

–3,修改UserController类的save()

package cn.tedu.controller;
import org.springframework.web.bind.annotation.PathVariable;
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;
@RestController
@RequestMapping("user")
public class UserController {
    //1. 解析get的请求参数 http://localhost:8080/user/save?id=857&name=jack&age=666
    @RequestMapping("save")
    public void save(Integer id,String name,Integer age) throws Exception {
//        System.out.println(id+name+age);
        /* 把解析出来的参数,利用jdbc技术入库*/
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取连接
        String url ="jdbc:mysql:///cgb2104?characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai";
        Connection conn = DriverManager.getConnection(url,"root","root");
        //获取传输器
//        String sql= "insert into user(id,name) values(?,?)";//给指定的字段设置值
        String sql= "insert into user values(?,?,?)";//所有字段设置值
        PreparedStatement ps = conn.prepareStatement(sql);
        //给SQL设置参数
        ps.setInt(1,id);//给第一个?设置值
        ps.setString(2,name);//给第二个?设置值
        ps.setInt(3,age);//给第三个?设置值
        //执行SQL
        int rows = ps.executeUpdate();
        //释放资源 -- OOM(OutOfMemory)
        ps.close();
        conn.close();
    }
    //2. 解析restful的请求参数 http://localhost:8080/user/save2/857/jack/666
    //get和restful的区别?
         //get的好处是数据都在地址栏拼接,restful的好处是相对安全
        //restful主要是用来优化、简化get提交数据的写法
    @RequestMapping("save2/{x}/{y}/{z}")
    public void save2(@PathVariable Integer x,
                      @PathVariable String y,
                      @PathVariable Integer z){
        System.out.println(x+y+z);
    }
}

–4,测试

六、总结

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

(0)

相关推荐

  • 使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)

    1 框架组成 Spring SpringMVC MyBatis 2 所需工具 Mysql 8.0.15 ​数据库管理系统,创建数据库 Tomcat 8.5.51 ​用于部署web项目 Maven 3.6.1 ​项目构建.项目依赖管理 lombok 1.18.10(可用可不用工具) ​用于类注解创建setter.getter.无参构造.全参构造.toString等函数 ​注:只导入依赖,不安装插件是不起作用的 3 搭建步骤 3.1 新建一个空Maven项目,填写项目相关信息,完成 3.2 添加we

  • 使用注解开发SpringMVC详细配置教程

    1.使用注解开发SpringMVC 1.新建一个普通的maven项目,添加web支持 2.在pom.xml中导入相关依赖 SpringMVC相关 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.8.RELEASE</version> </dependency&

  • idea创建springMVC框架和配置小文件的教程图解

    这个框架主要还是思想,之后,,,还是创建项目好了, 1.新建一个项目 新建一个maven,并且选择webapp类型. 2.点击next选项 这里面的两个选项可以随便填,但是Artifactid一般是项目名,第一个可以是自己定义的名称了, 3.继续点next 在这我们可以添加name=archetypeCatalog,internal,可以在创建项目的时候快一点,3.创建好了项目之后就把我创建的一个小案例放上了 1.创建项目的流程01.引入需要的pom文件节点02.web.xml文件中配置核心控制

  • 在IntelliJ IDEA 搭建springmvc项目配置debug的教程详解

    1.添加一个maven 2.选择maven 3.配置好需要debug的父工程 4.配置maven 5.最后就可以打断点debug了 到此这篇关于在IntelliJ IDEA 搭建springmvc项目配置debug的教程详解的文章就介绍到这了,更多相关IDEA 搭建springmvc项目配置debug内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • spring+springmvc+mybatis+maven入门实战(超详细教程)

    入门篇 本篇文章涉及到的技术有spring.springmvc.mybatis.mysql.xml.maven.jsp.javase.javaweb.eclipse 下面开始本篇文章的教程 一.新建maven项目 一般通过这种方法新建maven项目 假如你的eclipse不能通过上面的方法新建maven项目,也可以通过下面的方法新建maven项目 看到下面的项目结构,说明你已经成功创建了一个maven项目.但是这个项目报错,根据标准的web项目结构来说,目前这个项目缺少了web.xml 利用ec

  • SpringMVC与前端交互案例教程

    目录 一,创建day13的module 二,复习SpringMVC –1,需求:访问/car/get ,获取汽车数据 –2,创建RunApp类 –3,创建Car类 –4,创建CarController类 三,SpringMVC解析请求参数 –1,普通的GET提交 –2,RestFul提交 四,简单的前后端关联 –1,需求 –2,创建html页面 –3,创建UserController类,解析参数 五,利用JDBC技术,把请求参数入库 –1,添加jdbc的依赖(修改pom.xml) –2,准备us

  • SpringMVC实现前端后台交互传递数据

    本人对springmvc前端交互不太懂,搜索了很多关于springmvc前端交互介绍,下面我来记录一下,有需要了解的朋友可参考.希望此文章对各位有所帮助. Controller.java代码: @Controller public class DataController { //一.接收和通过ModelMap传出参数,不需要视图解析器,测试时加了解析器,顾返回值不需后缀 //普通参数 @RequestMapping("/data1") public String data1(@Req

  • BootStrop前端框架入门教程详解

    Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. bootstrap 的学习非常简单,并且它所提供的样式又非常精美.只要稍微简单的学习就可以制作出漂亮的页面. bootstrap中文网:http://v3.bootcss.com/ bootstrap提供了三种类型的下载: -----------------------------------------------

  • Bootstrap前端开发案例一

    现在很多公司开发中都在使用bootstrap这个框架,bootstrap是Twitter公司的一个团队的作品,大大简化了我们的前端的开发.(后面会总结一些less的使用) 学习使用API我建议直接查看官网的API,地址:http://www.bootcss.com/ 下面是部分目标效果图: 下面我就总结一个小Demo中的技巧和原理: 第一步.http://www.bootcss.com/下载bootstrap的压缩包,新建index.html,使用sublime或其它编辑器打开index页面,解

  • springmvc实现json交互-requestBody和responseBody

    json数据交互 1.为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 2.springmvc进行json交互 (1)请求json.输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便. (2)请求key/value.输出json.此方法比较常用. 3.环境准备 3.1加载json转的jar包 springmvc中使用jackson的

  • 浅谈springMVC接收前端json数据的总结

    对于json对象类型(即JsonObject)的数据,springMVC主要有以下几种方式接收: 1.通过Map接收 @RequestMapping(value = "/getAllStudio" ) public void getAllStudio(@RequestBody Map<String, Integer> map ) { JSONObject json = new JSONObject(); Integer page = map.get("page&q

  • Python基础之标准库和常用的第三方库案例教程

    Python基础:标准库和常用的第三方库 Python的标准库有: 名称 作用 datetime 为日期和时间处理同时提供了简单和复杂的方法. zlib 直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile. random 提供了生成随机数的工具. math 为浮点运算提供了对底层C函数库的访问. sys 工具脚本经常调用命令行参数.这些命令行参数以链表形式存储于 sys 模块的 argv 变量. glob 提供了一个函数用于从目录通配符搜索中生成文

  • 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

  • 深入浅析PHP无限极分类的案例教程

    平时开发中或多或少不可避免会遇到无限极分类的问题,因为效率.逻辑等问题也一直使这类问题比较尖锐.今天我们以yii2框架为基础,栏目无限极为例,对这个问题进行一个简单的处理. 首先我们有一张栏目数据表 tree 表结构如下图(原文有图) 看上去表结构很简单. 我们插入几条测试数据 INSERT INTO `tree` (`id`, `parent_id`, `name`) VALUES (1, 0, 'A'), (2, 0, 'B'), (3, 1, 'a'), (4, 3, 'aa'), (5,

  • Vue中的数据监听和数据交互案例解析

    现在我们来看一下vue中的数据监听事件$watch, js代码: new Vue({ el:"#div", data:{ arr:[1,2,3] } }).$watch("arr",function () { alert("数据改变了") }) html代码: <div id="div"> <input type="button" value="改变" @click=&

随机推荐