package cn.tedu.hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication //springboot 提供的,表示自己是一个启动类,用来启动服务器 public class RunApp { public static void main(String[] args) { //启动指定类 SpringApplication.run(RunApp.class,"1"); } }
package cn.tedu.hello; //练习4:http://localhost:8080/car/save2? // id=1&color=red&price=100&pinpai=BMW&type=X7 public class Car { private Integer id; private String color; private Double price; private String pinpai; private String type; //set get toString 右键 -> generate public void setId(Integer id) { this.id = id; } public void setColor(String color) { this.color = color; } public void setPrice(Double price) { this.price = price; } public void setPinpai(String pinpai) { this.pinpai = pinpai; } public void setType(String type) { this.type = type; } public Integer getId() { return id; } public String getColor() { return color; } public Double getPrice() { return price; } public String getPinpai() { return pinpai; } public String getType() { return type; } @Override public String toString() { return "Car{" + "id=" + id + ", color='" + color + '\'' + ", price=" + price + ", pinpai='" + pinpai + '\'' + ", type='" + type + '\'' + '}'; } }
package cn.tedu.hello; //需求:http://localhost:8080/car/get import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 总结: * 1,StringMVC可以接受请求,顺便解析请求参数 * 只要在方法的参数列表中声明就可以:public void add(int id,String name) * 2,为了避免400或则500的异常,最好把参数列表的参数类型改成引用类型 * 改后:public void add(Integer id,String name) * 3,参数列表可以提供一个对象,框架可以解析参数,并且可以把参数直接给对象的属性赋值 * public void save(Car c) */ @RestController //是springmvc提供的,可以被浏览器访问 @RequestMapping("car") //是springmvc提供的,规定了浏览器访问这个类的方式 public class CarController { //访问方式:http://localhost:8080/car/get @RequestMapping("get") public void get(){ System.out.println("浏览器访问成功!~!!"); } //springmvc解析get方式提交的数据 //练习1:http://localhost:8080/car/add?id=10 @RequestMapping("add") public void add(Integer id){ //参数列表的写法:1,参数类型必须和请求的参数类型一致 //2,参数名称必须和请求的参数名称一致 System.out.println("浏览器成功访问add!!!" + id ); } //练习2:http://localhost:8080/car/add2?id=10&name=jack @RequestMapping("add2") public void add(Integer id,String name){ System.out.println("浏览器成功访问add!!!"+id+name ); } //练习3:http://localhost:8080/car/save?id=1&color=red&price=100 //HandlerMapping :处理器映射器,拿着地址栏的访问方式找到哪个类哪个方法 //Map<String,Object> {"/car/save",new CarController().save()} @RequestMapping("save") public void save(Integer id,String color,Double price){ //基本类型的参数,访问时必须传参否则400 500 异常, //引用类型不传入参数也行就会用沉默值null //推荐使用引用类型,因为规避了异常的发生!!! System.out.println("浏览器成功访问save!!!"+id+color+price); } //练习4:http://localhost:8080/car/save2?id=1&color=red&price=100&pinpai=BMW&type=X7 //框架的作用:1,解析了请求参数 2,把解析到的参数调用c.setXxx()设置值 @RequestMapping("save2") public void save2(Car c){ System.out.println("浏览器成功访问save!!!"+c); //浏览器成功访问save!!!Car{id=1, color='red', price=100.0, pinpai='BMW', type='X7'} } }
package cn.tedu.hello; 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("car") public class CarController2 { //1,解析浏览器发来的请求参数 //http://localhost:8080/car/save3? //id=1&color=red&price=100&pinpai=BMW&type=X7 @RequestMapping("save3") public Object save3(Car c) throws Exception { //TODO 把解析到的请求参数 getXxx()入库--jdbc //1,pom里加jdbc的坐标 //2,在数据库里创建car表(提供id,color,price,pinpai,type字段) /* CREATE TABLE car( id INT PRIMARY KEY AUTO_INCREMENT