程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp如何處理表單及JS和JAVA變量互傳

jsp如何處理表單及JS和JAVA變量互傳

編輯:關於JSP

1:超連接跳轉

  我們在超連接的時候,常常連接到一個jsp或者Action,比如:
  XXX
  這樣做會有一個問題:在test.jsp中,除你傳遞的param1和param2參數外,你用request.getParamter()取任何原來頁面的表單元素都會為空,這是因為這種方式會產生新的request生命周期,在這個request中只會包含超連接後跟隨的?param1這種參數, 因此我的建議是如果不是很簡單的頁面跳轉(比如回登陸頁面之類的),盡量不要用這種超連接方式。

  2:既傳參又提交表單

  如果確實既要像上述第一種方式傳參數,又要提交表單的話,可以采取如下方式:
  在腳本中如下處理:
以下是代碼片段:
 functioncommonSubmit(url)
  {
  form1.action="/jsp/managerAction.do?"+url;
  form1.submit();
  }
  提交到Action和jsp是一樣的原理,但要記住中method=post不能少,否則它只提交表單而不傳param參數了(正好和第一種相反:) )

  3:Action中request不會丟掉

  不知大家有沒有注意到這個好處,Struts架構中是由一個ActionServlet來作為MVC的控制器角色,jsp頁面提交後request是傳到 ActionServelt中的, 而ActionServlet將根據struts-config.xml中的配置調用相應的Action的方法,並將從jsp中獲得的request傳給 Action類,這樣request的生命周期是連續的,即你在jsp中提交了表單,在Action中執行了方法,再回到jsp頁面,用 request.getParamter()取jsp頁面的表單元素值會發現它還在,這對於頁面下拉列表等選擇項防止復位是一個很好實現方法。

  4:傳參時參數有空格的情況

  如果你提交form時帶參數,比如form1.action="/jsp/Action.do?param1="+value1,注意如果value1中帶有空格的話,你在
  Action中request.getParameter("param1");
  取得的只是空格前的值,因此如果有這種帶空格的參數在傳遞時,個人建議是將其轉化為特定的字符串,value1=value1.replaceAll(" ","%NULL%");
  然後在Action中將其轉回來:request.getParamter("param1").replaceAll("%NULL%","");

  5:form-data屬性

  如果你要用來上傳文件的話,注意在一個表單中如果有enctype="multipart/form-data"屬性的話,是不能接收除 type=file外的其他表單元素類型的。
  即如果你把textfield放在同一表單中,而該表單有enctype="multipart/form-data"的話,request.getParamter取 text的值會為空, 這個問題的最簡單的解決方法是將單獨放一個表單,上傳文件時只提交該表單即可。

 6:jsp中開模式對話框的方式

  將一個jsp頁面放到一個模式對話框中打開,這樣在模式對話框消失前,原jsp頁面將不可操作。特別適合父頁面中要做一些額外的選擇操作,而又沒必要跳轉到新的jsp頁面的時候,開模式對話框的方式參考如下:
以下是代碼片段:
 Functionopen() {
  If(window.showModelDialog())
  {
  Var returnValue = showModelDialog(“/jsp/模式窗口包含的jsp頁面路徑”;
  help=0;status=0;center=yes;dialogWidth=100pt;dialogHeight=100pt”);
  }
  }

  7:js和java變量互傳

  在jsp中經常會遇到把js變量賦給java變量,或者將java變量賦給js變量的情況,在此將通用的處理方法小結如下:
  java變量傳給js好辦,var a="";注意要將引號""加上;
  js變量給java稍微復雜點,一般是在表單中用一個
  的隱藏表單元素,然後在腳本中將js變量值賦給它:
  var jsParamValue='aaaa';
  form1.jsParam.value=jsParamValue;
  然後就可以request.getPrameter("jsPrama");來取得js變量值了
  補充:ajax其實就是實時的,在頁面不刷新的情況下,將JS變量傳到服務器的技術
  總結:
  不能拿JS變量在頁面上給java變量賦值;
  相反可以用var jsParam = "" 將java變量賦值給js變量.

 

摘自 sdtarena

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