Springboot前后端分离项目后端深入学习

文章目录


前言

主要是测试数据库,负责发送给前端JSON数据,检查数据规范,学习新知识。

技术mybatis-plus,druid等,后续会更新很多。

项目目录


 

一、登录页面请求处理

前端发送请求,controller接收,并且访问底层

二、开发步骤

1.

代码如下(示例):config文件夹下新建DruidConfig

Druid简介

Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。

Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。

Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。

 /*
       将自定义的 Druid数据源添加到容器中,不再让 Spring Boot 自动创建
       绑定全局配置文件中的 druid 数据源属性到 com.alibaba.druid.pool.DruidDataSource从而让它们生效
       @ConfigurationProperties(prefix = "spring.datasource"):作用就是将 全局配置文件中
       前缀为 spring.datasource的属性值注入到 com.alibaba.druid.pool.DruidDataSource 的同名参数中
     */
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }
    //配置 Druid 监控管理后台的Servlet;
   //内置 Servlet 容器时没有web.xml文件,所以使用 Spring Boot 的注册 Servlet 方式
    @Bean
    public ServletRegistrationBean statViewServlet() {
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");

        // 这些参数可以在 com.alibaba.druid.support.http.StatViewServlet 
        // 的父类 com.alibaba.druid.support.http.ResourceServlet 中找到
        Map<String, String> initParams = new HashMap<>();
        initParams.put("loginUsername", "admin"); //后台管理界面的登录账号
        initParams.put("loginPassword", "123456"); //后台管理界面的登录密码

        //后台允许谁可以访问
        //initParams.put("allow", "localhost"):表示只有本机可以访问
        //initParams.put("allow", ""):为空或者为null时,表示允许所有访问
        initParams.put("allow", "");
        //deny:Druid 后台拒绝谁访问
        //initParams.put("kuangshen", "192.168.1.20");表示禁止此ip访问

        //设置初始化参数
        bean.setInitParameters(initParams);
        return bean;
    }

 

yml文件设置

  #Spring Boot 默认是不注入这些属性值的,需要自己绑定
  #druid 数据源专有配置
  initialSize: 5
  minIdle: 5
  maxActive: 20
  maxWait: 60000
  timeBetweenEvictionRunsMillis: 60000
  minEvictableIdleTimeMillis: 300000
  validationQuery: SELECT 1 FROM DUAL
  testWhileIdle: true
  testOnBorrow: false
  testOnReturn: false
  poolPreparedStatements: true

  #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
  #如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
  #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
  filters: stat,wall,log4j
  maxPoolPreparedStatementPerConnectionSize: 20
  useGlobalDataSourceStat: true
  connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

2.配置mybatis-plus

部分代码

yml里:

mybatis-plus:
  type-aliases-package: com.spc.shiwu.pojo

  mapper-locations: classpath:com/spc/shiwu/mapper/*.xml
  #日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

serviceImpl代码

   @Autowired
    private UserMapper userMapper;



    @Override
    public User login(String username, String password) {
        //登录测试
        HashMap<String, Object> map = new HashMap<>();
        //数据库字段名,mybatis-plus会自动拼接
        map.put("account",username);
        map.put("password",password);
        //因为返回的是list的数据,所以选择list里第一个user返回
        List<User> users = userMapper.selectByMap(map);
        return users.get(0);
    }

controller页面

@RestController
@RequestMapping("/shiwu")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/login")
    public String getHelloSpringBoot() {
        //简单测试
        User user = userService.login("979", "bhJNqaE9qb");
        System.out.println(user.toString());
        return user.toString();
    }

}

效果演示

配置完毕后,我们可以选择访问 :http://localhost:8080/druid/login.html

 

 平时在工作中,按需求进行配置即可,主要用作监控!

 

总结

出错的地方就是在controller页面,注解使用错误,导致页面404,哪怕进入方法后还是返回404

@Controller

@RestController

 controller中@Controller注解后面需要添加@ResponseBody注解,

@RestController 注解相当于@ResponseBody + @Controller合在一起的作用,所以建议用这个。

第一篇博客,纪念一下!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值