JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作


参考教程B站狂神https://www.bilibili.com/video/BV12J411M7Sj


软件版本

IDEA 2020.1
JDK 11
Maven 3.6.3
MySQL 5.7.30
Tomcat 9.0.35

流程图

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第1张图片

数据库相关的表

这些表自己建一下就行,想要建表语句在本篇博客最后附有csdn下载链接,该系列博客最后一篇附有github地址。
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第2张图片

项目如何搭建

考虑使不使用Maven?

  • 使用Maven,找依赖
  • 不使用Maven,导jar包

下面是使用Maven进行项目搭建

项目创建

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第3张图片

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第4张图片

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第5张图片

相关文件内容的修改

把pom.xml文件删除至如下图所示
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第6张图片
把原来的web.xml里的内容替换掉
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第7张图片
替换代码如下

<?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"
         metadata-complete="true">

</web-app>

该代码可以在Tomcat中找达到,路径如下
在这里插入图片描述
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第8张图片

替换成如图所示
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第9张图片
在main下新建java和resources两个文件夹
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第10张图片
idea2020.1版本会有提示,直接双击就可以,版本较低没有提示的解决方法详见博客https://blog.csdn.net/qq_43594119/article/details/106199248中的标记文件夹
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第11张图片
建好后目录结构如下
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第12张图片

配置Tomcat

在这里插入图片描述
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第13张图片
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第14张图片
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第15张图片
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第16张图片
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第17张图片
成功之后可以看到出现了index.jsp页面
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第18张图片
然后启动项目测试能否跑起来
在这里插入图片描述
访问成功
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第19张图片

通过Maven依赖导入jar包

导入以下5个包
jsp,Servlet,mysql驱动,jstl,stand…

  <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>5.1.47</version>
    </dependency>
    <!-- JSTL表达式的依赖 -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- standard标签库的依赖 -->
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>

  </dependencies>

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第20张图片
然后右上角同步
在这里插入图片描述

创建项目包结构

暂时创建以下几种包
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第21张图片

连接MySQL

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第22张图片
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第23张图片
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第24张图片
选中smbms数据库(没有就先去建一个)
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第25张图片
连接成功后如下图:(注意,这里数据库smbms和里面的表我提前建好的,没有就自己建一下,前面有相关的表结构,照着建立就行,想要建表语句在本篇博客最后附有csdn下载链接,该系列博客最后一篇附有github地址。)
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第26张图片

连接MySQL出现问题详见博客https://blog.csdn.net/qq_43594119/article/details/106061275

编写实体类

ORM映射:表-类映射
对照表建立相关的实体类,实体类放在pojo包下。
只需要建立4个实体类User、Bill、Provider、Role即可

  • 先对照user表建立,多了age为了显示可以不写,userRoleName,方便联表查询
    JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第27张图片
    JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第28张图片
    如图所示,get、set方法自动生成即可。不会生成,详见博客https://blog.csdn.net/qq_43594119/article/details/105619222中生成构造方法、get、set方法等

  • bill类,多一个providerName,方便联表查询
    JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第29张图片

  • provider类,结构和表一样
    JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第30张图片

  • Role类,结构和表一样
    JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第31张图片

编写基础公共类

  • 数据库配置文件
    在这里插入图片描述
    JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第32张图片

  • 编写操作数据库的公共类

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第33张图片

package com.ylw.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); //使用properties加载流
        } 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); //将mysql驱动注册到DriverManager中去
            connection = DriverManager.getConnection(url, username, password); //传入参数,获取数据库连接
        } catch (Exception e) {
            e.printStackTrace();
        }
        return connection;//返回连接
    }

    //查询公共方法
    /**
     * @param connection        sql连接
     * @param sql               sql语句
     * @param params            sql参数
     * @param resultSet         查询结果集
     * @param preparedStatement PreparedStatement对象可以防止sql注入
     * @return
     * @throws SQLException
     */
    public static ResultSet execute(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet,String sql,Object[] params) throws SQLException {
        preparedStatement = connection.prepareStatement(sql); //预编译SQL语句

		//向SQL语句中传入参数,即替换占位符?
        for (int i = 0; i < params.length; i++) {
            //setObject,数组从0开始,但是占位符从1开始
            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开始,但是占位符从1开始
            preparedStatement.setObject(i+1,params[i]);
        }

        int updataRows = preparedStatement.executeUpdate();
        return updataRows;//返回更新的行数
    }

    //关闭连接,释放资源
    public static boolean closeResource(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet){
        boolean flag = true;

        if (resultSet!=null){
            try {
                resultSet.close();
                //关闭成功后设置为null,让垃圾回收器回收
                resultSet = null;
            } catch (SQLException e) {
                e.printStackTrace();
                flag = false; //没有释放成功
            }
        }

        if (preparedStatement!=null){
            try {
                preparedStatement.close();
                //关闭成功后设置为null,让垃圾回收器回收
                preparedStatement = null;
            } catch (SQLException e) {
                e.printStackTrace();
                flag = false; //没有释放成功
            }
        }

        if (connection!=null){
            try {
                connection.close();
                //关闭成功后设置为null,让垃圾回收器回收
                connection = null;
            } catch (SQLException e) {
                e.printStackTrace();
                flag = false; //没有释放成功
            }
        }

        return flag; //只要有一个资源没有释放成功就会返回false
    }

}

  • 编写字符编码过滤器
    JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第34张图片
package com.ylw.filter;

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.xml
JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第35张图片

<!--字符编码过滤器-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>com.ylw.filter.CharacterEncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <!-- 设置所有请求都被过滤 -->
        <url-pattern>/*
    

导入网站静态资源

JavaWeb学习笔记 —— 实现SMBMS超市订单管理系统一准备工作_第36张图片
到这里,项目搭建准备工作就完事了


附:

建表语句资源下载:

csdn下载链接:SMBMS超市订单管理系统数据库建表语句

网站静态资源下载:

csdn下载链接:SMBMS超市订单管理系统网站静态资源

下一篇博客地址:

bug改了一天没改出来,暂时不更本系列的下一篇了༼༎ຶᴗ༎ຶ༽(;´༎ຶД༎ຶ`)

你可能感兴趣的:(JavaWeb基础和SSM框架,java,mysql,maven,管理系统,smbms)