SpringMVC

1.概述

框架: 是一个结构,框架提供了很多的类,由框架控制每个类调用的过程流程 SSM框架里,第一个S就是指SpringMVC,是一个框架. 是Spring框架的一个后续产品,遵循了MVC的设计模式,保证了程序间的松耦合. SpringMVC主要作用:1,接受请求(解析请求参数) 2,做出响应 MVC的设计模式: M是Model模型,用来封装数据 V是View视图,用来展示数据 C是Controller控制器,用来控制浏览器如何请求,做出数据响应 好处: 提高代码的复用性 , 松耦合

2.入门案例---插入表格中

2.1.一个启动类RunApp,用来启动服务器

//标记着这是springboot的启动类
@SpringBootApplication
public class RunApp {
   public static void main(String[] args) {
       SpringApplication.run(RunApp.class);//运行当前类
  }
}

2.2.一个pojo类

public class Car{
   private String name ;
   private Integer Id ;
   private String Type ;
   private Double Price ;
}

 

2.3.一个控制类

//完成springmvc的角色,接受请求和给出响应
//是MVC设计模式里的C控制器,接受请求和给出响应
@RestController
//标记着这个类是Controller是一个控制器+接受请求
@RequestMapping("car")//规定了url怎么访问这个类
public class HelloController {
   //测试: http://localhost:8080/car/get
   @RequestMapping("get")//规定了url怎么访问这个方法
   public String show(){
       return "123";
  }
//   SpringMVC框架除了能返回字符串,整数以外,还能返回对象信息
//测试: http://localhost:8080/car/get2
   @RequestMapping("get2")
   public Car get(){
       Car c = new Car();
       //给客户端准备数据
       c.setId(718);
       c.setName("保时捷");
       c.setType("Cayman T");
       c.setColor("红色");
       c.setPrice(641000);
       return c; //把对象信息 变成JSON字符串在浏览器展示
  }
@RequestMapping("get")//规定了浏览器的访问方式
public class GetController{
   //测试 http://localhost:8080/get/param4?id=100&name=BMW&type=X6&color=red&price=9.9
   @RequestMapping("param4")
   //public String param4(int id,String name,String type,String color,double price){
   public Car param4(Car c){//直接用对象接受参数,框架会自动封装属性的值
       return c;
  }

 

3..SpringMVC解析请求的参数

restful风格的数据:http://localhost:8080/car/insert/1/张三/18

3.1 分割获取属性

 @Test //单元测试方法
   public void get1(){
       String url ="http://localhost:8080/car/insert?id=1&name=张三&age=18";
       String[] a = url.split("\\?")[1].split("&");
       for(String s : a){
           String data = s.split("=")[1];
           System.out.println(data);
      }
  }

 

3.2 spring获取属性(也可以对象)

//测试:localhost:8080/get/param3?id=100&name=张三&price=9.9
   @RequestMapping("param3")
   public String param3(int id,String name,double price){
       return id+name+price;
  }



//解析restful传递的参数:简化了get方式参数的写法
   //http://localhost:8080/car/get2/100/张三
   @RequestMapping("get2/{id}/{name}")
//{x}--通过{}获取访问路径中携带的参数,并且交给变量x保存
//@PathVariable -- 获取{}中间变量的值

•    public String get2(@PathVariable Integer id,
•                       @PathVariable String name){
•        return id+name;
•   }

4 利用jdbc把接受到的参数入库

4.1 操作cgb2106的库, 创建tb_student表(参考Student类)

CREATE TABLE tb_student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(50),
age INT,
sex INT,
hobby VARCHAR(100),
edu INT,
intime DATE
)

4.2 修改pom.xml文件,添加jdbc的jar包的坐标

<?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>cgb2106boot03</artifactId>
       <groupId>cn.tedu</groupId>
       <version>0.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>

   <artifactId>day14</artifactId>


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

</project>

4.3 实现入库 JDBC

//是C层,控制层,用来接受请求和给出响应
@RestController
@RequestMapping("stu")
public class StudentController {
   @RequestMapping("add")
   public Object add(Student s) throws Exception {
       //TODO 利用jdbc,实现入库
       //注册驱动
       Class.forName("com.mysql.jdbc.Driver");
       //获取连接 (cgb2106库名)
       String url="jdbc:mysql:///cgb2106?characterEncoding=utf8";
       Connection conn = DriverManager.getConnection(url,"root","root");
       //获取传输器
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;
  }

}

 

上一篇:Spring——MVC乱码处理(提交参数和返回数据)


下一篇:SpringMvc - 请求重定向与请求转发