springboot、mvc框架、面向接口开发、连接池导包

本文详细介绍了SpringBoot的使用,包括@RestController注解实现前后端数据交互,@Controller注解映射前端页面,以及SpringBoot中的MVC架构。同时,讨论了面向接口开发的重要性,并讲解了连接池的概念,提供了dbcp和c3p0两个连接池的示例代码。此外,还提到了数据安全性和分层结构在实际应用中的意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、springboot

1、概念:前后端交互用的,运行后不会停止,除非手动停止。

通过注解的方式实现前后端数据的传输。

spring会自动扫描包下面的所有的类,如果这个类上面有注解,spring会通过反射创建当前类的对象(做了实例化创建)

2、注解1:通过注解把后台数据返回个前端页面

(1)RestController:通过反射把一个类和一个ip地址绑定(本地ip地址http://localhost:8080),把返回值当做数据传输给前端。

(2)GetMaping(“/str”):映射一个类中的方法,如果想运行该类中的方法,在ip地址后加上/str

@RestController
public class TestController {
    public TestController() {   //无参构造方法,spring自动对注解的类进行实例化对象
        System.out.println("实例化");
    }
    @GetMapping("/test")
    public String test(){
        return "ok";
    }
    @GetMapping("/show")
    public String show(){
        return "show";
    }
}

 spring会把kv(HashMap,list,自定义的类...)自动转化为json数据

3、注解2:注解后通过后台返回到一个前端页面

@controller:把返回值当做映射关系—去查找项目中有没有一个页面名字和返回值相同。

 在templates目录下创建html文件

@Controller
public class HTMLController {
    @GetMapping("/login")
    public String login(){
        return "login";
    }
}

并在application.properties下配置一下

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

在pom.xml文件下下一个插件

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

@controller注解的类中,只能映射页面,在方法上@getMaping下加上@ResponseBody表示返回值是数据,不是映射页面了。

二、mvc框架

1、各个分层结构

表现层(presentation):前后端交互  代码中包名通常为为controller
业务层(business)    :查询数据库的代码(service)
持久层(persistence)  :查询数据之前 前后端交互之后的逻辑判断(判断用户名和密码是否符合规则)(dao)
数据库(database)
这其实也是最常见的 MVC 架构了。

2、面向接口开发

接口 API 数据接口:spring中加了注解的方法

spring中加了注解的方法:会绑定一个前端的地址,所有人都可以访问

1.为了保证数据的安全性,应该给API加个验证 String key

@GetMapping("/API/login")
public String login(String username,String password,String key){}

面向接口开发->分层

3、连接池导包

连接池:提供'接口'用于连接数据库,可以提供指定数量的连接'接口',当用户使用多于'接口'数量时,其他用户处于等待状态。

普通连接数据库时,在程序运行过程中,若连接断开,运行报错,只能关闭程序,重新连接,

而连接池,可以不用关闭程序,可以自动重新连接。

<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.5</version>
		</dependency>

(1)dbcp建立连接池

import org.apache.commons.dbcp.BasicDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Demo01DBCP {
    public static void main(String[] args) throws Exception {
        /**
         * 1.创建线程池
         * 2.指定连接属性
         */
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        basicDataSource.setUrl("jdbc:mysql://master:3306/shujia");
        basicDataSource.setUsername("root");
        basicDataSource.setPassword("123456");
        /**
         * 创建连接池中,连接数量为2
         */
        basicDataSource.setInitialSize(2);
        /**
         *  允许每个连接的最大连接数量,总共能连接10下,可以在连接过后关闭连接,可以使后面的连接不在等待。 
         */
        basicDataSource.setMaxActive(5);
        /**
         * 超时时间
         */
        basicDataSource.setMaxIdle(10);


        Connection conn = basicDataSource.getConnection();
        String sql = "select * from user";
        PreparedStatement ps = conn.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            System.out.println(rs.getString("name"));
        }
        conn.close();

    }
}

(2)c3p0建立连接池

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Demo02C3P0 {
    public static void main(String[] args) throws Exception {
        /**
         * 1.创建连接池
         * 2.指定连接信息
         */
        ComboPooledDataSource ds = new ComboPooledDataSource();
        ds.setDriverClass("com.mysql.jdbc.Driver");
        ds.setJdbcUrl("jdbc:mysql://master:3306/shujia");
        ds.setUser("root");
        ds.setPassword("123456");

        ds.setInitialPoolSize(2);

        Connection conn = ds.getConnection();
        String sql = "select * from user";
        PreparedStatement ps = conn.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            System.out.println(rs.getString("name"));
        } 
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值