从零开始搭建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,因为我是设定过后重新截图,所以会看起来设定后没有变化。
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按钮
提示登陆失败
点击重新登陆,正常跳转
经过上面的测试,说明实现了自己想要的功能。
相关文章:
从零开始搭建java web springboot Eclipse MyBatis jsp mysql开发环境
文章目录 1 第一步软件安装1.1 下载并安装Eclipse1.2 下载并安装Java1.3 下载并安装Apache Maven1.4 下载并安装MySQL 2 创建所需要的表和数据3 创建Maven 工程、修改jdk4 通过pom.xml获取所需要的jar包5 安装Eclipse的MyBatis插件6 创建文件夹以及jsp文件7 创建下面各种java类…...
【VsCode】整理代码
在VsCode中,你可以使用插件"Beautify"来格式化你的HTML代码,使其更加整齐清晰。而对于JSON代码,你可以使用"vscode-json"插件来格式化为易读的树状结构,方便查看和编辑。这些插件可以帮助你更加高效地整理HTM…...
盘点总结汇总植物病虫害、人体疾病识别相关的项目实践
在前面的很多项目中做了许多有关于植物病虫害比如:苹果病虫害、番茄病虫害、小麦病虫害、辣椒病虫害、白菜病虫害、木薯病虫害、葡萄病虫害、柑橘病虫害等等,还有一些是有关于人体疾病识别相关的,比如:病理细胞识别、癌症识别、皮…...
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
【测试开发】用例篇(2) 文章目录 【测试开发】用例篇(2)1. 正交表法1.1 什么是正交表1.2 两个重要概念1.3 如何通过正交表设计测试用例1.3.1 充分理解需求1.3.2 确定因素、确定水平1.3.3 allpairs画正交表1.3.4 补充正交表1.3.5 将…...
【ES】笔记-数值扩展
数值扩展 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>数值扩展</title> </head> &l…...
浅谈Rust内存管理
Rust因在内存管理上的独到之处,近年来受到了不少开发者的青睐。Rust内存管理的核心功能就是所有权。不同的语言采取了不同的内存管理方式,主要分为开发者手动管理或者编译器辅助管理,以及垃圾回收机制等。Rust的所有权机制,有别于…...
Vue路由跳转至页面后多次渲染
在 Vue 中,当你跳转到一个新的路由或者重新加载当前路由时,由于 Vue Router 或其他路由管理工具的机制,会导致该页面组件重新渲染多次的情况发生。这可能是因为以下原因: 组件复用:Vue Router 默认情况下会尝试复用已经…...
CDH大数据平台集群部署
文章目录 1. 资源准备2. 部署 Mariadb 数据库3. 安装CM服务4. 安装数据节点5. 登录CM系统 1. 资源准备 准备好CDH安装包资源,官方网站下载需要账号,如果没有账号可以去网上到处搜搜。主要涉及到的资源有: cloudera-manager-servercloudera-m…...
基于springboot+vue的校园资产管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
@RequestMapping 注解使用技巧
一、RequestMapping 基础用法 用于将任意HTTP 请求映射到控制器方法上。 RequestMapping表示共享映射,如果没有指定请求方式,将接收GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT所有的HTTP请求方式。GetMapping、PostMapping、PutMapp…...
AtCoder 265G 线段树
题意 传送门 AtCoder 265G 012 Inversion 题解 直接维护逆序对数量比较困难,考虑到元素值域很小,直接将不同数值对解耦进行维护。具体而言,线段树维护区间 0 , 1 , 2 0,1,2 0,1,2 的数量,以及满足 i < j i<j i<j 时…...
通俗易懂了解大语言模型LLM发展历程
1.大语言模型研究路程 NLP的发展阶段大致可以分为以下几个阶段: 词向量词嵌入embedding句向量和全文向量理解上下文超大模型与模型统一 1.1词向量 将自然语言的词使用向量表示,一般构造词语字典,然后使用one-hot表示。 例如2个单词&…...
Vim - 快速插入C语言函数注释模板
背景 C语言使用vim编写时,需要快速对函数进行说明头插入; 代码 function! InsertCFunctionHeader()" 获取当前行内容let line getline(.)" 匹配 C 函数定义let matched matchlist(line, ^\s*\w\ \\(\w\\)(\(.*\)))" 如果当前行不是函…...
Leetcode171. Excel 表列序号
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 题解:力扣(LeetCode)官网 - 全球极客挚爱…...
自主设计,模拟实现 RabbitMQ - 实现 拒绝/否定 应答机制
目录 一、拒绝/否定 应答机制 1.1、需求分析 什么是 拒绝/否定 应答呢?...
在github上设置不同分支,方便回滚
在github上设置不同分支,方便回滚 步骤可能出现的问题couldnt find remote ref gpuVersion1. 确保您处于正确的分支2. 添加并提交更改(如果还未进行)3. 推送本地分支到远程仓库4. 验证操作 步骤 之前在github上上传了一个项目代码,…...
【Elsevier旗下】JCR2/3区,最快25天录用!计算机与娱乐、教育、游戏、新媒体均可
期刊简介: 出版社:Elsevier 影响因子(2022):2.5-3.0 期刊分区:JCR2/3区,中科院4区 检索数据库:SCIE 在检 数据库检索年份:2016年 预警情况:无中科院预警…...
TSINGSEE视频AI智能分析技术:水泥厂安全生产智能监管解决方案
一、方案背景 随着人工智能技术的快速发展以及视频监控系统在全国范围内的迅速推进,基于AI视频智能分析技术的智能视频监控与智慧监管系统,也已经成为当前行业的发展趋势。在工业制造与工业生产领域,工厂对设备的巡检管理、维护维修、资产管…...
Whisper + NemoASR + ChatGPT 实现语言转文字、说话人识别、内容总结等功能
引言 2023年,IT领域的焦点无疑是ChatGPT,然而,同属OpenAI的开源产品Whisper似乎鲜少引起足够的注意。 Whisper是一款自动语音识别系统,可以识别来自99种不同语言的语音并将其转录为文字。 如果说ChatGPT为计算机赋予了大脑&…...
795. 区间子数组个数
795. 区间子数组个数 给你一个整数数组 nums 和两个整数:left 及 right 。找出 nums 中连续、非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个数。 生成的测试用例保证结果符合 32-bit 整数范围。 示例 1:…...
Request method ‘GET‘ not supported,不支持GET形式访问
org.springframework.web.HttpRequestMethodNotSupportedException: Request method ‘GET’ not supported 原因:异常提示的很明确,请求不支持GET方式访问,出现这种问题一般都是由于限制请求接口为POST,然后使用GET形式访问造成的…...
数据结构与算法(C语言版)P2---线性表之顺序表
前景回顾 #mermaid-svg-sXTObkmwPR34tOT4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sXTObkmwPR34tOT4 .error-icon{fill:#552222;}#mermaid-svg-sXTObkmwPR34tOT4 .error-text{fill:#552222;stroke:#552222;}#…...
AI写文章软件-怎么选择不同的AI写文章软件
在如今信息爆炸的时代,无论是学生、职场人士,还是创作者和企业家,写文章都是一项常见而又重要的任务。然而,随着科技的不断进步,AI写文章的软件也逐渐走进了人们的视野。 147GPT批量文章生成工具www.147seo.com/post…...
VSCode远程连接服务器报错:Could not establish connection to
参考:https://blog.csdn.net/weixin_42538848/article/details/118113262 https://www.jb51.net/article/219138.htm 刚开始把ssh文件夹中的known_hosts给删除了,发现没啥用。 之后在扩展Remote-SSH里面,把config file路径设置为ssh文件夹里…...
openssl 用法整理 —— 筑梦之路
用法一 生成自签名数字证书 # 生成私钥 openssl genpkey -algorithm RSA -out private.key# 生成证书请求 openssl req -new -key private.key -out certificate.csr# 使用私钥签署证书 openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out certifica…...
Mac安装SPSS 26(含安装包)
Mac安装SPSS 26(含安装包) 安装包地址(百度网盘):https://pan.baidu.com/s/127ZJNRIMZaeR2hDilQT0Zg提取码: m5xj 查看是否允许安装任何来源的app 如果没有任何来源这个选项 打开终端输入:sudo spctl --master-disable回车之后输入password(注:电脑的…...
uniapp存值和取值方法
在UniApp中,可以使用全局变量、本地缓存和Vuex状态管理等方式来进行存值和取值。 全局变量:可以在App.vue文件的data中定义一个全局变量,在其他页面或组件中通过uni.$emit方法修改其值,并通过uni.$on方法监听值的变化。 // App.…...
Apache Beam 2.50.0发布,该版本包括改进功能和新功能
导读我们很高兴向您介绍 Beam 的新版本 2.50.0。该版本包括改进功能和新功能。请查看此版本的下载页面。 亮点 Spark 3.2.2 被用作 Spark 运行程序的默认版本(#23804)。Go SDK 新增默认本地运行程序,名为 Prism(#24789࿰…...
华为云云耀云服务器 L 实例评测|配置教程 + 用 Python 简单绘图
文章目录 Part.I IntroductionChap.I 云耀云服务器 L 实例简介Chap.II 参与活动步骤 Part.II 配置Chap.I 初步配置Chap.II 配置安全组 Part.III 简单使用Chap.I VScode 远程连接华为云Chap.II 简单绘图 Reference Part.I Introduction 本篇博文是为了参与华为“【有奖征文】华…...
栈的简单应用(利用Stack进行四则混合运算)(JAVA)
目录 中缀表达式转后缀表达式 图解 代码实现过程: 完整代码: 利用后缀表达式求值: 完整代码: 首先我们得先了解逆波兰表达式。 中缀表达式转后缀表达式 所谓的中缀表达式其实就是我们平时写的例如:࿱…...
动画设计实训报告/seo刷关键词排名优化
定义和用法 <audio> 标签定义声音,比如音乐或其他音频流。 实例 一段简单的 HTML 5 音频: <audio src"someaudio.wav"> 您的浏览器不支持 audio 标签。 </audio> 提示和注释 提示:可以在开始标签和结束标签之间放…...
中国建设银行官网网站首页/做网站的流程与步骤
推荐阅读: 这套Github上40Kstar学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL 成神之路PDF,终于开源了 Java 5 新特性 1. 泛型…...
怎么用建站abc做网站/如何刷关键词指数
队列与栈数据结构是使用频率较高的技术知识,今天与大家一起分享Python如何用List 来实现队列操作。 队列是什么 队列是一种先进先出(First-In-First-Out,Fifo)的数据结构。 队列是一种列表,不同的是队列只能在队尾插入…...
用路由器做简单的网站/产品营销策略怎么写
字符串函数是最常用的的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现相应的应用:1、LOWER(column|str):将字符串参数值转换为全小写字母后返回MySQL> select lower(SQL Course);---------------------| lower(SQL Course) …...
公司做网站属于什么费用/网站服务器失去响应
原文地址:http://www.programmer.com.cn/7578/ 淘宝网拥有国内最具商业价值的海量数据。截至当前,每天有超过30亿的店铺、商品浏览记录,10亿在线商品数,上千万的成交、收藏和评价数据。如何从这些数据中挖掘出真正的商业价值&…...
龙岗中心城网站建设/厦门人才网招聘
Oracle全文索引相信大家都有一定的了解,下面就教您如何建立oracle全文索引,如果您对oracle全文索引方面感兴趣的话,不妨一看。步骤一 检查和设置数据库角色首先检查数据库中是否有CTXSYS用户和CTXAPP脚色。如果没有这个用户和角色࿰…...