从零开始搭建java web springboot Eclipse MyBatis jsp mysql开发环境

文章目录

  • 1 第一步软件安装
    • 1.1 下载并安装Eclipse
    • 1.2 下载并安装Java
    • 1.3 下载并安装Apache Maven
    • 1.4 下载并安装MySQL
  • 2 创建所需要的表和数据
  • 3 创建Maven 工程、修改jdk
  • 4 通过pom.xml获取所需要的jar包
  • 5 安装Eclipse的MyBatis插件
  • 6 创建文件夹以及jsp文件
  • 7 创建下面各种java类文件、xml、properties文件
    • 7.1 com.study.WebAppMainApplication.java
    • 7.2 com.study.action.AMC01LoginAction .java
    • 7.3 com.study.controller.amc01.AMC01Controller .java
    • 7.4 com.study.controller.amc01.AMC01Form .java
    • 7.5 com.study.dto.AMC01InputDto .java
    • 7.6 com.study.dto.AMC01OutputDto .java
    • 7.7 com.study.dto.AMC01LoginUserInfoDto .java
    • 7.8 com.study.entity.S001Entity .java
    • 7.9 com.study.repository.AMC01Repository .java
    • 7.10 com.study.service.AMC01Service .java
    • 7.11 AMC01Repository.xml
    • 7.12 application.properties
  • 8 启动web应用

从百度云盘下载本博客的代码,https://pan.baidu.com/s/1ztOr7FnypSv-0FX_5EMIlw,提取码:soft

1 第一步软件安装

1.1 下载并安装Eclipse

前往 Eclipse下载并安装的博客 https://blog.csdn.net/u011159350/article/details/113704086
本博客使用的Eclipse版本是Version: 2022-12 (4.26.0),Build id: 20221201-1913
其他版本也行

1.2 下载并安装Java

前往 Java下载并安装的博客 https://blog.csdn.net/u011159350/article/details/113703862
本博客使用的Java版本是15.0.1
其他Java也行

1.3 下载并安装Apache Maven

前往 Apache Maven下载并安装的博客 https://blog.csdn.net/u011159350/article/details/103796714

1.4 下载并安装MySQL

前往 MySQL下载并安装的博客 https://blog.csdn.net/u011159350/article/details/113619926

2 创建所需要的表和数据

打开MySQL附带的软件MySQL WorkBench
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

下面是上面图片里要执行的SQL内容

CREATE TABLE `mydb`.`s001` (`LOGIN_USERID` VARCHAR(20) NOT NULL COMMENT '登陆用户ID',`LOGIN_PASSWORD` VARCHAR(20) NOT NULL COMMENT '登陆密码',`USER_NAME` VARCHAR(50) NULL COMMENT '用户名表示用',`EMAIL` VARCHAR(30) NULL COMMENT '邮件地址',`BIRTH_YMD` VARCHAR(8) NULL COMMENT '出生年月日',`TELPHONE_NUMBER` VARCHAR(11) NULL COMMENT '电话号码',PRIMARY KEY (`LOGIN_USERID`))
COMMENT = '用户情报表';

在这里插入图片描述

在这里插入图片描述
在下图添加数据,然后点击Apply按钮
在这里插入图片描述
在这里插入图片描述
点击finish,就添加成功数据了。
在这里插入图片描述

3 创建Maven 工程、修改jdk

在这里插入图片描述
在这里插入图片描述
Group Id:com.study
Artifact Id:StudySpringBoot
在这里插入图片描述
下面的步骤是设置jdk,因为我是设定过后重新截图,所以会看起来设定后没有变化。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
选择 J2SE-15(jdk-15.0.1)
在这里插入图片描述

4 通过pom.xml获取所需要的jar包

双击打开下面的pom.xml文件
在这里插入图片描述

把pom.xml里的内容全部删除,然后下面的文件复制到pom.xml文件中

<?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><artifactId>study</artifactId><groupId>com.study</groupId><version>0.0.1-SNAPSHOT</version><parent><!-- 依赖管理,引入以后在声明其它dependency的时候就不需要version --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath /></parent><properties><!-- 声明项目配置依赖编码格式为 utf-8 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- java jdk 版本声明 可变更 根据自己配置去匹配 --><java.version>15.0</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><fastjson.version>1.2.24</fastjson.version></properties><dependencies><!-- 对web开发的支持,包含了spring webmvc和tomcat等web开发的特性 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- spring boot核心,包括自动配置支持,日志和YAML --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 使用jsp引擎,springboot内置tomcat没有此依赖 --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency><!--        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency></dependencies><build><plugins><!-- 如果我们要直接Main启动spring,那么以下plugin必须要添加,否则是无法启动的。 --><!-- 如果使用maven的spring-boot:run的话就不需要此配置 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- mybatis generator 自动生成代码插件 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.1</version><configuration><configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration></plugin></plugins></build>
</project>

在这里插入图片描述

5 安装Eclipse的MyBatis插件

按照下图的操作,进入Eclipse商店
在这里插入图片描述
输入MyBatis,然后检索
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6 创建文件夹以及jsp文件

在这里插入图片描述
webapp/WEB-INF/jsp/amc01.jsp的内容如下

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><base href="http://localhost:8090/myweb/" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>个人网站管理系统</title><link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
</head>
<body><form action="amc01/login" name="amc01from" method="post"><label for="login_userid">登陆用户名</label><input type="text" class="form-control" id="login_userid" name="login_userid" placeholder="Username"><br><label for="login_password">登陆密码</label><input type="password" class="form-control" id="login_password" name="login_password" placeholder="Password"><button type="submit" class="btn btn-default">Submit</button></form>
</body>
</html>

webapp/WEB-INF/jsp/amc02.jsp的内容如下

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><base href="http://localhost:8090/myweb/" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>个人网站管理系统</title><link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
</head>
<body>账号登录失败!<br><a href="amc01">重新登录</a>
</body>
</html>

webapp/WEB-INF/jsp/index.jsp的内容如下
下面的标签没有起作用,使得两个If标签内的值都表示了出来。等研究明白了在来修改。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><base href="http://localhost:8090/myweb/" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>个人网站管理系统</title><link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
</head>
<body><c:if test=”${userinfo.user_name!=''}”>你的昵称是  ${userinfo.user_name}<br>你的邮件是  ${userinfo.email}<br>你的生日是  ${userinfo.birth_ymd}<br>你的电话号码是  ${userinfo.telphone_number}<br></c:if><c:if test=”${userinfo.user_name==''}”><a href="amc01">登录</a></c:if>
</body>
</html>

7 创建下面各种java类文件、xml、properties文件

在这里插入图片描述

7.1 com.study.WebAppMainApplication.java

创建包:com.study,然后在该包下面创建WebAppMainApplication.java的内容如下,这是启动整个web应用的程序

package com.study;import org.springframework.boot.SpringApplication;					
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 启动类**/
@SpringBootApplication						
public class WebAppMainApplication {/*** Web启动主方法* @param args*/public static void main(String[] args) {					// TODO Auto-generated method stub			SpringApplication.run(WebAppMainApplication.class, args);}
}

7.2 com.study.action.AMC01LoginAction .java

创建包:com.study.action,然后在该包下面创建AMC01LoginAction .java的内容如下,这是Service类调用的程序,负责实现更加具体的业务逻辑,service类通过调用各种Action类,实现一个完整的复杂的业务逻辑。

package com.study.action;public class AMC01LoginAction {}

7.3 com.study.controller.amc01.AMC01Controller .java

创建包:com.study.controller.amc01,然后在该包下面创建AMC01Controller .java的内容如下,这是点击jsp画面后,第一个跳转到的程序

package com.study.controller.amc01;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import com.study.dto.AMC01InputDto;
import com.study.dto.AMC01OutputDto;
import com.study.service.AMC01Service;@Controller
public class AMC01Controller {/** 画面初始化事件 */private static final String EVT_INIT= "/";/** 画面跳转事件 */private static final String EVT_AMC01 = "amc01";/** 画面登录事件 */private static final String EVT_LOGIN = "amc01/login";@Autowiredprivate AMC01Service amc01Service;/*** 画面的初始化事件* @param m* @return*/@RequestMapping(EVT_INIT)public String init(Model m) {AMC01Form amc01from = new AMC01Form();m.addAttribute("userinfo", amc01from);// 视图重定向index.jspreturn "index";}/*** 跳转到amc01.jsp* @return*/@RequestMapping(EVT_AMC01)public String Amc01Jsp() {// 视图重定向amc01.jspreturn "amc01";}/*** 画面的登录事件* @param m* @param scmform* @return*/@RequestMapping(value = EVT_LOGIN, method = RequestMethod.POST)public String login(Model m, @ModelAttribute("amc01from") AMC01Form amc01from) {AMC01InputDto amc01InputDto = new AMC01InputDto();amc01InputDto.setLogin_userid(amc01from.getLogin_userid());amc01InputDto.setLogin_password(amc01from.getLogin_password());AMC01OutputDto amc01OutputDto = amc01Service.excute(amc01InputDto);if(amc01OutputDto.getUser_name() == null) {// 登录失败return "amc02";}else {// 登录成功跳转AMC01Form userinfo = new AMC01Form();userinfo.setUser_name(amc01OutputDto.getUser_name());userinfo.setEmail(amc01OutputDto.getEmail());userinfo.setBirth_ymd(amc01OutputDto.getBirth_ymd());userinfo.setTelphone_number(amc01OutputDto.getTelphone_number());m.addAttribute("userinfo", userinfo);// 视图重定向index.jspreturn "index";}}}

7.4 com.study.controller.amc01.AMC01Form .java

创建包:com.study.controller.amc01,然后在该包下面创建AMC01Form .java的内容如下,从Jsp向controller类传入值和从controller类向Jsp传出值的时候,需要把值存在这个form类里

package com.study.controller.amc01;public class AMC01Form {/*** 登陆用户ID*/private String login_userid;/*** 登陆密码*/private String login_password;/*** 用户名表示用*/private String user_name;/*** 邮件地址*/private String email;/*** 出生年月日*/private String birth_ymd;/*** 电话号码*/private String telphone_number;/*** 取得登陆用户ID* @return 登陆用户ID*/public String getLogin_userid() {return login_userid;}/*** 设定登陆用户ID* @param login_userid 登陆用户ID*/public void setLogin_userid(String login_userid) {this.login_userid = login_userid;}/*** 取得登陆密码* @return 登陆密码*/public String getLogin_password() {return login_password;}/*** 设定登陆密码* @param login_password 登陆密码*/public void setLogin_password(String login_password) {this.login_password = login_password;}/*** 取得用户名表示用* @return 用户名表示用*/public String getUser_name() {return user_name;}/*** 设定用户名表示用* @param user_name 用户名表示用*/public void setUser_name(String user_name) {this.user_name = user_name;}/*** 取得邮件地址* @return 邮件地址*/public String getEmail() {return email;}/*** 设定邮件地址* @param email 邮件地址*/public void setEmail(String email) {this.email = email;}/*** 取得出生年月日* @return 出生年月日*/public String getBirth_ymd() {return birth_ymd;}/*** 设定出生年月日* @param birth_ymd 出生年月日*/public void setBirth_ymd(String birth_ymd) {this.birth_ymd = birth_ymd;}/*** 取得电话号码* @return 电话号码*/public String getTelphone_number() {return telphone_number;}/*** 设定电话号码* @param telphone_number 电话号码*/public void setTelphone_number(String telphone_number) {this.telphone_number = telphone_number;}}

7.5 com.study.dto.AMC01InputDto .java

创建包:com.study.dto,然后在该包下面创建AMC01InputDto .java的内容如下,从controller类向service类传入值的时候、需要这个类保存值,一般命名为XXXInputDto

package com.study.dto;public class AMC01InputDto {/*** 登陆用户ID*/private String login_userid;/*** 登陆密码*/private String login_password;/*** 取得登陆用户ID* @return 登陆用户ID*/public String getLogin_userid() {return login_userid;}/*** 设定登陆用户ID* @param login_userid 登陆用户ID*/public void setLogin_userid(String login_userid) {this.login_userid = login_userid;}/*** 取得登陆密码* @return 登陆密码*/public String getLogin_password() {return login_password;}/*** 设定登陆密码* @param login_password 登陆密码*/public void setLogin_password(String login_password) {this.login_password = login_password;}
}

7.6 com.study.dto.AMC01OutputDto .java

创建包:com.study.dto,然后在该包下面创建AMC01OutputDto .java的内容如下,从service类向controller类传出值的时候、需要这个类保存值,一般命名为XXXOutputDto

package com.study.dto;public class AMC01OutputDto {/*** 用户名表示用*/private String user_name;/*** 邮件地址*/private String email;/*** 出生年月日*/private String birth_ymd;/*** 电话号码*/private String telphone_number;/*** 取得用户名表示用* @return 用户名表示用*/public String getUser_name() {return user_name;}/*** 设定用户名表示用* @param user_name 用户名表示用*/public void setUser_name(String user_name) {this.user_name = user_name;}/*** 取得邮件地址* @return 邮件地址*/public String getEmail() {return email;}/*** 设定邮件地址* @param email 邮件地址*/public void setEmail(String email) {this.email = email;}/*** 取得出生年月日* @return 出生年月日*/public String getBirth_ymd() {return birth_ymd;}/*** 设定出生年月日* @param birth_ymd 出生年月日*/public void setBirth_ymd(String birth_ymd) {this.birth_ymd = birth_ymd;}/*** 取得电话号码* @return 电话号码*/public String getTelphone_number() {return telphone_number;}/*** 设定电话号码* @param telphone_number 电话号码*/public void setTelphone_number(String telphone_number) {this.telphone_number = telphone_number;}}

7.7 com.study.dto.AMC01LoginUserInfoDto .java

创建包:com.study.dto,然后在该包下面创建AMC01LoginUserInfoDto .java的内容如下,这是普通的dto类,这里我用来存储repository类从db中检索后返回来的值

package com.study.dto;public class AMC01LoginUserInfoDto {/*** 用户名表示用*/private String user_name;/*** 邮件地址*/private String email;/*** 出生年月日*/private String birth_ymd;/*** 电话号码*/private String telphone_number;/*** 取得用户名表示用* @return 用户名表示用*/public String getUser_name() {return user_name;}/*** 设定用户名表示用* @param user_name 用户名表示用*/public void setUser_name(String user_name) {this.user_name = user_name;}/*** 取得邮件地址* @return 邮件地址*/public String getEmail() {return email;}/*** 设定邮件地址* @param email 邮件地址*/public void setEmail(String email) {this.email = email;}/*** 取得出生年月日* @return 出生年月日*/public String getBirth_ymd() {return birth_ymd;}/*** 设定出生年月日* @param birth_ymd 出生年月日*/public void setBirth_ymd(String birth_ymd) {this.birth_ymd = birth_ymd;}/*** 取得电话号码* @return 电话号码*/public String getTelphone_number() {return telphone_number;}/*** 设定电话号码* @param telphone_number 电话号码*/public void setTelphone_number(String telphone_number) {this.telphone_number = telphone_number;}}

7.8 com.study.entity.S001Entity .java

创建包:com.study.entity,然后在该包下面创建S001Entity .java的内容如下,这是数据库实体类,对应着数据库里S001表,主要用于SQL检索的时候,本博客中没有用到这个类。

package com.study.entity;public class S001Entity {/*** 登陆用户ID*/private String login_userid;/*** 登陆密码*/private String login_password;/*** 用户名表示用*/private String user_name;/*** 邮件地址*/private String email;/*** 出生年月日*/private String birth_ymd;/*** 电话号码*/private String telphone_number;/*** 取得登陆用户ID* @return 登陆用户ID*/public String getLogin_userid() {return login_userid;}/*** 设定登陆用户ID* @param login_userid 登陆用户ID*/public void setLogin_userid(String login_userid) {this.login_userid = login_userid;}/*** 取得登陆密码* @return 登陆密码*/public String getLogin_password() {return login_password;}/*** 设定登陆密码* @param login_password 登陆密码*/public void setLogin_password(String login_password) {this.login_password = login_password;}/*** 取得用户名表示用* @return 用户名表示用*/public String getUser_name() {return user_name;}/*** 设定用户名表示用* @param user_name 用户名表示用*/public void setUser_name(String user_name) {this.user_name = user_name;}/*** 取得邮件地址* @return 邮件地址*/public String getEmail() {return email;}/*** 设定邮件地址* @param email 邮件地址*/public void setEmail(String email) {this.email = email;}/*** 取得出生年月日* @return 出生年月日*/public String getBirth_ymd() {return birth_ymd;}/*** 设定出生年月日* @param birth_ymd 出生年月日*/public void setBirth_ymd(String birth_ymd) {this.birth_ymd = birth_ymd;}/*** 取得电话号码* @return 电话号码*/public String getTelphone_number() {return telphone_number;}/*** 设定电话号码* @param telphone_number 电话号码*/public void setTelphone_number(String telphone_number) {this.telphone_number = telphone_number;}}

7.9 com.study.repository.AMC01Repository .java

创建包:com.study.repository,然后在该包下面创建AMC01Repository .java的内容如下,这是和AMC01Repository.xml文件相对应的类,调用这个类后,就能调用到AMC01Repository.xml,然后就能实现对数据库的增删改查。
关于怎么传入参数的博客:https://blog.csdn.net/qq_38254897/article/details/84961223

package com.study.repository;import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;import com.study.dto.AMC01LoginUserInfoDto;@Mapper
public interface AMC01Repository {/*** 检索登陆用户的信息* @param login_userid 登陆用户ID* @param login_password 登陆密码* @return 登陆用户的信息*/public AMC01LoginUserInfoDto selectUserInfo(@Param("login_userid") String login_userid,@Param("login_password") String login_password);
}

7.10 com.study.service.AMC01Service .java

创建包:com.study.service,然后在该包下面创建AMC01Service .java的内容如下,这是controller类直接调用的程序,负责实现一段完整的业务逻辑。

package com.study.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.study.dto.AMC01InputDto;
import com.study.dto.AMC01LoginUserInfoDto;
import com.study.dto.AMC01OutputDto;
import com.study.repository.AMC01Repository;@Service
public class AMC01Service {@Autowiredprivate AMC01Repository amc01Repository;public AMC01OutputDto excute(AMC01InputDto amc01InputDto) {AMC01LoginUserInfoDto amc01LoginUserInfoDto = amc01Repository.selectUserInfo(amc01InputDto.getLogin_userid(), amc01InputDto.getLogin_password());AMC01OutputDto amc01OutputDto = new AMC01OutputDto();if(amc01LoginUserInfoDto != null) {amc01OutputDto.setUser_name(amc01LoginUserInfoDto.getUser_name());amc01OutputDto.setEmail(amc01LoginUserInfoDto.getEmail());amc01OutputDto.setBirth_ymd(amc01LoginUserInfoDto.getBirth_ymd());amc01OutputDto.setTelphone_number(amc01LoginUserInfoDto.getTelphone_number());}return amc01OutputDto;}
}

7.11 AMC01Repository.xml

在这里插入图片描述

在src/main/resources文件夹下,创建文件夹com/study/repository,不是包,然后创建AMC01Repository.xml。这里负责检索用户信息,这个文件可以写很多SQL,不限制写一个,可以写所有增删改查。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.repository.AMC01Repository"><selectid="selectUserInfo" resultType="com.study.dto.AMC01LoginUserInfoDto">SELECT  USER_NAME,EMAIL,BIRTH_YMD,TELPHONE_NUMBERFROM S001WHERE LOGIN_USERID=#{login_userid}AND LOGIN_PASSWORD=#{login_password}</select>
</mapper>

7.12 application.properties

在src/main/resources文件夹下,创建文件application.properties
在这里插入图片描述
内容如下

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mydb?serverTimezone=Asia/Shanghai&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2dd1.auto=update
spring.jpa.show-sql=true
mybatis.mapper-locations: classpath:com/study/repository/*.xml
mybatis.type-aliases-package: com.study.dto
logging.level.org.lzq.tide.mapper=debug
server.context-path=/myweb
server.port=8090

8 启动web应用

打开WebAppMainApplication.java,鼠标右键单击,参照下图选择
在这里插入图片描述
我这里启动失败了,报了错误
参照下面这个博客,解决了我的问题:
java.sql.SQLException: Unable to load authentication plugin ‘caching_sha2_password‘.解决方法

上面博客的命令如下:
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
再重置下密码:alter user ‘root’@‘localhost’ identified by ‘123456’;

再次启动获得成功
在这里插入图片描述
打开网页浏览器,访问:http://localhost:8090/myweb/
在这里插入图片描述
点击上面图片的登陆链接,跳转到下面的页面,输入
登陆用户名:5001
登陆密码:abc
点击submit按钮
在这里插入图片描述
成功跳转,成功获取用户信息
在这里插入图片描述
再次点击登陆链接,输入错误的用户名,点击submit按钮
在这里插入图片描述
提示登陆失败
在这里插入图片描述
点击重新登陆,正常跳转
在这里插入图片描述
经过上面的测试,说明实现了自己想要的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/136235.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内网穿透的应用-Cloudreve搭建云盘系统,并实现随时访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

go net/http 源码解读

回顾 1. HTTP Server 在 go 中启动一个 http server 只需短短几行代码 func PingHandler(w http.ResponseWriter, r *http.Request) {io.WriteString(w, "pong!") }func main() {http.HandleFunc("/ping", PingHandler)log.Fatal(http.ListenAndServe(&…

【文末赠书】SRE求职必会 —— 可观测性平台可观测性工程(Observability Engineering)

文章目录 〇、导读一、实现可观测性平台的技术要点是什么&#xff1f;二、兼容全域信号量三、所谓全域信号量有哪些&#xff1f;四、统一采集和上传工具五、统一的存储后台六、自由探索和综合使用数据七、总结★推荐阅读《可观测性工程》直播预告直播主题直播时间预约直播 视频…

K8S名称空间和资源配额

Kubernetes 支持多个虚拟集群&#xff0c;底层依赖于同一个物理集群。 这些虚拟集群被称为名称空间。名称空间namespace是k8s集群级别的资源&#xff0c;可以给不同的用户、租户、环境或项目创建对应的名称空间&#xff0c;例如&#xff0c;可以为test、dev、prod环境分别创建各…

使用Linkerd实现流量管理:学习如何使用Linkerd的路由规则来实现流量的动态控制

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

video 视频编解码一些debug方法

文章目录 一、通过命令去获取一些数据1.2 确定我们xml配置文件: 二、查看我们芯片支持的编码能力三、通过log去获取信息 这个文章的主要内容是为了后期性能方面的debug, 设计到前期的bringup则没有 一、通过命令去获取一些数据 获取媒体相关的参数&#xff1a; # getprop |…

Postman —— post请求数据类型

1、Postman中post的数据类型 post中有以下数据类型 1、form-data 2、x-www-form-urlencoded 3、raw 4、binary 2、Postman请求不同的post数据类型 from-data multipart/form-data&#xff0c;它将表单的数据组织成Key-Value形式&#xff0c;也可以上传文件&#xff0c;当…

基于elelemt-ui封装一个表单

子组件 searchForm <template><el-formref"form":model"value":rules"rules":label-width"labelWidth":inline"inline"><el-form-itemv-for"field in fields":key"field.slot":label&q…

基于5G网络的智能车间MES设计方案

导读 在数字化转型建设过程中&#xff0c;机械制造企业的难点是智能车间的设计。随着5G技术的发展&#xff0c;大量的带网络接口的智能设备的投入使用&#xff0c;智能车间的实施成为可能。本文从车间生产计划调度、过程管控、设备管理、质量管理、能耗管理和物流仓储等方面提…

[网鼎杯 2020 朱雀组]Nmap 通过nmap写入木马 argcmd过滤实现逃逸

这道题也很好玩 啊 原本以为是ssrf 或者会不会是rce 结果是通过nmap写入木马 我们来玩一下 传入木马 映入眼帘是nmap 我们首先就要了解nmap的指令 Nmap 相关参数-iL 读取文件内容&#xff0c;以文件内容作为搜索目标 -o 输出到文件-oN 标准保存-oX XML保存-oG Grep保存-oA…

埃文科技受邀出席“安全堤坝”技术论坛

2023年9月11日&#xff0c;2023年国家网络安全宣传周河南省活动开幕式暨河南省网络文明大会在开封博物馆开幕。由CCF YOCSEF郑州举办的“聚焦数据交易监管技术&#xff0c;筑牢数据交易‘安全堤坝’”技术论坛在开封市博物馆二楼会议厅举行。埃文科技总经理王永博士与副总经理武…

如何让照片动起来?几个制作方法和注意事项分享

在现代社交媒体的时代&#xff0c;我们经常会看到一些有趣、生动的动态照片。那么小伙伴们知道如何让照片动起来吗&#xff1f;下面将分享几个简单的制作方法和注意事项。 1.使用书单视频王&#xff1a;我们在手机中打开这款应用&#xff0c;进入首页后可以看到照片动起来功能&…

自动化办公更简单了:新版python-office,有哪些更新?

#职场经验谈# 大家好&#xff0c;这里是程序员晚枫&#xff0c;小破站/小红薯都叫这个名。 去年4月开源了一个Python自动化办公项目&#xff1a;python-office&#xff0c;GitHub和Gitee都能看到。1行代码实现复杂的自动化办公任务&#xff0c;帮助不懂代码的小白&#xff0c;…

oppo手机换荣耀手机,便签数据怎么搬家?

有不少网友之前使用的是OPPO手机&#xff0c;但是在使用了三四年之后就需要再次更换手机了&#xff0c;这时候一部分用户会选择更换相同品牌的OPPO手机&#xff0c;还有一部分用户会选择使用其他品牌的手机&#xff0c;例如小米、荣耀、华为等品牌。有的网友表示自己从OPPO手机…

Redis新篇一:认识Redis

首先&#xff0c;很抱歉小伙伴们&#xff0c;前段时间一直都没有更新&#xff0c;我很抱歉&#xff0c;现在开始持续更新Redis相关内容啦&#xff01;有需要的小伙伴们可以持续关注一下小博主的新篇哦~ 希望对你们有帮助&#xff01; 作者&#xff1a;爱撸猫的程序员 博客地址…

基于CNN-LSTM的时序预测MATLAB实战

一、算法原理 1.1 CNN原理 卷积神经网络具有局部连接、权值共享和空间相关等特性。卷积神经网络结构包含卷积层、激活层和池化层。 &#xff08;a&#xff09;二维卷积层将滑动卷积滤波器应用于输入。该层通过沿输入垂直和水平方向 移动滤波器对输入进行卷积&#xff0c;并计…

数据结构——线性表之顺序表

目录 一.线性表 二.顺序表实现 2.1 概念及结构 2.2 动态顺序表 2.2.1 初始化与销毁函数 2.2.2 打印函数 2.2.3 尾插函数 2.2.4 尾删函数 2.2.5 扩容函数 2.2.6 头插函数 2.2.7 头删函数 2.2.8 任意位置插入函数 2.2.9 查找函数 2.2.10 任意位置删除函数 2.2.11 修…

SSM - Springboot - MyBatis-Plus 全栈体系(七)

第二章 SpringFramework 四、SpringIoC 实践和应用 3. 基于 注解 方式管理 Bean 3.4 实验四&#xff1a;Bean 属性赋值&#xff1a;基本类型属性赋值&#xff08;DI&#xff09; Value 通常用于注入外部化属性 3.4.1 声明外部配置 application.properties catalog.nameM…

最新在线IDE流行度最新排名(每月更新)

2023年09月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多&#xff0c;人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&#xff0c;那么TOP ODE索引可以帮助您决定在软件开发项目中…

golang 自动生成文件头

安装koroFileHeader控件 打开首选项&#xff0c;进入设置&#xff0c;配置文件头信息"fileheader.customMade": {"Author": "lmy","Date": "Do not edit", // 文件创建时间(不变)// 文件最后编辑者"LastEditors"…