smbms项目搭建

声明

本文部分内容参考自其他作者原创文章,仅供个人学习留档,特此声明

参考文章链接

(3条消息) 狂神说smbms项目(完整)_TTiamo_的博客-CSDN博客_狂神smbms

smbms项目搭建

  1. 搭建一个模板maven webapp项目

  2. 配置Tomcat

  3. 测试项目能否运行起来

  4. 导入所依赖的jar包:

    • servlet 实现servlet接口

    • jsp jsp标签

    • mysql-connector-java java连接数据库

    • jstl jsp标签库

    • standard jsp标签库所依赖的包

  5. 搭建项目结构

  6. 编写实体类

    ORM映射:表----->类

  7. 编写基本公共类

    • 数据库配置文件

      driver=com.mysql.cj.jdbc.Driver
      url=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf8&useSSL=false
      username=root
      password=xy680501*
      
    • 编写数据库的公共类

      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 {
              //通过类加载器去读取对应的资源
              ClassLoader loader = BaseDao.class.getClassLoader();
              InputStream is = loader.getResourceAsStream("db.properties");
              Properties properties = new 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;
          }
          /*
         预编译的sql,执行的时候不需要传sql
          */
          //编写查询的公共类
          public static ResultSet execute(Connection connection, String sql, Object[] param, PreparedStatement statement, ResultSet resultSet){
              try {
                  statement = connection.prepareStatement(sql);
                  //setObject,占位符从1开始,但是数组的参数下标从0开始
                  for (int i = 0; i < param.length ; i++) {
                      statement.setObject(i+1,param[i]);//数组0给占位符1,数组1给2......
                  }
                  resultSet = statement.executeQuery();
              } catch (SQLException e) {
                  e.printStackTrace();
              }
              return resultSet;
          }
      
          //编写增删改的公共类
          public static int execeute(Connection connection,String sql,Object[] param,PreparedStatement statement){
              int resultNum = 0;
              try {
                  statement = connection.prepareStatement(sql);
                  for (int i = 0; i < param.length ; i++) {
                      statement.setObject(i+1,param[i]);
                  }
                  resultNum = statement.executeUpdate();
      
              } catch (SQLException e) {
                  e.printStackTrace();
              }
              return resultNum;
          }
          //关闭资源的公共类
          public static boolean close(Connection connection,PreparedStatement statement,ResultSet resultSet){
              boolean flag = true;
              if (resultSet != null){
                  try {
                      resultSet.close();
                      //垃圾回收的操作
                      resultSet = null;
                  } catch (SQLException e) {
                      e.printStackTrace();
                      //如果没有释放成功
                      flag = false;
                  }
              }
              if (statement != null){
                  try {
                      statement.close();
                      statement = null;
                  } catch (SQLException e) {
                      e.printStackTrace();
                      flag = false;
                  }
              }
              if (connection != null){
                  try {
                      connection.close();
                      connection = null;
                  } catch (SQLException e) {
                      e.printStackTrace();
                      flag = false;
                  }
              }
              return flag;
      
          }
      }
      
    • 编写字符编码过滤器

      1.用于解决乱码的 CharacterEncodingFilter

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

      2.注册

      <filter>
      	<filter-name>CharacterEncodingFilter</filter-name>
          <filter-class>/*</filter-class>
      </filter>
      
  8. 导入静态资源

posted @ 2022-06-01 11:49  无关风月7707  阅读(42)  评论(0编辑  收藏  举报