步驟:
1.創建並配置maven,(這里我用的是maven3.6.1版本,沒用idea自帶maven)
1.1配置web.xml版本(因為使用idea模板時默認配置的是web 1版本),在這里我自定義的是web 4版本
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> </web-app>
1.2 導包(用多少導多少后期逐漸的不全)
<?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>
<groupId>com.king</groupId>
<artifactId>smbms</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
</project>
2.配置tomcat(版本 tomcat9)
注意:設置 VM options:-Dfile.encoding=UTF-8(統一,防止控制台中文亂碼)
3.創建項目包結構
4.編寫實體類 pojo
ORM映射:表-->類映射
5.編寫基礎公共類
5.1 數據庫配置文件
注意:我的是mysql 8 的配置文件按,如果是5.x的會略有改動,如何改?,可以去看我之前寫的關於mysql8.x和5.x相互轉換那篇
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=utf-8&useSSL=false username=root password=123456
5.2 編寫:操作數據庫公共類
package com.king.dao; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; //操作數據庫的公共類 public class BaseDao { private static String driver; private static String url; private static String username; private static String password; //靜態代碼塊,類加載的時候就初始化了 static{ Properties properties = new Properties(); //通過類加載器讀取對應資源 InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("db.properties"); try { properties.load(is); } catch (IOException e) { e.printStackTrace(); } //獲取 driver=properties.getProperty("driver"); url=properties.getProperty("url"); username=properties.getProperty("username"); password=properties.getProperty("password"); } //獲取數據庫的來鏈接 public static Connection getConnection(){ Connection connection=null; try { Class.forName(driver); //DriverManager,驅動管理類 connection = DriverManager.getConnection(url, username, password); } catch (Exception e) { e.printStackTrace(); } return connection; } //編寫查詢公共類 public static ResultSet execute(Connection connection,String sql,Object[] params,ResultSet resultSet,PreparedStatement preparedStatement ) throws SQLException { //預編譯的sql后邊無需傳參 preparedStatement = connection.prepareStatement(sql); for (int i=0;i<params.length;i++){ //setObject,占位符從一開始,但數組從0開始 preparedStatement.setObject(i+1,params[i]); } resultSet = preparedStatement.executeQuery(); return resultSet; } //編寫增刪改公共方法 public static int execute(Connection connection,String sql,Object[] params,PreparedStatement preparedStatement ) throws SQLException { //連接 preparedStatement = connection.prepareStatement(sql); for (int i=0;i<params.length;i++){ //setObject,占位符從一開始,但數組從0開始 preparedStatement.setObject(i+1,params[i]); } int updateRows= preparedStatement.executeUpdate(); return updateRows; } //關閉連接,釋放資源 public static boolean closeResource(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet){ boolean flag = true; if(resultSet!=null) { try { resultSet.close(); //GC回收 resultSet = null; } catch (SQLException e) { e.printStackTrace(); flag = false; } } if(preparedStatement!=null) { try { preparedStatement.close(); //GC回收 preparedStatement = null; } catch (SQLException e) { e.printStackTrace(); flag = false; } } if(connection!=null) { try { connection.close(); //GC回收 connection = null; } catch (SQLException e) { e.printStackTrace(); flag = false; } } return flag; } }
5.3 編寫字符編碼過濾器(過濾所有頁面)
類
import javax.servlet.*; import java.io.IOException; public class CharacterEncodingFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); filterChain.doFilter(servletRequest,servletResponse); } public void destroy() { } }
web
<!--字符編碼過濾器--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>com.king.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
finally:
導入靜態資源;比如css,js,圖片等....
(想要靜態資源的,評論留郵箱)