javaweb 項(xiàng)目初始配置的方法步驟
項(xiàng)目初始流程:
首先說(shuō)一下pom.xml文件的依賴(lài):
<dependencies>
<!-- junit 測(cè)試 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- web servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- 日志打印相關(guān)的jar -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
</dependency>
<!-- mysql 驅(qū)動(dòng)包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<!-- json 依賴(lài) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<!-- hutool工具集 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.7</version>
</dependency>
<!-- commons-io 依賴(lài) -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!-- 添加百度編輯器ueditor支持 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- jstl依賴(lài) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- lombok插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>lezijie-note</finalName>
<plugins>
<!-- 編譯環(huán)境插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>8080</port> <!-- 啟動(dòng)端口 默認(rèn):8080 -->
<path>/note</path> <!-- 項(xiàng)目的站點(diǎn)名,即對(duì)外訪問(wèn)路徑 -->
<server>tomcat7</server> <!-- 服務(wù)器名稱(chēng) -->
</configuration>
</plugin>
</plugins>
</build>
</project>
數(shù)據(jù)庫(kù)的建立于一開(kāi)始的分層:

db.properties:
# 連接MYSQL數(shù)據(jù)庫(kù)的配置文件 注:等號(hào)的前后不要寫(xiě)空格 # 驅(qū)動(dòng)名 jdbcName=com.mysql.cj.jdbc.Driver # 數(shù)據(jù)庫(kù)連接 ( db_lezijie_note是數(shù)據(jù)庫(kù)的名稱(chēng)) dbUrl=jdbc:mysql://localhost:3306/db_lezijie_note?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false # 數(shù)據(jù)庫(kù)的連接賬號(hào) (賬號(hào)基本上都是root) dbName=root # 數(shù)據(jù)庫(kù)的連接密碼 (每個(gè)人的數(shù)據(jù)庫(kù)密碼可能不一致,需要修改) dbPwd=root
首先創(chuàng)建數(shù)據(jù)庫(kù)連接的工具類(lèi):DBUtil

1:得到配置文件對(duì)象:
/**
* 得到配置文件對(duì)象
*/
private static Properties properties = new Properties();
static {
try {
//加載配置文件(輸入流)
InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
// 通過(guò)load()方法將數(shù)日六的內(nèi)容加載到配置文件對(duì)象中
properties.load(in);
// 通過(guò)配置文件對(duì)象的getProperty()方法獲取驅(qū)動(dòng)名,拿到驅(qū)動(dòng)名之后加載驅(qū)動(dòng)
Class.forName(properties.getProperty("jdbcName"));
} catch (Exception e) {
e.printStackTrace();
}
}
2:獲取數(shù)據(jù)庫(kù)連接:
/**
* 獲取數(shù)據(jù)庫(kù)連接
* @return
*/
public static Connection getConnection(){
Connection connection = null;
try {
//得到數(shù)據(jù)庫(kù)鏈接的相關(guān)性息
String dbUrl = properties.getProperty("dbUrl");
String dbName = properties.getProperty("dbName");
String dbPwd = properties.getProperty("dbPwd");
connection = DriverManager.getConnection(dbUrl,dbName,dbPwd);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return connection;
}
3:關(guān)閉資源:
/**
* 關(guān)閉資源
* @param resultSet
* @param preparedStatement
* @param connection
*/
public static void close(ResultSet resultSet,
PreparedStatement preparedStatement,
Connection connection){
//判斷資源對(duì)象如果不為空則關(guān)閉
try {
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
}catch (SQLException throwables) {
throwables.printStackTrace();
}
}
DBUtil類(lèi)全部代碼:
package com.ftzlovedsj.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/**
* @author ${范濤之}
* @Description
* @create 2021-11-14 19:02
*/
public class DBUtil {
/**
* 得到配置文件對(duì)象
*/
private static Properties properties = new Properties();
static {
try {
//加載配置文件(輸入流)
InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
// 通過(guò)load()方法將數(shù)日六的內(nèi)容加載到配置文件對(duì)象中
properties.load(in);
// 通過(guò)配置文件對(duì)象的getProperty()方法獲取驅(qū)動(dòng)名,拿到驅(qū)動(dòng)名之后加載驅(qū)動(dòng)
Class.forName(properties.getProperty("jdbcName"));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 獲取數(shù)據(jù)庫(kù)連接
* @return
*/
public static Connection getConnection(){
Connection connection = null;
try {
//得到數(shù)據(jù)庫(kù)鏈接的相關(guān)性息
String dbUrl = properties.getProperty("dbUrl");
String dbName = properties.getProperty("dbName");
String dbPwd = properties.getProperty("dbPwd");
connection = DriverManager.getConnection(dbUrl,dbName,dbPwd);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return connection;
}
/**
* 關(guān)閉資源
* @param resultSet
* @param preparedStatement
* @param connection
*/
public static void close(ResultSet resultSet,
PreparedStatement preparedStatement,
Connection connection){
//判斷資源對(duì)象如果不為空則關(guān)閉
try {
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
}catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
在寫(xiě)好連接后我們需要寫(xiě)一個(gè)測(cè)試類(lèi)來(lái)判斷數(shù)據(jù)庫(kù)是否真正連接成功:

然后編寫(xiě)測(cè)試代碼:TestDB類(lèi):
package com.ftzlovedsj;
import com.ftzlovedsj.util.DBUtil;
import org.junit.Test;
/**
* @author ${范濤之}
* @Description
* @create 2021-11-14 19:30
*/
public class TestDB {
/**
* 單元測(cè)試方法
* 1. 方法的返回值,建議使用void,一般沒(méi)有返回值
* 2. 參數(shù)列表,建議空參,一般是沒(méi)有參數(shù)
* 3. 方法上需要設(shè)置@Test注解
* 4. 每個(gè)方法都能獨(dú)立運(yùn)行
*
* 判定結(jié)果:
* 綠色:成功
* 紅色:失敗
*/
@Test
public void testDB(){
System.out.println(DBUtil.getConnetion());
}
}
這里倘若出現(xiàn)了報(bào)錯(cuò)有可能的原因是你沒(méi)有在pom文件里面導(dǎo)入mysql連接包:

運(yùn)行成功后:

使用日志:
使用日志
配置文件
在 src/main/resources 目錄下,新建 log4j.properties 文件
### 設(shè)置###stdout,
log4j.rootLogger = all,D,E,stdout
### 輸出信息到控制臺(tái) ###
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 級(jí)別以上的日志到=D://logs/log.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/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 級(jí)別以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/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 ]
使用方式
// 使用日志工廠類(lèi),記入日志 private static Logger logger = LoggerFactory.getLogger(DBUtil.class);
// 記錄日志
logger.info("在{}時(shí),獲取數(shù)據(jù)庫(kù)連接", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));


TestDB:
package com.ftzlovedsj;
import com.ftzlovedsj.util.DBUtil;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author ${范濤之}
* @Description
* @create 2021-11-14 19:30
*/
public class TestDB {
// 使用日志工廠類(lèi),記錄日志
private Logger logger = LoggerFactory.getLogger(TestDB.class);
/**
* 單元測(cè)試方法
* 1. 方法的返回值,建議使用void,一般沒(méi)有返回值
* 2. 參數(shù)列表,建議空參,一般是沒(méi)有參數(shù)
* 3. 方法上需要設(shè)置@Test注解
* 4. 每個(gè)方法都能獨(dú)立運(yùn)行
*
* 判定結(jié)果:
* 綠色:成功
* 紅色:失敗
*/
@Test
public void testDB(){
System.out.println(DBUtil.getConnetion());
//使用日志
logger.info("獲取數(shù)據(jù)庫(kù)連接:" + DBUtil.getConnetion());
logger.info("獲取數(shù)據(jù)庫(kù)連接:{}", DBUtil.getConnetion());
}
}
到此這篇關(guān)于javaweb 項(xiàng)目初始配置的方法步驟的文章就介紹到這了,更多相關(guān)javaweb 項(xiàng)目初始配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
idea 創(chuàng)建properties配置文件的步驟
這篇文章主要介紹了idea 創(chuàng)建properties配置文件的步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
解決JMap抓取heap使用統(tǒng)計(jì)信息報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決JMap抓取heap使用統(tǒng)計(jì)信息報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
解決springboot application.properties server.port配置問(wèn)題
這篇文章主要介紹了解決springboot application.properties server.port配置問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Spring?Boot的幾種統(tǒng)一處理方式梳理小結(jié)
這篇文章主要為大家介紹了Spring?Boot的幾種統(tǒng)一處理方式梳理小結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
淺談Java實(shí)現(xiàn)回溯算法之八皇后問(wèn)題
八皇后問(wèn)題是一個(gè)古老而又著名的問(wèn)題,是學(xué)習(xí)回溯算法的一個(gè)經(jīng)典案例。今天我們就一起來(lái)探究一下吧2021-06-06
Mybatis批量插入數(shù)據(jù)返回主鍵的實(shí)現(xiàn)
這篇文章主要介紹了Mybatis批量插入數(shù)據(jù)返回主鍵的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
一文帶你了解Java中的Object類(lèi)及類(lèi)中方法
Object是Java默認(rèn)提供的一個(gè)類(lèi)。Java里面除了Object類(lèi),所有的類(lèi)都是存在繼承關(guān)系的。默認(rèn)會(huì)繼承Object父?類(lèi)。即所有類(lèi)的對(duì)象都可以使用Object的引用進(jìn)行接收。本文就來(lái)為大家詳細(xì)講講Object類(lèi)及類(lèi)中方法,感興趣的可以了解一下2022-08-08

