超市订单管理系统项目(1)——项目搭建(后端)

项目搭建

  1. 搭建一个maven web项目
  2. 配置tomcat
  3. 测试项目能否运行
  4. 导入jar包
  5. 创建项目包结构
  6. 编写实体类 ORM映射:表—实体类映射
  7. 编写基础公共类 jdbc.properties url=jdbc:mysql://localhost:3306?serverTimezone=GMT%2B8 username=root password=123456 driver=com.mysql.cj.jdbc.Driver BaseDao public class BaseDao { private static String url; private static String username; private static String password; private static String driver; //静态代码块,类加载时加载资源 static { InputStream rs = BaseDao.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties = new Properties(); try { properties.load(rs); url = properties.getProperty("url"); username = properties.getProperty("username"); password = properties.getProperty("password"); driver = properties.getProperty("driver"); } catch (Exception e) { e.printStackTrace(); } } //建立连接 如果一旦遇到Connection connection = null;立即调用getConn()将连接建立起来 public static Connection getConn(){ Connection connection = null; try { Class.forName(driver); connection = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return connection; } //查询 将这些写在参数中一是方便关闭,二是可以直接获得调用此方法时传递的值,不容易出错。如果单独声明为null,则每次会自动关闭 public static ResultSet executeQ(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet, String sql, Object[] params){ // Connection connection = null; // PreparedStatement preparedStatement = null; // ResultSet resultSet = null; try { preparedStatement = connection.prepareStatement(sql); for (int i = 1; i <= params.length; i++) { System.out.println(params.length); preparedStatement.setObject(i, params[i - 1]);//set...(1,[0]) } resultSet = preparedStatement.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } finally { return resultSet; } } //增删改 public static int executeU(Connection connection, PreparedStatement preparedStatement, String sql, Object[] params){ // Connection connection = null; // PreparedStatement preparedStatement = null; int count = 0; try { preparedStatement = connection.prepareStatement(sql); for (int i = 0; i < params.length; i++) { preparedStatement.setObject(i + 1, params[i]); } count = preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { return count; } } //关闭资源 public static boolean close(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.commit(); //GC connection = null; } catch (SQLException e) { e.printStackTrace(); flag = false; } } return flag; } } 编写字符编码过滤器 @WebFilter("/*") public class CharacterEncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @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); } @Override public void destroy() { } }
  8. 导入静态资源
经验分享 程序员 微信小程序 职场和发展