超市订单管理系统的实现(项目搭建---来自遇见狂神说)

一,项目搭建

1.搭建一个maven web项目

2.配置tomcat

3.测试项目是否能跑器来

4.配置pom.xml

jsp servlet mysql-connector-java jstl standard

5创建项目包结构

6.编写实体类

ORM映射

7.编写基础公共类

数据库配置文件db.properties

driver = com.mysql.jdbc.Driver
url   =jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8
username = root
password = root
编写dao里面的公共类
package com.sqt.dao;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Parameter;
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);
        } catch (IOException e) {
            e.printStackTrace();
        }
        driver =properties.getProperty("driver");
        url    =properties.getProperty("url");
        username =properties.getProperty("root");
        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不用传参)
    public  static ResultSet excute(Connection  connection, String sql, Object[] params,ResultSet rs,PreparedStatement preparedStatement) throws SQLException {
        preparedStatement = connection.prepareStatement(sql);
        for (int i=0;i <params.length;i++){
            //setOject是从1开始,而我们的数组是从0开始
            preparedStatement.setObject(i+1,params[i]);
        }
        rs = preparedStatement.executeQuery();
        return rs;
    }
    //编写增删改的公共区别
    public  static int excute(Connection  connection, String sql, Object[] params,PreparedStatement preparedStatement) throws SQLException {
        preparedStatement = connection.prepareStatement(sql);
        for (int i=0;i <params.length;i++){
            //setOject是从1开始,而我们的数组是从0开始
            preparedStatement.setObject(i+1,params[i]);
        }
        int updateRows = preparedStatement.executeUpdate();
        return updateRows;
    }
    //释放资源,关闭链接
    public static boolean closeResource(Connection  connection,ResultSet rs,PreparedStatement preparedStatement){
        boolean flag =true;
      if(rs!=null){
          try {
              rs.close();
              //Gc回收
              rs =null;
          } catch (SQLException e) {
              e.printStackTrace();
              flag =false;
          }

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

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

        }
        return flag;
    }
}
编写编码过滤器
package com.sqt.filter;

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

/**
 * @author mypc
 */
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");
        servletResponse.setContentType("text/html;charset=utf-8");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}
web.xml文件
<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>com.sqt.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

8.导入静态资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 超市订单管理系统是一个复杂的系统,它需要涉及到用户管理、商品管理、订单管理等多个方面。狂神使用SSM框架来重构这个系统,使系统更加稳定、可靠、易于维护。 首先,他使用Spring框架进行依赖注入和AOP编程,实现各个模块之间的解耦,在改动一处的同时不会影响到其他模块,使得整个系统更加稳健。 其次,他使用MyBatis作为ORM框架,实现了数据库操作的易用性和高效性。MyBatis的插件机制和动态SQL功能可以让程序员更加轻松地实现对数据库的操作,提高了软件开发的效率。 最后,他使用Spring MVC框架来实现前端页面的交互,使得用户可以轻松地操作系统,增加了用户体验度。并且,通过Spring的IOC容器和AOP编程,狂神实现了系统的集中式异常处理,用户在使用系统过程中,不会因为出现异常而影响使用。 狂神超市订单管理系统重构,让系统更加稳定、易维护,提高了开发效率和用户体验度。这个案例也证明了SSM框架的强大功能和应用价值,对于企业级系统开发来,是一个十分优秀的选择。 ### 回答2: 狂神在自己的视频教程中提到了用SSM框架对一个超市订单管理系统进行重构的例子。 首先,SSM框架是由Spring、Spring MVC和MyBatis三种技术整合而成。这三种技术分别负责控制反转、Web框架和数据访问层。使用SSM框架可以减少大量的重复代码和配置,提高代码的可重用性和可维护性。 在重构超市订单管理系统时,狂神先是将原有的代码进行细致的分析和改进,采用了更加规范的MVC(Model-View-Controller)架构,将原本混乱的代码分离成不同的层级:表示层、业务逻辑层、数据持久层。这样的分层模式可以让项目更加易于维护、扩展和调试。 接下来,狂神按照MVC的模式,使用Spring MVC作为控制层框架,依托Spring IOC容器创建各个对象,并通过IOC容器进行管理和调用。在视图层上,采用JSP进行页面的渲染和展示,提高了页面的效率和性能。 在业务逻辑层上,狂神使用了Spring的声明式事务管理来处理数据的一致性和安全。 最后,在数据持久层上,狂神使用MyBatis框架处理数据的增删改查,通过XML文件映射Java对象和数据库中的表格,将数据访问层与业务逻辑层进行解耦。 总的来,通过使用SSM框架,狂神成功地将超市订单管理系统进行了重构,大大提高了代码的可读性与可维护性。同时,他也用此实例向学生们传授了如何面对既有代码进行重构的知识技能。 ### 回答3: 狂神所提及的超市订单管理系统是使用SSM(Spring+Spring MVC+MyBatis)框架进行重构的一个项目。该系统主要是针对超市中的订单进行管理和处理,包括订单的添加、修改、查询、删除等操作。 在使用SSM框架对该系统进行重构时,主要是通过Spring框架进行项目的IOC(控制反转)和AOP(面向切面编程),Spring MVC框架进行前端控制,MyBatis框架进行数据访问和持久化操作。这种设计极大地提高了系统的性能、可维护性和扩展性,并且减少了重复代码和程序员的开发时间。 在该超市订单管理系统中,主要包括了订单管理、商品管理、用户管理和数据统计等模块,这些模块的整合使用提高了系统的功能性和用户的体验。此外,还可以在这些模块之间进行数据的传递和共享,从而避免了数据冗余和重复操作的问题。 总之,该超市订单管理系统的重构使用SSM框架进行,极大地提高了系统的整体性能和可靠性。它可以更好地满足现代企业对信息化管理的需求,通过技术手段更好地为企业创造价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值