用戶管理的設計--5.用戶信息的保存

来源:http://www.cnblogs.com/zhstudy/archive/2017/07/12/7157976.html
-Advertisement-
Play Games

頁面效果 1.當新增用戶時,保存用戶信息,並刷新用戶管理首頁 2.當編輯已存在的用戶時,更新用戶信息,並刷新用戶管理首頁 實現步驟 1.Action類中定義save()及edit() 2.struts.xml中添加 用戶管理<action>下添加 3.service實現類中定義用戶保存方法 4.在w ...


頁面效果

1.當新增用戶時,保存用戶信息,並刷新用戶管理首頁

 

2.當編輯已存在的用戶時,更新用戶信息,並刷新用戶管理首頁


 

實現步驟

1.Action類中定義save()及edit()

/**  
    * @Name: save
    * @Description: 新增用戶保存
    * @Parameters: 無
    * @Return: String:跳轉到close.jsp
    */
    public String save(){
        elecUserService.saveUser(elecUser);
        return "close";
    }
    
    /**  
    * @Name: edit
    * @Description: 跳轉到用戶編輯頁面
    * @Parameters: 無
    * @Return: String:跳轉到userEdit.jsp
    */
    public String edit(){
        //1.獲取用戶ID
        String userID = elecUser.getUserID();
        //2.使用用戶ID,查詢ElecUser對象,支持表單回顯,這裡的user是放棧頂的對象,不同於elecUser
        ElecUser user=elecUserService.findUserByID(userID);
        //將VO對象的屬性值,放入PO對象的屬性值
        user.setViewflag(elecUser.getViewflag());
        //3.將ElecUser對象放入棧頂,頁面使用struts2標簽回顯
        ValueUtils.pushValueStack(user);
        //4.載入數據字典,用來遍歷性別,職位,所屬單位,是否在職
        this.initSystemDDL();
        //5.二級聯動的表單回顯
        //(1)從ElecUser對象獲取所屬單位的編號
        String ddlCode = user.getJctID();
        //(2)根據所屬單位和數據項編號,獲取數據項的值
        String ddlName=elecSystemDDLService.findDdlNameByKeywordAndDdlCode("所屬單位",ddlCode);
        //(3)使用查詢的數據項的值,作為數據類型,查詢該數據類型的對應的集合,返回List<ElecSystemDDL>
        List<ElecSystemDDL> jctUnitList = elecSystemDDLService.findSystemDDLListByKeyword(ddlName);
        request.setAttribute("jctUnitList", jctUnitList);
        return "edit";
    }

 

2.struts.xml中添加

<!-- 全局轉發 -->
<global-results>
      <!--子頁面關閉,刷新父頁面-->
       <result name="close">/close.jsp</result>
</global-results>

用戶管理<action>下添加

<result name="add">/WEB-INF/page/system/userAdd.jsp</result>
<result name="edit">/WEB-INF/page/system/userEdit.jsp</result>

 

3.service實現類中定義用戶保存方法

/**  
    * @Name: saveUser
    * @Description: 新增用戶保存
    * @Parameters: ElecUser:VO對象
    * @Return: 無
    */
    @Override
    @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)
    public void saveUser(ElecUser elecUser) {
        //獲取用戶ID
        String userID = elecUser.getUserID();
        //判斷是新增還是編輯
        if(StringUtils.isNotBlank(userID)){
            //更新
            elecUserDao.update(elecUser);
        }else{
            //組織PO對象,保存用戶(1條數據)
            elecUserDao.save(elecUser);
        }      
    }

 這裡獲取用戶ID值得是獲取頁面傳遞的userID,在jsp頁面通過添加一個隱藏域實現,隱藏域中存放userID的值:

<s:hidden name="userID"></s:hidden>

 

4.在web.xml中添加

<!-- 
    添加spring解決hibernate懶載入的問題,過濾器 該過濾器一定要放置到struts2過濾器的前面
    原理:延遲了Session的關閉時間,在頁面上關閉
    -->
    <filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>*.do</url-pattern>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

添加OpenSessionInViewFilter過濾器是因為在上面編輯方法edit()中,user對象壓入棧頂後,session關閉清空,再進行二級聯動表單回顯時,無法完成懶載入。

 

5.關閉子頁面,刷新用戶管理首頁面

<%@ page language="java"  pageEncoding="UTF-8"%>
<script language="javascript" src="${pageContext.request.contextPath }/script/function.js"></script>
<html>
<head>
<title>操作成功</title>
</head>
<Script language="javascript">
function closeMethod(){
    refreshOpener();
}
</Script>
<body onload="closeMethod()">
操作成功!
</body>
</html>
JSP頁面代碼

其中refreshOpener的js代碼如下:

function refreshOpener(){

    //opener.location.href=sHref;
    opener.location.reload();
    window.close();
}

 


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

-Advertisement-
Play Games
更多相關文章
  • 項目做了動靜分離,即靜態文件全部放在nginx中,動態文件在tomcat中,如何引用靜態文件,我是這麼做的,見下: 運行結果: ...
  • 今天解決了第11章_不顯示博文表單的問題,時間太晚了,先留個坑,明天寫出詳細的解決方案。 同時也將前11章(當我結束本書學習時會將所有的問題一一列出並給出中文的解決方案)的常見問題給予解答。 ...
  • basestring basestring() 說明:basestring是str和unicode的超類(父類),也是抽象類, 因此不能被調用和實例化,但可以被用來判斷一個對象是否為str或者unicode的實例, isinstance(obj, basestring) 等價於isinstance( ...
  • 什麼題目都不會做於是開始做搜索題。 然而我搜索題也不會做了。 鐵定沒戲的蒟蒻。 1.NOIP2004 蟲食算 “對於給定的N進位加法算式,求出N個不同的字母分別代表的數字,使得該加法算式成立。輸入數據保證有且僅有一組解”。 大概就是給你一堆(n個)字母讓你求出n進位下的一個n位數加n位數得到n位數的 ...
  • Java作為一面向對象的語言,具備面向對象的三大特征——繼承,多態,封裝。 繼承顧名思義,繼任,承接,傳承的意思。面向對象的語言有一個好處,就是可以用生活中的例子來說明面向對象的特性。那麼我們先來看看生活中的繼承關係有哪些?最常見的:父母子女;汽車,電動車,自行車和車。無論哪種車,都有具備車的特性。 ...
  • 1 result標簽是乾什麼的 就是結果,伺服器處理完返回給瀏覽器的結果;是一個輸出結果數據的組件 2 什麼時候需要指定result標簽的類型 把要輸出的結果數據按照我們指定的數據類型進行處理 3 常見的類型(在struts的預設配置文件120行有這些類型的列表) 3.1 dispatcher 轉發 ...
  • 堡壘機的表結構圖: ...
  • 測試 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...