最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javaweb 項(xiàng)目初始配置的方法步驟

 更新時(shí)間:2021年11月15日 10:33:29   作者:夜色架構(gòu)師  
本文主要介紹了javaweb 項(xiàng)目初始配置的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

項(xiàng)目初始流程:

首先說(shuō)一下pom.xml文件的依賴:

 <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 依賴 -->
    <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 依賴 -->
    <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依賴 -->
    <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ì)外訪問路徑 -->
          <server>tomcat7</server> <!-- 服務(wù)器名稱 -->
        </configuration>
      </plugin>

    </plugins>
  </build>
</project>

數(shù)據(jù)庫(kù)的建立于一開始的分層:

請(qǐng)?zhí)砑訄D片描述

db.properties:

# 連接MYSQL數(shù)據(jù)庫(kù)的配置文件 注:等號(hào)的前后不要寫空格
# 驅(qū)動(dòng)名
jdbcName=com.mysql.cj.jdbc.Driver
# 數(shù)據(jù)庫(kù)連接 ( db_lezijie_note是數(shù)據(jù)庫(kù)的名稱)
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ù)連接的工具類:DBUtil

請(qǐng)?zhí)砑訄D片描述

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類全部代碼:

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();
            }
        }
    }

在寫好連接后我們需要寫一個(gè)測(cè)試類來(lái)判斷數(shù)據(jù)庫(kù)是否真正連接成功:

請(qǐng)?zhí)砑訄D片描述

然后編寫測(cè)試代碼:TestDB類:

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,一般沒有返回值
     *  2. 參數(shù)列表,建議空參,一般是沒有參數(shù)
     *  3. 方法上需要設(shè)置@Test注解
     *  4. 每個(gè)方法都能獨(dú)立運(yùn)行
     *
     *  判定結(jié)果:
     *      綠色:成功
     *      紅色:失敗
     */

    @Test
    public  void testDB(){
        System.out.println(DBUtil.getConnetion());
    }
}

這里倘若出現(xiàn)了報(bào)錯(cuò)有可能的原因是你沒有在pom文件里面導(dǎo)入mysql連接包:

請(qǐng)?zhí)砑訄D片描述

運(yùn)行成功后:

請(qǐng)?zhí)砑訄D片描述

使用日志:

使用日志

配置文件

在 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 ]

使用方式

// 使用日志工廠類,記入日志 
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()));

請(qǐng)?zhí)砑訄D片描述

請(qǐng)?zhí)砑訄D片描述

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 {

    // 使用日志工廠類,記錄日志
    private Logger logger = LoggerFactory.getLogger(TestDB.class);

    /**
     * 單元測(cè)試方法
     *  1. 方法的返回值,建議使用void,一般沒有返回值
     *  2. 參數(shù)列表,建議空參,一般是沒有參數(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)文章

  • AJAX+JAVA用戶登陸注冊(cè)驗(yàn)證的實(shí)現(xiàn)代碼

    AJAX+JAVA用戶登陸注冊(cè)驗(yàn)證的實(shí)現(xiàn)代碼

    這篇文章主要介紹了AJAX+JAVA用戶登陸注冊(cè)驗(yàn)證的實(shí)現(xiàn)代碼,通過(guò)ajax異步刷新頁(yè)面驗(yàn)證用戶輸入的賬號(hào)密碼是否在數(shù)據(jù)庫(kù)中存在。非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-06-06
  • 如何在spring boot中進(jìn)行參數(shù)校驗(yàn)示例詳解

    如何在spring boot中進(jìn)行參數(shù)校驗(yàn)示例詳解

    這篇文章主要介紹了如何在spring-boot中進(jìn)行參數(shù)校驗(yàn)及l(fā)ombok的使用詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • java實(shí)現(xiàn)時(shí)鐘表盤

    java實(shí)現(xiàn)時(shí)鐘表盤

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)時(shí)鐘表盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Spring Kafka中@KafkaListener注解的參數(shù)與使用小結(jié)

    Spring Kafka中@KafkaListener注解的參數(shù)與使用小結(jié)

    @KafkaListener注解為開發(fā)者提供了一種聲明式的方式來(lái)定義消息監(jiān)聽器,本文主要介紹了Spring Kafka中@KafkaListener注解的參數(shù)與使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Java Scanner輸入兩個(gè)數(shù)組的方法

    Java Scanner輸入兩個(gè)數(shù)組的方法

    今天小編就為大家分享一篇Java Scanner輸入兩個(gè)數(shù)組的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • java使用iterator遍歷指定目錄示例分享

    java使用iterator遍歷指定目錄示例分享

    這篇文章主要介紹了java使用iterator遍歷指定目錄示例,需要的朋友可以參考下
    2014-04-04
  • Java中i++與++i的區(qū)別和使用

    Java中i++與++i的區(qū)別和使用

    這篇文章主要介紹了Java中i++與++i的區(qū)別和使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Thymeleaf中th:each及th:if使用方法解析

    Thymeleaf中th:each及th:if使用方法解析

    這篇文章主要介紹了Thymeleaf中th:each及th:if使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例)

    java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例)

    這篇文章主要介紹了java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • java gui實(shí)現(xiàn)計(jì)算器小程序

    java gui實(shí)現(xiàn)計(jì)算器小程序

    這篇文章主要為大家詳細(xì)介紹了java gui實(shí)現(xiàn)計(jì)算器小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評(píng)論

武义县| 浏阳市| 扬州市| 惠来县| 贵德县| 翼城县| 凉山| 沙雅县| 九寨沟县| 织金县| 东安县| 怀宁县| 武平县| 白山市| 中超| 雷波县| 通州市| 秀山| 汉寿县| 襄垣县| 麻江县| 卫辉市| 房山区| 岳阳县| 收藏| 桑日县| 漳州市| 隆化县| 阳西县| 宣化县| 永安市| 修文县| 翁牛特旗| 南部县| 佛教| 塔河县| 萨迦县| 台中县| 九江县| 江永县| 蒲江县|