后端String框架

1,Maven

  1. 概述

管理jar包: 下载,保存,编译,更新…
仓库:

  1. 远程仓库/中央仓库: 本质山就是一个国外的网址
  2. 镜像仓库: 就是一个国内的网址,已经帮你下载好了jar包
  3. 本地仓库: 就是一个你自己创建的文件夹,存放下载好的jar包的 (D:\Java\maven\resp)

坐标:存放jar包的路径

依赖:Ajar包可能会依赖着好多jar包,maven都会管理所有jar包

  1. 使用步骤
  1. 解压maven压缩包,能找到settings.xml文件,需要改两处(本地 仓库+镜像仓库)
  2. settings.xml文件
  1. 在 IDEA里用maven
  1. 创建Maven工程

File -New -Project -选Maven-输入工程名和域名 -finish

  1. 配置maven
  1. 找到maven: File- Settings- Build,execution…- Build Tools- Maven – 配置最后三行
  2. 配置maven的解压文件的路径 和 settings.xml文件的路径
  1. 修改pom.xml文件,添加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">

    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.tedu</groupId>

    <artifactId>cgb2107maven02</artifactId>

    <version>1.0-SNAPSHOT</version>

    <!--  管理jar包,提供坐标,Maven自动下载依赖的  -->

    <dependencies>

   <!--添加jar包,jdbc的坐标,groupId组id,artifactId是项目

id,version是jar包的版本-->

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

            <!--jar包的版本要和数据库的版本一致,5.X的jar包对

应5.X的数据库-->

            <version>5.1.48</version>

            <!-- <version>8.0.15</version> -->

        </dependency>

    </dependencies>

</project>

  1. 检查本地仓库

  1. 常用的maven命令

  1. Spring Boot
  1. 概述
  1. 简化了Maven的操作(用啥jar包就添加一个jar包的坐标)
  2. 内嵌了Tomcat服务器,可以访问服务器里的程序
  1. 项目结构

  1. 创建StringBoot工程

  1. 给工程配置maven信息

  1. string boot 的pom.xml
  1. 给服务器添加资源
  1. 项目结构

  1. 添加HelloBoot类

package cn.tedu.cgb2107boot01;

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

import org.springframework.web.bind.annotation.RestController;

//想让浏览器访问类,方法吗?必须使用两个注解才行

@RestController

//作用:是springmvc框架提供的,用来让浏览器访问类的+只能用在类上

@RequestMapping("hello")//作用:规定了访问方式+可以在类上或者方法上用

public class HelloBoot {

    //浏览器:http://localhost:8080/hello/abc

    @RequestMapping("abc")

    public String hello(){

        return "hello spring boot" ;//返回给浏览器!!!

    }

    //浏览器:http://localhost:8080/hello/get

    @RequestMapping("get")

    public void get(){

        System.out.println(100);

    }

}

  1. 重启服务器

  1. 测试

  1. StringMVC
  1. 概述

是Spring框架的明星产品,用来 接受浏览器发来的请求 + 并返回数据

遵循MVC思想: 主要是想要松耦合,实现代码间的高内聚, 提高代码的可维护性

M 是Model, 模型层, 用来封装数据

V 是View, 视图层, 用来展示数据

C 是Controller, 控制层 作用就是用来 接受请求和给出响应

  1. 工作原理

五个核心的组件

  1. 前端控制器DispatcherServlet: 接受请求并分发请求
  2. 处理器映射器HandlerMapping: 根据请求,找到具体能处理请求 的类名,方法名
  3. 处理器适配器HandlerAdapter: 正式开始调用方法处理请求,并 返回结果
  4. 视图解析器ViewResolver: 把页面找到,把数据进行解析
  5. 视图渲染View: 具体展示数据并返回给浏览器
  1. 测试

创建maven module

选中工程-右键-New-Module-选中Maven-next-输入module名 -finish

创建启动类

package cn.tedu.hello;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication//作为启动类,用来启动服务器

public class RunApp {

    public static void main(String[] args) {

        //利用springboot运行指定类

        SpringApplication.run(RunApp.class);

    }

}

  1. StringMVC框架
  1. 概述

主要作用: 接受请求 + 做出响应
使用步骤:

  1. 导入jar包 (核心: spring-webmvc.jar),被springboot简化了
  2. 创建启动类,启动服务器
  3. 准备服务器里的资源,可以被浏览器访问
  1. 入门案例
  1. 项目结构

  1. 创建启动类

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是springboot提供的,启动指定类

        SpringApplication.run(RunApp.class);

    }

}

  1. 创建CarController类

package cn.tedu.hello;

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

import org.springframework.web.bind.annotation.RestController;

//需求: http://localhost:8080/car/get

@RestController//是springmvc提供的,可以被浏览器访问

@RequestMapping("car")//是springmvc提供的,规定了浏览器访问这个类的方式

public class CarController {

    //访问方式:http://localhost:8080/car/get

    @RequestMapping("get")

    public void get(){

        System.out.println("浏览器访问成功!");

    }

}

  1. 测试

打开浏览器访问: http://localhost:8080/car/get

  1. springmvc框架解析请求参数
  1. get方式

把数据用?拼接在地址栏中,多数据之间用& 连接 :
http://localhost:8080/car/add?id=10

(1)解析复杂的参数

package cn.tedu.hello;

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

import org.springframework.web.bind.annotation.RestController;

//需求: http://localhost:8080/car/get

/*

总结:

1, SpringMVC可以接受请求,并解析请求参数

只要在方法的参数列表中声明就可以:public void add(int id,String name)

2, 为了避免400或者500的异常,最好把参数列表的参数类型改成引用类型

    改后:public void add(Integer id,String name)

3, 参数列表可以提供一个对象,框架可以解析参数,并且可以把参数直接给对象的属性赋值

    public void save2(Car c)

 */

@RestController//是springmvc提供的,可以被浏览器访问

@RequestMapping("car")

//是springmvc提供的,规定了浏览器访问这个类的方式

public class CarController {

    @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

        //优化1:推荐使用引用类型,因为规避了异常的发生!!!

        System.out.println(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(c);

        //Car{id=1, color='red', price=100.0, pinpai='BMW',

 type='X7'}

    }

}

(2)创建Car类

package cn.tedu.hello;

//http://localhost:8080/car/save2?

// id=1&color=red&price=100&pinpai=BMW&type=X7

//这个类用来存,springmvc框架解析到的请求参数

public class Car {

    private Integer id;

    private String color;

    private Double price;

    private String pinpai;

    private String type ;

    //set get tostring --右键-generate

    public Integer getId() {

        return id;

    }

    public void setId(Integer id) {

        this.id = id;

    }

    public String getColor() {

        return color;

    }

    public void setColor(String color) {

        this.color = color;

    }

    public Double getPrice() {

        return price;

    }

    public void setPrice(Double price) {

        this.price = price;

    }

    public String getPinpai() {

        return pinpai;

    }

    public void setPinpai(String pinpai) {

        this.pinpai = pinpai;

    }

    public String getType() {

        return type;

    }

    public void setType(String type) {

        this.type = type;

    }

    public String toString() {

        return "Car{" +

                "id=" + id +

                ", color='" + color + '\'' +

                ", price=" + price +

                ", pinpai='" + pinpai + '\'' +

                ", type='" + type + '\'' +

                '}';

    }

}

  1. restful方式

  1. 在IDEA里创建后端代码UserController类

package cn.tedu.hello;

import org.springframework.web.bind.annotation.PathVariable;

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

import org.springframework.web.bind.annotation.RestController;

//需求:解析restful风格提交的数据,简化了get提交数据的写法

//普通get方式:http://localhost:8080/user/insert?id=1&name=张三&age=18

//restful方式:http://localhost:8080/user/insert/1/张三/18

@RestController

@RequestMapping("user")

public class UserController {

//解析get数据:http://localhost:8080/user/insert?id=1&name=张三&age=18

    @RequestMapping("insert")

    public Object insert(Integer id,String name,Integer age){

        return id+name+age;

    }

//解析restful数据:http://localhost:8080/user/insert2/1/张三/18

    //步骤:1,利用{}获取地址栏中的参数,个数和顺序要和地址栏里的参数匹配

        //2,利用@PathVariable注解,获取花括号中间的变量的值

    @RequestMapping("insert2/{id}/{name}/{age}")

    public void insert2(@PathVariable Integer id,

                        @PathVariable String name,

                        @PathVariable Integer age){

        System.out.println(id+name+age);

}

  1. 在HB里创建前端HTML代码

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>前后端整合</title>

</head>

<body>

<a href="http://localhost:8080/user/insert">

普通访问</a>

<a href="http://localhost:8080/user/insert?

id=10&name=rose&age=20">普通的get提交方式</a>

<a href="http://localhost:8080/

user/insert2/10/rose/20">restful方式</a>

</body>

</html>

  1. 测试

  1. 练习

需求:

练习:http://localhost:8080/car/save2?

id=1&color=red&price=100&pinpai=BMW&type=X7

<1>解析浏览器发来的请求参数

<2>给浏览器返回数据

修改前端页面

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>前后端整合</title>

</head>

<body>

<a href="http://localhost:8080/user/insert">

普通访问</a>

<a href="http://localhost:8080/user/insert?

id=10&name=rose&age=20">普通的get提交方式</a>

<a href="http://localhost:8080/user/insert2

/10/rose/20">restful方式</a>

<a href="http://localhost:8080/car/save3?

id=1&color=red&price=100&pinpai=BMW&type=X7">

点我获取汽车数据</a>

</body>

</html>

修改后端代码,创建类

package cn.tedu.hello;

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

import org.springframework.web.bind.annotation.RestController;

@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){

       //TODO 把解析到的请求参数 getXxx()入库--jdbc

        //pom里加jdbc的坐标

        //在数据库里创建car表

(提供id,color,price,pinpai,type字段)

        //注册驱动 获取数据库连接 获取传输器

执行SQL 解析结果集 释放资源

        //{"id":1,"color":"red","price":100.0,

"pinpai":"BMW","type":"X7"}

        return c;

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值