程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> SSH框架網上商城項目第8戰之查詢和刪除商品種別功效完成

SSH框架網上商城項目第8戰之查詢和刪除商品種別功效完成

編輯:關於JAVA

SSH框架網上商城項目第8戰之查詢和刪除商品種別功效完成。本站提示廣大學習愛好者:(SSH框架網上商城項目第8戰之查詢和刪除商品種別功效完成)文章只能為提供參考,不一定能成為您想要的結果。以下是SSH框架網上商城項目第8戰之查詢和刪除商品種別功效完成正文


上一節我們完成了應用DataGrid顯示一切商品信息,這節我們開端添加幾個功效:添加、更新、刪除和查詢。起首我們完成下前台的顯示,然後再做後台獲得數據。
1. 添加、更新、刪除和查詢功效的前台完成
DataGrid控件裡有個toolbar屬性,是添加對象欄的,我們可以在toolbar屬性中添加這些按鈕來完成響應的功效。先看一下官方文檔對toolbar的界說:

我們應用數組的方法界說對象欄,在query.jsp頁面中新添加以下代碼:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
  <%@ include file="/public/head.jspf" %> 
  <style type="text/css"> 
    body { 
      margin: 1px; 
    } 
        .searchbox { 
            margin: -3; 
        } 
  </style> 
  <script type="text/javascript"> 
    $(function(){ 
      $('#dg').datagrid({   
        //url地址改成要求categoryAction 
        url:'category_queryJoinAccount.action', 
 
        singleSelect:false, //假如為真,只許可單行顯示,全選功效掉效 
        //設置分頁 
        pagination:true, 
        //設置每頁顯示的記載數,默許是10個 
        pageSize:5, 
        //設置可選的每頁記載數,供用戶選擇,默許是10,20,30,40... 
        pageList:[5,10,15,20], 
        idField:'id',//指定id為標識字段,在刪除,更新的時刻有效,假如設置裝備擺設此字段,在翻頁時,換頁不會影響選中的項 
 
           /*********************添加的代碼***********************/ 
        toolbar: [{ 
          iconCls: 'icon-add', 
          text:'添加種別', 
          handler: function(){ 
            alert('--加添種別--'); 
          } 
        },'-',{ 
          iconCls: 'icon-edit', 
          text:'更新種別', 
          handler: function(){ 
            alert('--更新種別--'); 
          } 
        },'-',{ 
          iconCls: 'icon-remove', 
          text:'刪除種別', 
          handler: function(){ 
            //斷定能否有選中行記載,應用getSelections獲得選中的一切行 
            var rows = $("#dg").datagrid("getSelections"); 
            //前往被選中的行,假如沒有任何行被選中,則前往空數組 
            if(rows.length == 0) { 
              //彈出提醒信息 
              $.messager.show({ //語法相似於java中的靜態辦法,直接對象挪用 
                title:'毛病提醒', 
                msg:'至多要選擇一筆記錄', 
                timeout:2000, 
                showType:'slide', 
              }); 
            } else { 
              //提醒能否確認刪除,假如確認則履行刪除的邏輯 
              $.messager.confirm('刪除切實其實認對話框', '您肯定要刪除此項嗎?', function(r){ 
                if (r){ 
                // 加入操作; 
                  alert("--刪除操作--") 
                } 
              }); 
            }             
          } 
         },'-',{ //查詢按鈕不是LinkButton,它有語法,然則也支撐解析HTML標簽 
           text:"<input id='ss' name='serach' />" 
         }], 
         
        //把通俗的文本框轉化為查詢搜刮文本框 
        $('#ss').searchbox({  
          //觸發查詢事宜 
          searcher:function(value,name){ //value表現輸出的值 
                      //查詢操作 
          },  
          prompt:'請輸出搜刮症結字' //默許的顯示 
        });  
        /*********************************************************************/ 
 
    }); 
  </script> 
 </head> 
  
 <body> 
  <table id="dg"></table> 
 </body> 
</html> 

如許我們就搭好了添加、更新、刪除和查詢的前台框架了,如今可以在前台顯示了,後台沒稀有據過去,只是彈出個提醒框,不外顯示功效曾經完成,看一下後果:

接上去我們逐一來完成響應的功效。

2. DataGrid種別查詢的完成
查詢的完成是最簡略的,在搜素框中輸出症結字,然後將症結字作為參數傳給action,然後Service從數據庫中拿出數據,打包成json格局傳到前台來顯示便可,這個進程跟後面顯示一切商品信息是一樣的,我們只須要在下面jsp中添加搜刮部門的代碼便可,其他不消轉變,添加的代碼以下:

//把通俗的文本框轉化為查詢搜刮文本框 
$('#ss').searchbox({  
  //觸發查詢事宜 
  searcher:function(value,name){ //value表現輸出的值 
    //alert(value + "," + name) 
    //獲得以後查詢的症結字,經由過程DataGrid加載響應的信息,應用load加載和顯示第一頁的一切行。 
    //假如指定了參數,它將代替'queryParams'屬性。平日可以經由過程傳遞一些參數履行一次查詢,經由過程挪用這個辦法會向下面url指定的action去發送要求,從辦事器加載新數據。 
    $('#dg').datagrid('load',{ 
      type: value 
    }); 
 
  },  
  prompt:'請輸出搜刮症結字'  
});  

        load辦法可以加載顯示第一頁的一切行,它有個參數,假如指定了,就會去帶上麼的queryParams,不然默許傳遞下面的queryParams指定的參數,我們在這裡將type設置成value的值,即用戶輸出的查詢症結字,然後傳到action,後台依據用戶輸出的value在數據庫中查找,並前往給前台。履行成果以下:

        如許我便完成了搜刮的功效了,比擬簡略。

3. DataGrid種別刪除的完成
如今我們來完成刪除功效,從下面的jsp中可以看出,刪除前斷定用戶有無選中某筆記錄,假如沒有則給用戶一個提醒,假如有選中,則彈出窗口讓用戶確認,假如為真,則履行刪除功效。有個細節要留意下,假如想要一次性刪除多筆記錄,那末下面的singleSelect屬性要設置成false。
起首,我們把下面query.jsp中刪除部門的代碼彌補完,見上面:

{ 
  iconCls: 'icon-remove', 
  text:'刪除種別', 
  handler: function(){ 
    //斷定能否有選中行記載,應用getSelections獲得選中的一切行 
    var rows = $("#dg").datagrid("getSelections"); 
    //前往被選中的行,假如沒有任何行被選中,則前往空數組 
    if(rows.length == 0) { 
      //彈出提醒信息 
      $.messager.show({ //語法相似於java中的靜態辦法,直接對象挪用 
        title:'毛病提醒', 
        msg:'至多要選擇一筆記錄', 
        timeout:2000, 
        showType:'slide', 
      }); 
    } else { 
      //提醒能否確認刪除,假如確認則履行刪除的邏輯 
      $.messager.confirm('刪除切實其實認對話框', '您肯定要刪除此項嗎?', function(r){ 
        if (r){ 
          //1. 從獲得的記載中獲得響應的的id,拼接id的值,然後發送後台1,2,3,4 
          var ids = ""; 
          for(var i = 0; i < rows.length; i ++) { 
            ids += rows[i].id + ","; 
          } 
          ids = ids.substr(0, ids.lastIndexOf(",")); 
          //2. 發送ajax要求 
          $.post("category_deleteByIds.action",{ids:ids},function(result){ 
            if(result == "true") { 
                        //將方才選中的記載刪除,要否則會影響前面更新的操作 
                        $("#dg").datagrid("uncheckAll"); 
              //刷新以後頁,查詢的時刻我們用的是load,刷新第一頁,reload是刷新以後頁 
              $("#dg").datagrid("reload");//不帶參數默許為下面的queryParams 
            } else { 
              $.messager.show({  
                title:'刪除異常', 
                msg:'刪除掉敗,請檢討操作', 
                timeout:2000, 
                showType:'slide', 
              }); 
            } 
          },"text"); 
        } 
      }); 
    }             
  } 
} 

假如用戶選擇刪除,起首會彈出一個對話框,當用戶肯定要刪除後,我們起首要獲得用戶所勾選的商品的id,將這些id拼接成一個字符串,然後向後台發送ajax要求,$.post中的第一個參數是發送到誰人action,第二個參數是發送的參數,第三個參數是回調函數,即刪除勝利後履行該函數外面的辦法,該函數的參數result是從後台傳過去的,第四個參數無關緊要,是前往數據的類型。我們重點看看$.post中的內容,當後台前往一個"true"表現刪除勝利了,那末我們挪用DataGrid外面的reload辦法從新刷新頁面,reload和後面查詢時用的load是一樣的,分歧的處所在於reload刷新後逗留在以後頁面,而load則顯示第一頁。
好了,前台頁臉部分寫好了,接上去完成後台的響應辦法,起首在categoryService中添加deleteByIds辦法,並在其完成類categoryServceImpl中完成該辦法:

//categoryService接口 
public interface CategoryService extends BaseService<Category> { 
  //查詢種別信息,級聯治理員 
  public List<Category> queryJoinAccount(String type, int page, int size); //應用種別的稱號查詢 
  //依據症結字查詢總記載數 
  public Long getCount(String type); 
  //依據ids刪除多筆記錄 
  public void deleteByIds(String ids); 
} 
 
//categoryServiceImpl完成類 
@SuppressWarnings("unchecked") 
@Service("categoryService") 
public class CategoryServiceImpl extends BaseServiceImpl<Category> implements CategoryService { 
 
  //其他辦法省略不寫了……可以參照後面的響應章節內容 
 
  @Override 
  public void deleteByIds(String ids) { 
    String hql = "delete from Category c where c.id in (" + ids + ")"; 
    getSession().createQuery(hql).executeUpdate(); 
  } 
} 

寫好了Service部門,接上去開端寫Action部門了。由於我們要獲得前台傳出去的ids數據,所以在action中得有一個完成了get和set辦法的變量來吸收這個數據,別的,我們要將成果傳給前台,後面章節中我們做級聯查詢的時刻,應用的辦法是struts把查詢的成果數據打包成json格局傳給前台,所以須要一個Map,然後將經由過程設置裝備擺設文件中的設置裝備擺設,將Map轉換成json格局。這裡我們傳到前台的數據比擬簡略,入股刪除勝利我們傳一個"true"便可,所以不消打包成json格局,我們經由過程流的辦法去傳送,事理和後面的一樣,輔弼我們得有一個流的對象去保留這個"true"的字節,然後經由過程設置裝備擺設,將這個對象經由過程傳播到前台。這兩個對象我們照樣寫在BaseAction中,以下:

@Controller("baseAction") 
@Scope("prototype") 
public class BaseAction<T> extends ActionSupport implements RequestAware,SessionAware,ApplicationAware,ModelDriven<T> { 
 
  //獲得要刪除的ids,要有get和set辦法 
  //流是用來想前台前往數據的,這個數據是讓struts獲得的,然後經由過程流的情勢傳到前台,所以完成get辦法便可 
  protected String ids; 
  protected InputStream inputStream; 
     
    //上面省略…… 
} 

對應的CategoryAction中的辦法以下:

@Controller("categoryAction") 
@Scope("prototype") 
public class CategoryAction extends BaseAction<Category> { 
   
  public String queryJoinAccount() { 
        //略…… 
  } 
   
  public String deleteByIds() { 
    System.out.println(ids); 
    categoryService.deleteByIds(ids); 
    //假如刪除勝利就會往下履行,我們將"true"以流的情勢傳給前台 
    inputStream = new ByteArrayInputStream("true".getBytes()); //將"true"的字節存到流inputStream中 
    return "stream"; 
  } 
} 

接上去看struts.xml中響應的設置裝備擺設:

<struts> 
   
  <constant name="struts.devMode" value="true" /> 
   
  <package name="shop" extends="json-default"><!-- jason-default繼續了struts-default --> 
   
    <global-results> 
      <result name="aindex">/WEB-INF/main/aindex.jsp</result> 
    </global-results> 
 
    <!-- class對應的是Spring中設置裝備擺設該Action的id值,由於要交給Spring治理 --> 
    <action name="category_*" class="categoryAction" method="{1}"> 
      <result name="jsonMap" type="json"> 
        <!-- 略 --> 
      </result> 
      <result name="stream" type="stream"> <!-- 以stream的情勢,type為stream --> 
        <param name="inputName">inputStream</param> <!-- imputStream中有要傳的數據 --> 
       </result> 
    </action> 
     
    <action name="account_*" class="accountAction" method="{1}"> 
      <result name="index">/index.jsp</result> 
    </action> 
     
    <!-- 用來完成體系 要求轉發的action,一切的要求都交給execute--> 
    <action name="send_*_*" class="sendAction"> 
      <result name="send">/WEB-INF/{1}/{2}.jsp</result> 
    </action> 
  </package> 
 
</struts> 

        如許我們就做好了刪除的操作了,看一下後果:

        測試勝利,我們也能夠一次性選擇多項去刪除,至此,刪除功效做完了。

原文地址:http://blog.csdn.net/eson_15/article/details/51338991

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved