分享12:常见学校学生作业系统【注来自学校搜集并整理】


整理自己搜集的学生javaweb作业系统。【侵权请联系作者】
畅想:后期慢慢统一各个系统,依据不同需求,而进行定制化处理。

1.停车场系统。

代码提取地址: https://pan.baidu.com/s/1s3LVtwRzRaC1xCqMB-GRhg 提取码:ex6j
在这里插入图片描述
在这里插入图片描述
扩展:目前扩展了自动处理sql脚本【注意这时对应的serverlet不能懒加载】,处理main.jsp记录展示当前用户相关信息,使用echarts代替了flash插件

2.商场库存管理系统

代码提取路径:https://pan.baidu.com/s/166CJN920M6E3MawaYPjaVQ 提取码:izia
说明:项目利用了status2、hibernate、jsp技术, 以及使用 bootstap进行前端布局;

我关注点:Hibernate缓存包括两大类:一级缓存和二级缓存

Hibernate一级缓存又被称为“Session的缓存”。Session缓存是内置的,不能被卸载,是事务范围的缓存,在一级缓存中,持久化类的每个实例都具有唯一的OID。
Hibernate二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别,第二级缓存是可选的,是一个可配置的插件,默认下SessionFactory不会启用这个插件。

public class Hibernate {
    private static Configuration config = new Configuration().configure();
    //Hibernate二级缓存又称为“SessionFactory的缓存”
    private static SessionFactory session_factory = config.buildSessionFactory();
    //Hibernate一级缓存又被称为“Session的缓存”
    public static Session session = session_factory.openSession();
    public static Transaction t;
    public static void close() {
        session_factory.close();
    }
}

Test
  //事务开始标记
  Hibernate.t = Hibernate.session.beginTransaction();
    User user1 = (User) Hibernate.session.get(User.class, user.getUser_id());
    //事务提交
    Hibernate.t.commit();

在这里插入图片描述
在这里插入图片描述

3快递管理员系统

代码提取: https://pan.baidu.com/s/1vgCeqCOnKPrPQOxmY0aXUA 提取码:5yvm
说明:项目利用了servlet、c3p0数据库连接池技术[中间使用了itcast的工具包]、jsp技术, 以及使用 easyUI进行前端布局;
比较关注的点有:该程序中业务调用都是基于url进行反射调用,例如http://localhost:8080/express/UserServlet?method=seclectAll ,[servelt拦截器配置名称]?[固定请求参数名]=[调用的方法名称]

 public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");//处理响应编码
        /**
         * 1. 获取method参数,它是用户想调用的方法 2. 把方法名称变成Method类的实例对象 3. 通过invoke()来调用这个方法
         */
        String methodName = request.getParameter("method");
        Method method = null;
        /**
         * 2. 通过方法名称获取Method对象
         */
        try {
            method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
        } catch (Exception e) {
            throw new RuntimeException("您要调用的方法:" + methodName + " 它不存在!", e);
        }

        /**
         * 3. 通过method对象来调用它
         */
        try {
            String result = (String) method.invoke(this, request, response);
            if (result != null && !result.trim().isEmpty()) {//如果请求处理方法返回不为空
                int index = result.indexOf(":");//获取第一个冒号的位置
                if (index == -1) {//如果没有冒号,使用转发
                    request.getRequestDispatcher(result).forward(request, response);
                } else {//如果存在冒号
                    String start = result.substring(0, index);//分割出前缀
                    String path = result.substring(index + 1);//分割出路径
                    if (start.equals("f")) {//前缀为f表示转发
                        request.getRequestDispatcher(path).forward(request, response);
                    } else if (start.equals("r")) {//前缀为r表示重定向
                        response.sendRedirect(request.getContextPath() + path);
                    }
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

在这里插入图片描述
在这里插入图片描述


持续更新中

说明更新的项目来着小白日常搜集,学习相关逻辑,并加入了自己的设想,以及自己学习的内容与其中。
如有侵权,请联系处理谢谢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章