2023.9.9日报

今天学习了springboot的相关知识,由于自己使用原生的Maven经常出现tomcat配置

与hive数据库冲突的问题,因此选择了内置tomcat不需要自己配置也更加先进的springboot

确实也该学习一些新的技术不能总是局限于原生的javaweb了

以下是今天踩的一些坑

1.用IDEA创建springboot项目时,尽量使用java8和springboot2.x.x的版本,一定要

注意创建的时候选择对应的版本,如果使用springboot3就需要换成java17 不然会显示

无效的发行版

2.建立controller的时候需要在Application的同级目录下,也就是默认创建的包内

在Springboot可以使用以下方式处理静态资源

1.webjars 代指一个三级目录,通过webjars的方式引入如jquerys等原来需要引入的

js文件,通过/webjars/.../..../...即可访问该文件,方便了开发,可以省去下载jquery

并引入的过程

2.public,static,/**,resources

3.优先级:resources>static>public

一般习惯把静态资源放在static中,很少使用webjars

 目前实现了一个简单的登录页面,总结一下用法

1.创建项目,选择

 java8,如果选择java8,next之后上方的SpringBoot版本要选2.x.x,然后进行创建即可

创建完成之后需要做以下几个事情

1.springboot官方推荐使用的是yaml文件,因此把application.properties的后缀改成yaml

不改也行 但是写法有所区别

然后在该文件中写的是数据库的内容 今天由于是刚刚开始 因此我用的mysql进行测试

在连接mysql之前先要添加依赖

复制代码
copy
  <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
            <scope>runtime</scope>
            <exclusions>
                <exclusion>
                    <artifactId>protobuf-java</artifactId>
                    <groupId>com.google.protobuf</groupId>
                </exclusion>
            </exclusions>
        </dependency>
复制代码

这里一定记得写上版本,否则在alimaven的网站中是找不到对应依赖的

之后是添加thymeleaf 这个很重要

添加依赖

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

然后创建controller包,在controller中创建处理方法

我以代码为例来进行阐述吧

复制代码
copy
package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpSession;
import java.util.Map;


@Controller
public class UserController {
    private final UserRepository userDao;

    public UserController(UserRepository userDao) {
        this.userDao = userDao;
    }
    //表示当获取到/user/add的请求时,返回到reg页面
    @GetMapping("/user/add")
    public String addView(){
        return "reg";
    }
    @PostMapping("/user/add")
    public String add(@RequestParam String username, @RequestParam String password) {
        if (username == null || password == null || "".equals(username) || "".equals(password)) {
            return "用户名或密码不能为空";
        }

        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        userDao.save(user);

        return "redirect:/user/login";
    }
    @GetMapping("/user/login")
    public String loginView()
    {
        return "login";
    }
    @PostMapping("/user/login")
    public String login(@RequestParam String username, @RequestParam String password, HttpSession session) {
        if (username == null || password == null || "".equals(username) || "".equals(password)) {
            return "用户名或密码不能为空";
        }

        User user = userDao.findByUsernameAndPassword(username, password).orElse(null);
        session.setAttribute("user", user);
        return "redirect:/home";
    }

    @GetMapping("/home")
    public String home(Map<String, Object> map, HttpSession session) {
        map.put("user", session.getAttribute("user"));
        return "index";
    }


}

复制代码

记得每个controller文件一定要有@controller的标识,不然springboot无法识别

之后就是像代码注释写的,当你打开浏览器输入连接的时候是get请求

返回的就是templates中的对应html文件,当你输入点击submit之后,是post请求

这个和javaweb的servlet是类似的,就会执行对应的方法

这里的save方法是这样的 userDao继承了UserRepository这个类,而这个类继承了

JpaRepository这个类,在这个类中封装了许多对数据库的处理方法,包括一些基础的

增删改查的操作,包括下面的登录也是用的这个方法。

然后需要创建一个entity包,这里我理解和javaweb的bean包类似,都是用于封装的

但是这里有一个区别,当你封装的时候对这个类需要加上@Entity的表示,表明这是一个实体类,而实体类需要主键,因此需要对主键变量进行@Id的标识

同时在这个文件中还需要标识访问的表名,不然会默认访问,但是我目前还没找到默认访问的设置位置在哪。

以代码为例

复制代码
copy
package com.example.demo.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
//@Entity表示这个类是一个实体类
//实体类要有主键
//最开始没有@Table,默认访问的是user表,但是我不清楚
// 它的默认访问规则是什么,因此还是采用了这种@的方式
@Table(name="test")

public class User {

    @Id
    private String username;
    @Column
    private String password;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
    public User(){}
}
复制代码

这段代码默认连接的是user表,但是我不知道如何修改这个默认访问的表,因此用@Table标识了一下

然后是repository包,其中建立了类,这个类就是用于继承JpaRepository这个类,它其中封装了很多的方法。

然后单独要说一下的是数据库的连接,今天连接的是mysql,配置文件如下

复制代码
copy
spring.datasource.driver-class-name:
  com.mysql.cj.jdbc.Driver
spring.datasource.url:
  jdbc:mysql://localhost:3306/你的数据库名称
spring.datasource.username:
  你的用户名
spring.datasource.password:
  你的密码
spring:
  jpa:
    hibernate:
      ddl-auto=update:
复制代码

最后这段是自动更新表结构的配置

至此加上html文件,基本上就可以实现注册和登录的操作了,访问css和js文件还需要Thyme的一些操作,然后就要着手进行连接hive或者hbase进行增删改查了

posted @   Arkiya  阅读(8)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起