目录
一、创建工程
二、创建路径包
三、编写代码
3.1. BaseDao
3.2. 编写字符编码过滤器
3.3. 编写业务实体对象
3.4. 编写数据库配置文件
3.5. 编写web.xml
四、未完待续
本章节的每一段代码,建议全部自己敲一遍,加深印象,切勿直接复制黏贴。
完整工程资源文件夸克网盘下载地址:
链接:https://pan.quark.cn/s/9766fe029b27
一、创建工程
二、创建路径包
创建好工程后,按照下图所示建立好对应的路径包:
三、编写代码
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><groupId>org.example</groupId><artifactId>smbms</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>smbms Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.1</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version></dependency><dependency><groupId>org.glassfish.web</groupId><artifactId>javax.servlet.jsp.jstl</artifactId><version>1.2.5</version></dependency><!-- 连接数据库 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.31</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26 </version></dependency></dependencies><build><finalName>smbms</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.4.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.3.1</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.13.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>3.3.0</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.4.0</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>3.1.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>3.1.2</version></plugin></plugins></pluginManagement></build>
</project>
3.1. BaseDao
该类用于和数据库的交互,创建/关闭数据库连接/操作增删改查的SQL
package com.example.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);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) {try {preparedStatement = connection.prepareStatement(sql);for (int i = 0; i < params.length; i++) {// setObject参数,参数占位符从1开始,我们的参数数组从0开始preparedStatement.setObject(i + 1, params[0]);}resultSet = preparedStatement.executeQuery();} catch (SQLException e) {e.printStackTrace();}return resultSet;}public static int execute(Connection connection, String sql, Object[] params, PreparedStatement preparedStatement) {int updateRows = 0;try {preparedStatement = connection.prepareStatement(sql);for (int i = 0; i < params.length; i++) {// setObject参数,参数占位符从1开始,我们的参数数组从0开始preparedStatement.setObject(i + 1, params[0]);}updateRows = preparedStatement.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return updateRows;}public static boolean closeResource(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {boolean flag = true;if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {e.printStackTrace();flag = false;}}if (preparedStatement != null) {try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();flag = false;}}if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();flag = false;}}return flag;}
}
3.2. 编写字符编码过滤器
设定字符编码为utf-8避免中文乱码,通过过滤器能统一拦截处理字符编码,因此不需要在每个Servlet中再单独进行处理,更便于管理。
package com.example.filter;import javax.servlet.*;
import java.io.IOException;public class CharacterEncodingFilter implements Filter {public void init(FilterConfig config) throws ServletException {}public void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");chain.doFilter(request,response);}
}
3.3. 编写业务实体对象
每个实体对象对应一张相关表
package com.example.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address {private Integer id;private String contact;private String addressDesc;private String postCode;private String tel;private Integer createdBy;private Date creationDate;private Integer modifyBy;private Date modifyDate;private Integer userId;
}
package com.example.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.math.BigDecimal;
import java.util.Date;@NoArgsConstructor
@AllArgsConstructor
@Data
public class Bill {private Integer id;private String billCode;private String productName;private String productDesc;private String productUnit;private BigDecimal productCount;private BigDecimal totalPrice;private Integer isPayment;private Integer createdBy;private Date creationDate;private Integer modifyBy;private Date modifyDate;private Integer providerId;
}
package com.example.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;@AllArgsConstructor
@NoArgsConstructor
@Data
public class Provider {private Integer id;private String proCode;private String proName;private String proDesc;private String proContact;private String proPhone;private String proAddress;private String proFax;private Integer createdBy;private Date creationDate;private Date modifyDate;private Integer modifyBy;
}
package com.example.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;@NoArgsConstructor
@AllArgsConstructor
@Data
public class Role {private Integer id;private String roleCode;private String roleName;private Integer createdBy;private Date creationDate;private Integer modifyBy;private Date modifyDate;
}
package com.example.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {private Integer id;private String userCode;private String userName;private String userPassword;private Integer gender;private Date birthday;private String phone;private String address;private Integer userRole;private Integer createdBy;private Date creationDate;private Integer modifyBy;private Date modifyDate;private Integer age;public Integer getAge() {Date date = new Date();return date.getYear() - birthday.getYear();}
}
3.4. 编写数据库配置文件
在db.properties中配置数据库连接信息
# MySQL驱动 8之前的版本com.mysql.jdbc.Driver 我本地用的8
driver=com.mysql.cj.jdbc.Driver
# 数据库连接地址
url=jdbc:mysql://localhost:3306/smbms/useSSl=true&useUnicode=true&characterEncoding=utf-8
# 用户名
username=root
# 密码
password=Wangzhexiao3313@
3.5. 编写web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-appversion="4.0"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xml="http://www.w3.org/XML/1998/namespace"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"><display-name>Archetype Created Web Application</display-name><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.example.filter.CharacterEncodingFilter</filter-class></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>
四、未完待续
后续内容请查阅下一章节,待更中……