SMBMS(超市管理系统)

本文详细介绍了SMBMS超市管理系统的搭建过程,包括使用maven创建Web项目,配置Smart Tomcat,导入必需的jar包,实现数据库连接,编写实体类、DAO、Service和Servlet。还涉及了登录功能的实现与优化,如登录拦截和密码修改,以及用户管理功能的详细步骤,遵循三层架构设计原则。
摘要由CSDN通过智能技术生成

在这里插入图片描述
首先数据库建表:
在这里插入图片描述
项目如何搭建?
我使用的是maven,导入相应的jar包,和依赖

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.28</version>
</dependency>

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13.2</version>
</dependency>

<dependency>
  <groupId>javax.servlet.jsp</groupId>
  <artifactId>javax.servlet.jsp-api</artifactId>
  <version>2.3.3</version>
</dependency>
<dependency>
  <groupId>com.guicedee.services</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>62</version>
</dependency>

<dependency>
  <groupId>javax.servlet.jsp.jstl</groupId>
  <artifactId>javax.servlet.jsp.jstl-api</artifactId>
  <version>1.2.2</version>
</dependency>

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13.2</version>
</dependency>

<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.79</version>
</dependency>

搭建项目准备工作

  1. 搭建一个maven web项目
  2. 配置Smart tomcat
  3. 测试项目是否能跑起来
  4. 导入项目中需要的jar包,jsp,Servlet,MySQL驱动jstl,standard,junit等
  5. 构建项目包结构
    在这里插入图片描述
    6.编写实体类、ROM映射:表–类映射
    7.编写基础公共类
  6. 数据库配置文件
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/smbms?useSSL=true&useUnicode=true&characterEncoding=utf-8
    username=root
    password=password
    
    2.编写数据库公共类
package com.happy.dao;

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

/**
 * 操作数据库的基类--静态类
 */
public class BaseDao {
   
	static{
   //静态代码块,在类加载的时候执行
		init();
	}
	private static String driver;
	private static String url;
	private static String username;
	private static String password;
	
	//初始化连接参数,从配置文件里获得
	public static void init(){
   
		Properties properties=new Properties();
		String configFile = "db.properties";
		InputStream is=BaseDao.class.getClassLoader().getResourceAsStream(configFile);
		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");
	}   
	//获取数据库连接
	//static
	public static  Connection getConnection(){
   
		Connection connection = null;
		try {
   
			Class.forName(driver);
			connection = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
   
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return connection;
	}
	/**
	 * 查询操作
	 * @param connection
	 * @param sql
	 * @param params
	 */
	//static
	//编写公共查询方法
	public static ResultSet execute(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet,String sql,Object[] params) throws Exception{
   
		//预编译的sql不需要传参,直接执行即可
		preparedStatement = connection.prepareStatement(sql);
		for(int i = 0; i < params.length; i++){
   
			//setObject占位符从1开始,但是我们的数组是从0开始
			preparedStatement.setObject(i+1, params[i]);
		}
		resultSet = preparedStatement.executeQuery();//新添加sql
		return resultSet;
	}
	/**
	 * 更新操作
	 * @param connection
	 * @param sql
	 * @param params
	 * @throws Exception
	 */
	//static
	//编写增删改公共方法
	public static int execute(Connection connection,PreparedStatement preparedStatement,String sql,Object[] params) throws Exception{
   
		int updateRows = 0;
		preparedStatement = connection.prepareStatement(sql);
		for(int i = 0; i < params.length; i++){
   
			preparedStatement.setObject(i+1, params[i]);
		}
		updateRows = preparedStatement.executeUpdate();
		return updateRows;
	}
	
	/**
	 * 释放资源
     * @param connection
     */
	//static
	public static  boolean closeResource(Connection connection,PreparedStatement preparedStatement, ResultSet resultSet){
   
		boolean flag = true;
		if(resultSet != null){
   
			try {
   
				resultSet.close();
				resultSet = null;//GC回收
			} catch (SQLException e) {
   
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag = false;
			}
		}
		if(preparedStatement != null){
   
			try {
   
				preparedStatement.close();
				preparedStatement = null;//GC回收
			} catch (SQLException e) {
   
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag = false;
			}
		}
		if(connection != null){
   
			try {
   
				connection.close();
				connection = null;//GC回收
			} catch (SQLException e) {
   
				// TODO Auto-generated catch block
				e.printStackTrace();
				flag = false;
			}
		}
		return flag;
	}
}

3.编写字符编码过滤器

 servletRequest.setCharacterEncoding("utf-8");
 servletResponse
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Marlboro~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值