• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      會(huì)話狀態(tài)在在線考試系統(tǒng)中的應(yīng)用

      2016-06-30 19:29李展飛
      電腦知識(shí)與技術(shù) 2016年14期

      李展飛

      摘要:為適應(yīng)“互聯(lián)網(wǎng)+”教育快速發(fā)展的新常態(tài),該校進(jìn)行了在線考試系統(tǒng)的開發(fā)和研究。該文介紹了各種頁面狀態(tài)管理技術(shù)的利弊,并結(jié)合該校實(shí)際闡述了會(huì)話狀態(tài)在在線考試系統(tǒng)開發(fā)中的實(shí)現(xiàn)和作用。

      關(guān)鍵詞:在線考試系統(tǒng);頁面狀態(tài)管理技術(shù);會(huì)話狀態(tài)

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2016)14-0048-03

      Session State in Online Examination System

      LI Zhan-fei

      (Medicine College of Shaoguan University, Shaoguan 512026, China)

      Abstract: To adapt to the rapid development of the new normal Internet plus "education, our school has carried on the research and development of online examination system. This paper introduces the advantages and disadvantages of various page status management technology, and elaborate the session state in the online examination system in combination with the actual situation of our school.

      Key words: the online examination system; page status management technology; session state

      為適應(yīng)信息快速發(fā)展的新常態(tài),基于“互聯(lián)網(wǎng)+”的教育領(lǐng)域也隨著發(fā)生了日新月異的變化。為了使考試更加的公正、客觀、有效率和節(jié)能環(huán)保,實(shí)現(xiàn)無紙化考試,我校也于近期對(duì)該項(xiàng)目進(jìn)行了立項(xiàng)研究。在開發(fā)在校考試系統(tǒng)的過程中,我們用到了頁面狀態(tài)管理技術(shù),那么在開發(fā)中為什么要用到頁面狀態(tài)管理呢?我們都知道開發(fā)的Web網(wǎng)站、Web應(yīng)用程序都是要跟Http協(xié)議打交道的,而Http協(xié)議是無狀態(tài)的,頁面需要什么,都是通過請求鏈接響應(yīng)斷開這樣的一個(gè)過程,斷開之后服務(wù)器就不記得上一次到底給了瀏覽器什么?如果要想讓瀏覽器回想起上次給了瀏覽器什么,那么頁面在下一次請求之時(shí)就必須帶上上一次的一些相關(guān)的信息,讓服務(wù)器回想起來,服務(wù)器再根據(jù)這些相關(guān)的信息就能還原上一次的狀態(tài)了,那么根據(jù)保存這些維持狀態(tài)的相關(guān)信息的位置可以把狀態(tài)管理分為基于客戶端頁面狀態(tài)管理和基于服務(wù)器端頁面狀態(tài)管理[1]。

      1 基于客戶端頁面狀態(tài)管理

      基于客戶端的狀態(tài)管理主要包括隱藏域、視圖狀態(tài)(ViewState)、查詢字符串和Cookie等,有時(shí)候在開發(fā)的過程中,為了實(shí)現(xiàn)一些輕量級(jí)的數(shù)據(jù)處理,經(jīng)常使用一些隱藏控件來做數(shù)據(jù)的容器,在隱藏域中保存數(shù)據(jù)即對(duì)value屬性賦值,其value屬性只能儲(chǔ)存一些簡單的字符串,并且用戶可以通過查詢源代碼的形式查看其相關(guān)的value值。視圖狀態(tài)(ViewState)主要是用來存放和視圖相關(guān)的一些狀態(tài),是基于單個(gè)頁面的狀態(tài)管理方法,它把需要保留的頁面狀態(tài)數(shù)據(jù)和控件值在回發(fā)的過程中序列化成Base64編碼,并輸出到視圖狀態(tài)的隱藏字段中,并在回發(fā)后在當(dāng)前頁面將其恢復(fù)的一種方法。ViewState也不能保存太多的數(shù)據(jù),否則頁面就很難打開了。查詢字符串是開發(fā)者為了在頁面之間保持頁面狀態(tài)信息傳遞,自行將一些簡單的字符串放于URL中,實(shí)現(xiàn)從當(dāng)前頁到目標(biāo)頁的信息傳遞。Cookie是服務(wù)器生成的一組數(shù)據(jù),由服務(wù)器發(fā)給客戶瀏覽器,客戶瀏覽器把它保存在本地的磁盤某個(gè)目錄文件中。

      上面這幾種方法在數(shù)據(jù)傳輸往返過程中,數(shù)據(jù)信息不會(huì)保存在服務(wù)器中,主要保存在Web頁面和客戶電腦中。

      2 基于服務(wù)器端頁面狀態(tài)管理

      基于服務(wù)器端的狀態(tài)管理主要包括會(huì)話狀態(tài)(session)、應(yīng)用程序狀態(tài)(Application)、數(shù)據(jù)庫技術(shù)和Cache等,會(huì)話狀態(tài)是一個(gè)跨頁面保持狀態(tài)的最佳方法,它可以在一個(gè)頁面保存信息,而在另一個(gè)頁面使用,而且可以實(shí)現(xiàn)復(fù)雜數(shù)據(jù)的傳輸。應(yīng)用程序狀態(tài)(Application)是一個(gè)全局對(duì)象,可以被所有客戶端訪問,它的語法跟Session相似。數(shù)據(jù)庫技術(shù)就是把要訪問的數(shù)據(jù)信息保存到數(shù)據(jù)庫中,Web頁面要讀取和存儲(chǔ)狀態(tài)都需要訪問數(shù)據(jù)庫,這種技術(shù)有利于需要長期維持信息狀態(tài)或者即使服務(wù)器重啟仍需要保留狀態(tài)的開發(fā)中。Cache也就是我們經(jīng)常說的緩存,它的使用方法和application一樣,也是整個(gè)應(yīng)用程序共用一份的,由于緩存的讀取速度快,所以我們經(jīng)常把一些查詢次數(shù)多但改動(dòng)又不大的數(shù)據(jù)放在cache中。

      3 考試頁面狀態(tài)保持的實(shí)現(xiàn)

      無論是基于客戶端還是基于服務(wù)器端的狀態(tài)管理方法,每一種方法都有自己的優(yōu)缺點(diǎn),比如基于客戶端的狀態(tài)管理,因?yàn)榘褦?shù)據(jù)放在客戶端就會(huì)存在數(shù)據(jù)不安全,容易被篡改的風(fēng)險(xiǎn),而且客戶端的傳輸數(shù)據(jù)類型,大小也要受到限制;基于服務(wù)器端的狀態(tài)管理,實(shí)現(xiàn)了數(shù)據(jù)安全的同時(shí)也加大了服務(wù)器的負(fù)擔(dān),使用結(jié)束之后要盡量清除,否則大量的使用將會(huì)導(dǎo)致服務(wù)器的癱瘓。綜合分析, 現(xiàn)結(jié)合我院實(shí)際,就在線考試系統(tǒng)的多選會(huì)話狀態(tài)實(shí)現(xiàn)過程作簡要介紹[2]。

      3.1 ASPX頁面布局

      為了防止考生在考試的過程中作弊,所以在aspx頁面放置了一個(gè)GridView控件,其相關(guān)的控件屬性設(shè)置如下:,并在GridView控件里面用table根據(jù)自己的需要進(jìn)行布局,內(nèi)置一個(gè)CheckBoxList,其ID="CheckBoxList1",并把對(duì)應(yīng)的數(shù)據(jù)庫字段綁定到對(duì)應(yīng)的表格里面[3]

      3.2 CS頁面代碼實(shí)現(xiàn)

      在CS頁面通過自寫的SqlHelper鏈接數(shù)據(jù)庫進(jìn)行GridView控件綁定,實(shí)現(xiàn)代碼如下:

      protected void Page_Load(object sender, EventArgs e)

      {

      if(!IsPostBack)

      {

      Bind();

      }

      }

      private void Bind()

      {

      DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Answer");

      gridview.DataSource = dt;

      gridview.DataBind();

      }

      當(dāng)點(diǎn)擊GridView分頁功能進(jìn)行翻頁時(shí),將觸發(fā)gridview_PageIndexChanging事件,在事件里面實(shí)現(xiàn)了二個(gè)方法,RecordCurrentState()記錄原來分頁面的所有CheckboxList的選中狀態(tài),

      ResetBeforeState()還原當(dāng)前選中頁面的CheckboxList的狀態(tài),事件gridview_PageIndexChanging的代碼如下:

      Protectedvoidgridview_PageIndexChanging(objectsender,GridViewPageEventArgse)

      {

      //記錄原來分頁面的所有CheckboxList的狀態(tài)

      RecordCurrentState();

      gridview.PageIndex = e.NewPageIndex;

      Bind();

      //重構(gòu)當(dāng)前選中頁面的CheckboxList的狀態(tài)

      ResetBeforeState();

      }

      RecordCurrentState()記錄原來分頁狀態(tài)的代碼如下:

      //CheckBoxList記錄下翻頁之前的狀態(tài)

      private void RecordCurrentState()

      {

      Dictionary dic = new Dictionary();

      for (int i = 0; i < gridview.Rows.Count; i++)

      {

      string index = gridview.DataKeys[i].Value.ToString();

      CheckBoxList rblist = gridview.Rows[i].Cells[0].FindControl("CheckBoxList1") as CheckBoxList;

      string matter = "";

      for (int j = 0; j < rblist.Items.Count; j++)

      {

      if (rblist.Items[j].Selected)

      {

      matter = (matter + rblist.Items[j].Value.ToString() + "、").Trim();

      }

      }

      if (Session["AnswerResult"] != null)

      {

      dic = (Dictionary)Session["AnswerResult"];

      if (dic.ContainsKey(index))

      {

      dic.Remove(index);

      }

      }

      dic.Add(index, matter);

      Session["AnswerResult"] = dic;

      }

      }

      ResetBeforeState()還原當(dāng)前選中頁面狀態(tài)的代碼如下:

      //CheckBoxList還原以前的狀態(tài)

      private void ResetBeforeState()

      {

      Dictionary dictionary = (Dictionary)Session["AnswerResult"];

      for (int i = 0; i < gridview.Rows.Count; i++)

      {

      string index = gridview.DataKeys[i].Value.ToString();

      if (dictionary.Keys.Contains(index))

      {

      CheckBoxList rblist = gridview.Rows[i].Cells[0].FindControl("CheckBoxList1") as CheckBoxList;

      string str = dictionary[index].TrimEnd('、'); //去掉最后一個(gè)頓號(hào)

      int length = str.Split('、').Length;

      for (int k = 0; k < length; k++)//給CheckBoxList選中的復(fù)選框 賦值

      {

      for (int j = 0; j < rblist.Items.Count; j++)

      {

      string result = str.Split('、')[k];

      if (result == rblist.Items[j].Value)

      {

      rblist.Items[j].Selected = true;

      }

      }

      }

      }

      }

      }

      4 結(jié)束語

      要保證在線考試系統(tǒng)的順暢運(yùn)行,保存考生在提交考卷前的答案,同時(shí)使考生能在檢查中隨時(shí)修改部分題目答案又不影響其他已做題目的答案,頁面狀態(tài)管理技術(shù)起著非常重要的作用。頁面狀態(tài)管理技術(shù)根據(jù)保存路徑不同分為兩種,即基于客戶端頁面狀態(tài)管理和基于服務(wù)器端頁面狀態(tài)管理,兩者各有利弊,互輔互成,我們在進(jìn)行在線考試系統(tǒng)開發(fā)中,根據(jù)實(shí)際情況選擇適合的頁面狀態(tài)管理技術(shù),最大限度地保證了在線考試系統(tǒng)的順暢運(yùn)行和安全運(yùn)行。

      參考文獻(xiàn):

      [1] 張靜. 淺談ASP.NET中頁面狀態(tài)管理方法[J].無線互聯(lián)科技. 2015(17):38-39.

      [2] 馬偉. ASP.NET 4 權(quán)威指南[M]. 北京: 機(jī)械工業(yè)出版社, 2010.

      [3] 郭文波. ASP.NET GridView控件的高級(jí)數(shù)據(jù)綁定與應(yīng)用[J].電腦編程技巧與維護(hù), 2012(7):54-58.

      镇沅| 天台县| 郓城县| 梁河县| 镶黄旗| 南京市| 新化县| 鹤壁市| 桦川县| 广饶县| 青岛市| 陆良县| 东平县| 昭觉县| 通辽市| 离岛区| 莫力| 治县。| 中宁县| 巩义市| 邵阳市| 石狮市| 揭西县| 宝鸡市| 资阳市| 克什克腾旗| 嘉祥县| 郴州市| 囊谦县| 黑水县| 湘乡市| 宾川县| 佛学| 信宜市| 错那县| 承德县| 岐山县| 满城县| 克什克腾旗| 冷水江市| 保靖县|