SMBMS项目基础环境搭建准备

用maven搭建java web 基础环境

一、新建一个web项目

在这里插入图片描述

在这里插入图片描述

img

img

  • 在src下创建两文件包,分别命名为java,resources

在这里插入图片描述

  • 配置web.xml
    将webapp/WEV-INF/web.xml文件
    在这里插入图片描述
    配置信息更新为4.0版本,具体的代码xml片段可以从tomcat目录下拷贝,如下代码片段
<?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>

二、配置tomcat环境

img

img

img

img
在这里插入图片描述

三、导入依赖

pom.xml文件中导入相应的依赖信息

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
<!--    servlet 依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
<!--    servlet jsp依赖-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
    </dependency>
<!--    mysql 驱动依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.25</version>
    </dependency>
    <!--    jstl依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!--    tiglibs依赖-->
    <dependency>
      <groupId>org.apache.taglibs</groupId>
      <artifactId>taglibs-standard-jstlel</artifactId>
      <version>1.2.5</version>
    </dependency>
    <!-- lombok 依赖-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
    </dependency>
  </dependencies>

四、创建数据库配置文件

在resources包下创建db.properties 配置文件,用于保存数据库连接信息,示例内容如下。

driver=com.mysql.jdbc.Driver
url= jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=utf-8
username=root
password=root

五、编写基本的dao类

BaseDao是一个公共的底层的类

package com.zhang.dao;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * @author zhanghengchao
 * @created 2021-08-26-22:00
 * Desc:操作数据库的公共类
 */
public class BaseDao {
    private static String driver;
    private static String url;
    private static String user;
    private static String pwd;

    //静态代码块,类加载时就进行初始化处理了
    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");
        user = properties.getProperty("user");
        pwd = properties.getProperty("pwd");


    }
    //获取数据库连接
    public static Connection getConnection(){
        Connection  connection = null;
        try {
            Class.forName(driver);
            connection = DriverManager.getConnection(url, user, pwd);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return connection;
    }

    //编写查询公共类
    public static ResultSet execute(Connection connection, PreparedStatement preparedStatement,ResultSet resultSet,String sql, Object[] params) throws SQLException {
        //预编译的sql,在后面直接执行就可以了
        preparedStatement = connection.prepareStatement(sql);

        for (int i = 1; i < params.length ; i++) {
            //setObject占位符从1开始,但数据是从0开始
            preparedStatement.setObject(i + 1,params[i]);
        }
        resultSet = (ResultSet) preparedStatement.executeQuery();
        return  resultSet;

    }

    //编写增删改公共类
    public static int execute(Connection connection,String sql,Object[] params ,PreparedStatement preparedStatement) throws SQLException {
        //预编译的sql,在后面直接执行就可以了
        preparedStatement = connection.prepareStatement(sql);

        for (int i = 1; i < params.length ; i++) {
            //setObject占位符从1开始,但数据是从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 (Exception e) {
                e.printStackTrace();
                flag = false;
            }
        }

        if (preparedStatement != null) {
            try {
                preparedStatement.close();
                //GC回收
                preparedStatement = null;
            } catch (Exception e) {
                e.printStackTrace();
                flag = false;
            }
        }
        if (connection != null) {
            try {
                connection.close();
                //GC回收
                connection = null;
            } catch (Exception e) {
                e.printStackTrace();
                flag = false;
            }
        }

        return  flag;

    }
}

六、过滤器实现

过滤器CharacterEncodingFilter用于将所有页面字符集设置为UTF-8,避免出现乱码问题

package com.zhang.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * @author zhanghengchao
 * @created 2021-08-27-7:18
 */
public class CharacterEncodingFilter implements Filter{
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setCharacterEncoding("utf-8");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

字符编码过滤器,一定要在web.xml中注册
在这里插入图片描述
代码片段具体如下。

<!--     字符编码过滤器注册-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>com.zhang.filter.CharacterEncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

七、导入所需的静态资源

导入到webapp包下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值