JAVAEE——BOS物流項目03:學習計劃、messager、menubutton、登陸攔截器、信息校驗和取派員添加功能

来源:https://www.cnblogs.com/xieyupeng/archive/2018/02/16/8451297.html
-Advertisement-
Play Games

1 學習計劃 1、jQuery easyUI messager使用方式 n alert方法 n confirm方法 n show方法 2、jQuery easyUI menubutton使用方式 3、自定義攔截器實現用戶未登錄自動跳轉到登錄頁面 n 創建攔截器 n 註冊攔截器 4、基於ajax實現用 ...


1 學習計劃

1jQuery easyUI messager使用方式

n alert方法

n confirm方法

n show方法

2jQuery easyUI menubutton使用方式

3、自定義攔截器實現用戶未登錄自動跳轉到登錄頁面

n 創建攔截器

n 註冊攔截器

4、基於ajax實現用戶修改密碼功能

n easyUIvalidatebox校驗功能

發送ajax請求

n 服務端修改資料庫

5、基礎設置部分需求分析

6、創建基礎設置部分數據表

n 取派員表

n 區域表

n 分區表

n 定區表

7、取派員添加功能

擴展validatebox校驗規則

n 頁面調整、提交表單

n 服務端操作資料庫

 

jQuery easyUI messager使用方式

2.1 alert

 

2.2 confirm

 

 

2.3 show

 

 

jQuery easyUI menubutton菜單使用

    <!-- 製作菜單 -->
    <a data-options="iconCls:'icon-help',menu:'#mm'" class="easyui-menubutton">控制面板</a>
    
    <!-- 使用div元素製作下拉菜單 -->
    <div id="mm">
        <div onclick="alert(1111)" data-options="iconCls:'icon-edit'">修改密碼</div>
        <div>聯繫管理員</div>
        <div class="menu-sep"></div>
        <div>退出系統</div>
    </div>

 

 

自定義攔截器實現用戶未登錄自動跳轉到登錄頁面

4.1 編寫攔截器類

需要繼承struts2框架的MethodFilterInterceptor

 

提供工具類:

/**
 * BOS項目的工具類
 * @author zhaoqx
 *
 */
public class BOSUtils {
    //獲取session對象
    public static HttpSession getSession(){
        return ServletActionContext.getRequest().getSession();
    }
    //獲取登錄用戶對象
    public static User getLoginUser(){
        return (User) getSession().getAttribute("loginUser");
    }
}

/**
 * 自定義的攔截器,實現用戶未登錄自動跳轉到登錄頁面
 * @author zhaoqx
 *
 */
public class BOSLoginInterceptor extends MethodFilterInterceptor{
    //攔截方法
    protected String doIntercept(ActionInvocation invocation) throws Exception {
        //從session中獲取用戶對象
        User user = BOSUtils.getLoginUser();
        if(user == null){
            //沒有登錄,跳轉到登錄頁面
            return "login";
        }
        //放行
        return invocation.invoke();
    }
}

 

 

4.2 配置攔截器

struts.xml中配置

<interceptors>
            <!-- 註冊自定義攔截器 -->
            <interceptor name="bosLoginInterceptor" class="com.itheima.bos.web.interceptor.BOSLoginInterceptor">
                <!-- 指定哪些方法不需要攔截 -->
                <param name="excludeMethods">login</param>
            </interceptor>
            <!-- 定義攔截器棧 -->
            <interceptor-stack name="myStack">
                <interceptor-ref name="bosLoginInterceptor"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="myStack"/>
        
        <!-- 全局結果集定義 -->
        <global-results>
            <result name="login">/login.jsp</result>
        </global-results>

 

 

 

基於ajax實現用戶修改密碼功能

頁面:WEB-INF/pages/common/index.jsp

 

 

5.1 easyUIvalidatebox使用

提供的校驗規則:

1、非空校驗required="required"

2、使用validType指定

email: 正則表達式匹配電子郵件規則。

url: 正則表達式匹配的URL規則。

length[0,100]: xx字元允許。

remote['http://.../action.do','paramName']: 發送ajax請求做驗證值,返回“true”當成功。

 

<table cellpadding=3>
                    <tr>
                        <td>新密碼:</td>
                        <td><input  required="true" data-options="validType:'length[4,6]'" id="txtNewPass" type="Password" class="txt01 easy      ui-validatebox" /></td>
                    </tr>
                    <tr>
                        <td>確認密碼:</td>
                        <td><input required="true" data-options="validType:'length[4,6]'" id="txtRePass" type="Password" class="txt01 easyui-validatebox" /></td>
                    </tr>
                </table>

 

 

5.2 為確定按鈕綁定事件

 

        //為確定按鈕綁定事件
        $("#btnEp").click(function(){
            //進行表單校驗
            var v = $("#editPasswordForm").form("validate");
            if(v){
                //表單校驗通過,手動校驗兩次輸入是否一致
                var v1 = $("#txtNewPass").val();
                var v2 = $("#txtRePass").val();
                if(v1 == v2){
                    //兩次輸入一致,發送ajax請求
                    $.post("userAction_editPassword.action",{"password":v1},function(data){
                        if(data == '1'){
                            //修改成功,關閉修改密碼視窗
                            $("#editPwdWindow").window("close");
                        }else{
                            //修改密碼失敗,彈出提示
                            $.messager.alert("提示信息","密碼修改失敗!","error");
                        }
                    });
                }else{
                    //兩次輸入不一致,彈出錯誤提示
                    $.messager.alert("提示信息","兩次密碼輸入不一致!","warning");
                }
            }
        });

 

 

5.3 服務端處理

 

第一步:在UserAction中創建修改密碼方法editPassword
    /**
     * 修改當前用戶密碼
     * @throws IOException 
     */
    public String editPassword() throws IOException{
        String f = "1";
        //獲取當前登錄用戶
        User user = BOSUtils.getLoginUser();
        try{
            userService.editPassword(user.getId(),model.getPassword());
        }catch(Exception e){
            f = "0";
            e.printStackTrace();
        }
        ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
        ServletActionContext.getResponse().getWriter().print(f);
        return NONE;
    }

第二步:在UserService中提供修改密碼方法
    /**
     * 根據用戶id修改密碼
     */
    public void editPassword(String id, String password) {
        //使用MD5加密密碼
        password = MD5Utils.md5(password);
        userDao.executeUpdate("user.editpassword", password,id);
    }

第三步:在BaseDao中提供通用更新方法
    //執行更新
    public void executeUpdate(String queryName, Object... objects) {
        Session session = this.getSessionFactory().getCurrentSession();
        Query query = session.getNamedQuery(queryName);
        int i = 0;
        for (Object object : objects) {
            //為HQL語句中的?賦值
            query.setParameter(i++, object);
        }
        //執行更新
        query.executeUpdate();
    }

第四步:在User.hbm.xml中定義更新語句
<query name="user.editpassword">
        UPDATE User SET password = ? WHERE id = ?
</query>

 

 

 

基礎設置部分需求分析

整個BOS項目分為基礎設置、取派、中轉、路由、報表、財務等部分。

 

基礎設置部分對應需要規格說明書的2.6章節

 

 

6.1 基礎檔案設置

主要是針對本系統中的一些自定義項,需要參照錄入,並作為統計分析和計算的維度,用戶根據自己的需要動態設置的基礎檔案;對於自定義的檔案支持多級定義;

本模塊在其他的系統中也可以稱為“數據字典”。

 

 

6.2 收派標準

將承接的貨物,按照重量和體積兩個標準,雙緯度定義貨物的標準。以便將不同標準的貨物分給不同收取和派送能力的人員。由運營部門制定。

 

 

6.3 班車設置

將設置的線路和車輛建立對應關係。

 

6.4 取派員設置

小件員設置主要是設置小件員和快遞員的資源信息,主要是為了自動下單和取派任務件使用;包括增加小件員的交通工具和通訊設備,以及取派的重量和體積標準。

使用角色為各級組織機構的系統管理人員在添加。

取派設置中包括小件員的替班信息設置。

以及被替班人信息的查詢功能。

 

6.5 區域設置

此功能區域為行政區域列表,為價格、商務網站、工作單始發站、目的站等來源的基礎數據。

 

6.6 管理分區

區域是由國家劃分的行政區域,區域往往很大,不規則,不便於進行物人員分配。對於區域要進行細分,產生分區。

對管理分區進行維護,為定區管理,自動下單等後續操作提供基礎數據支持。

打算引入一個複製功能按鈕,用來增加信息基本相同的數據。

 

6.7 管理定區

定區是物流分配的基本單位,可以將客戶信息、取派員信息、分區信息進行關聯,為自動分單提供基礎數據。

 

 

6.8 時間管理

上班時間的管理,根據取派人員的可上班時間,將區域取派任務在不同時限分配給不同的取派人員。建議時間管理由總公司部門管理,固化出各種上班時間點。下級廳點只有調用許可權,沒有修改許可權。

 

使用myeclipse反轉生成: 

 

取派員添加功能

頁面:WEB-INF/pages/base/staff.jsp

 

7.1 頁面調整

第一步:擴展一個手機號的校驗規則

                    <script type="text/javascript">
                                $(function(){
                                    var reg = /^1[3|4|5|7|8][0-9]{9}$/;
                                    //擴展手機號校驗規則
                                    $.extend($.fn.validatebox.defaults.rules, { 
                                        telephone: { 
                                            validator: function(value,param){ 
                                            return reg.test(value);
                                        }, 
                                            message: '手機號輸入有誤!' 
                                        }
                                        }); 
                                    });
                            </script>

 

第二步:為手機號輸入框應用規則

 

 

 

第三步:為保存按鈕綁定事件,提交表單

                            //為保存按鈕綁定事件
                                    $("#save").click(function(){
                                        //表單校驗,如果通過,提交表單
                                        var v = $("#addStaffForm").form("validate");
                                        if(v){
                                            //$("#addStaffForm").form("submit");沒刷新頁面
                                            $("#addStaffForm").submit();
                                        }
                                    });
<form id="addStaffForm" action="staffAction_add.action" method="post">

 

因為PDA不勾選不會往後臺輸出值,所以要設置一個預設值

 

 

7.2 服務端實現

創建取派員對應的ActionServiceDao

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是JDBC JDBC全稱為:Java Data Base Connectivity,它是可以執行SQL語句的Java API 為什麼我們要用JDBC 市面上有非常多的資料庫,本來我們是需要根據不同的資料庫學習不同的API,sun公司為了簡化這個操作,定義了JDBC API【介面】 sun公司只是 ...
  • .NET Core的支持文檔大體上可以參考文檔.Net客戶端使用指南:https://github.com/ctripcorp/apollo/wiki/.Net%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97登錄Apoll... ...
  • 結合之前的 "串口實驗(輪詢方式)" 與 "中斷體系分析" ,我們來做下中斷方式的串口接收實驗。 start.S ~~~~ .global _start .global IRQ_handle _start: / 關 Watch Dog / ldr r0, =0xE2700000 mov r1, 0 ...
  • 要說到為什麼會有這一次網路配置的問題,還要從配置DNF(游戲登錄器)開始說,由於Linux伺服器是用的別人架設好的端,外網訪問又需要配置PHP網關訪問頁面, 無奈電腦是個人電腦,處於電信分配的大型內網中,沒辦法只能用nat123穿透內網,糾結的是80埠又不好申請,就修改了Linux的Apache ...
  • S5PV210 UART 相關說明 通用非同步收發器簡稱 UART, 即 UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用來傳輸串列數據。發送數據時, CPU 將並行數據寫入 UART,UART 按照一定的格式在一根電線上串列發出;接收數據時, UA ...
  • 自14年開始從事資料庫實施,至今(2018-02-16)晃眼間已經四個年頭過去了,工作上的能力要求多數能自己解決,可這不應該成為我學習路上的終點。加之總覺得自己對sql 的理解有些浮於錶面,所以藉著春節放假的時間到此取經。人常言:獨學而無友,則孤陋而寡聞,最近幾天發現有幾個博友的sql 文章寫得非常 ...
  • 一、前言 接著上一章的內容,繼續本章的學習。本章知識來自於https://www.cnblogs.com/jach/p/5709175.html 二、內容 ...
  • 本文主要對Java運行時數據區域、對象的創建過程、對象的記憶體佈局、對象的訪問定位、虛擬機類的載入機制進行簡單的介紹梳理。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...