1、环境搭建 (1)intellij idea
(2)MavenIDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具
下载链接:Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains
(3)依赖插件配置文档Maven主要用于解决导入依赖于Java类的jar和编译Java项目的主要问题
下载链接:http://maven.apache.org/download.cgi
2、目录设置在pom.xml中写入:
4.0.0 org.example Monica1.0-SNAPSHOT war Monica Maven Webapp http://www.example.com UtF-8 1.8 1.8 junit junit4.12 test javax.servlet javax.servlet-api4.0.1 provided org.slf4j slf4j-log4j121.7.2 org.slf4j slf4j-api1.7.2 mysql mysql-connector-java8.0.19 com.alibaba fastjson1.2.62 cn.hutool hutool-all5.4.7 commons-io commons-io2.4 commons-fileupload commons-fileupload1.3.1 javax.servlet jstl1.2 org.projectlombok lombok1.18.12 provided Monica-note org.apache.maven.plugins maven-compiler-plugin2.3.2 1.8 1.8 UTF-8 org.apache.tomcat.maven tomcat7-maven-plugin2.1 8080 /note tomcat7
3、数据库连接、关闭代码块web作为中间人,dao作为数据库操作,service进行业务操作,po放实体类,util放工具类
4、单元测试在src/main/com.monica.note/until目录下,新建DBUtil文件
涉及知识点:
Properties类:
Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常改变的,为了方便用户的配置,能让用户够脱离程序本身去修改相关的变量设置。就像在Java中,其配置文件常为.properties文件,是以键值对的形式进行参数配置的。
常用方法:getProperty(String key) 在此属性列表中搜索具有指定键的属性。如果在此属性列表中找不到该键,则会检查默认属性列表及其默认值(递归)。如果未找到该属性,则该方法返回默认值参数。
load(InputStream inStream) 从输入字节流中读取属性列表(键和元素对)。输入流采用加载(Reader)中指定的简单的面向行的格式,并假定使用ISO 8859-1字符编码;即每个字节是一个Latin1字符。不在Latin1中的字符和某些特殊字符在使用Unicode转义符的键和元素中表示。 此方法返回后,指定的流仍保持打开状态。
Class.forName()是Java程序运行时加载类的默认方法
package com.monica.note.util; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class DBUtil { //得到配置对象 private static Properties properties = new Properties(); static { try { //加载配置文件(输入流) InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("db.properties"); //通过loda()方法将输入流的内容加载到properties(配置文件)对象中 properties.load(in); //通过配置文件对象的getProperty()方法获取我们的驱动名,并加载驱动 Class.forName(properties.getProperty("jdbcName"));//这个key名与db.properties中的驱动名对应 } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnection(){ Connection connection = null; try { //得到数据库连接的数据库信息 String dbUrl=properties.getProperty("dbUrl"); String dbName=properties.getProperty("dbName"); String dbPwd=properties.getProperty("dbPwd"); //得到数据库连接 connection = DriverManager.getConnection(dbUrl,dbName,dbPwd); } catch (SQLException e) { e.printStackTrace(); } return connection; } public static void close(ResultSet resultSet, PreparedStatement preparedStatement, Connection connection){ try { //判断资源对象如果不为空,则关闭 if(resultSet != null) { resultSet.close(); } if(preparedStatement != null) { preparedStatement.close(); }if(connection != null) { connection.close(); } }catch (Exception e){ } } }jdbc配置mysql
# 连接MYSQL数据库的配置文件 注:等号的前后不要写空格 #驱动名 jdbcName=com.mysql.cj.jdbc.Driver #数据库连接(monica_note是数据库的名称、需要先创建一个数据库) dbUrl=jdbc:mysql://127.0.0.1:3306/monica_note?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false #数据库的连接账号(账号基本上都是root) dbName=root #数据库的连接密码(每个人的数据库密码可能不一致,需要修改) dbPwd=root
5、使用日志package com.monica.note; import com.monica.note.util.DBUtil; import org.junit.Test; public class testDB { @Test public void testDB(){ System.out.println(DBUtil.getConnection()); } }注意这里点击run可能可能会报错
error no. 1045 access denied for user 'root'@'*****' (using password:YES)。
这种原因可能为:
1、前面配置jdbc连接数据库名字和密码不对
2、url中的数据库名不对
3、mysql没有开启root远程访问权限
参考链接:mysql给root开启远程访问权限 - Goxcheer - 博客园
即使账号密码全正确,也会报错:error no. 1045 access denied for user 'root'@'*****' (using password:YES)。
百翻查询才知道:MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问.
!!!所以必须给root修改可以远程访问的权限
命令:
mysql -u root -p //然后输入密码进入mysql,使用mysql数据库
命令:
use mysql;查询用户表命令
命令:
select User,authentication_string,Host from user;这里也可以看出host默认都是localhost访问权限
设置远程访问权限
命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';这里的123456为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址(但是这个123456好像没啥用),在jdbc配置mysql里面我还是用的root账户的密码
命令:
flush privileges; //这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
执行完这两步,再次查询用户表命令:
select User,authentication_string,Host from user;发现多了一个用户,该用户所有的主机都可以访问(显示%),此时再次用jdbc访问连接
即可成功!
如果还没有成功
试试下面这个命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;然后再刷新
flush privileges; //这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据应该就可以了。
6、用户模块在src/main/resources目录下,新建log4j-properties文件
加日志的作用是1、能够监控代码中变量的变化情况,做一个周期性的记录,将其提供给其他应用使用。2、跟踪代码运行轨迹。3、担当调试器角色
我们使用的是log4j,是apache的开源的项目,通过log4j,我们能够控制日志文件输出的地址、格式、级别。
代码:(日志文件的地址需要自己改正)
### 设置##stdout, log4j.rootLogger = all,D,E,stdout ###输出信息到控制台## log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 输出DEBUG 级别以上的日志到=/Users/yangyuntao/javaweb-env/log.log ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = /Users/yangyuntao/javaweb-env/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n #输出ERROR级别以上的日志到=/Users/yangyuntao/javaweb-env/error.log ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = /Users/yangyuntao/javaweb-env/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold= ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p]
现在环境已经搭建好了,开始前端代码
参考博主:清峰的博客_〆清峰ㄟ_CSDN博客
总体文章:SpringBoot个人博客从无到有项目搭建——实战综合介绍_清峰的博客-CSDN博客_springboot博客项目实战
登录页面
在src/main/wabapp目录下,新建statics文件夹,将静态资源拷贝进来(js、css、images及相关插件)HTML转换为JSP
同时因为html是静态页面,我们使用的是jsp,需要将html转换为jsp
在wabapp目录下,新建login.jsp页面,将login.html里面的内容拷贝到login.jsp中
修改路径
修改引入的js、css、images资源的路径



