分享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);
        }
    }

在這裏插入圖片描述
在這裏插入圖片描述


持續更新中

說明更新的項目來着小白日常蒐集,學習相關邏輯,並加入了自己的設想,以及自己學習的內容與其中。
如有侵權,請聯繫處理謝謝。

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