如何在servlet中獲取jsp中form表單提交的變量,以及jsp與servlet之間的數據傳遞

今天讓這個問題糾結了大半天,關於如何在servlet中獲取jsp中form表單提交的變量,由於是新手,總結的地方可能不太很準確,望見諒

下面是用jfreechart做的一個柱狀圖,需要用到form表單中下拉選擇框提交的年份,表單在此就不貼出來了

<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<img src="<%=request.getContextPath()%>/bar?year=2013"/>

當year爲常量時,可以作爲參數傳遞,下面yearGet也可以獲取到2013

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// 設置返回類型爲圖片
		response.setContentType("image/png");
		String yearGet=request.getParameter("year");
........
}

但當year傳遞的是一個變量的時候,此參數則無法傳遞


<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
         Calendar calendar = Calendar.getInstance();
	int curYEAR = calendar.get(Calendar.YEAR);
%>
<img src="<%=request.getContextPath()%>/bar?year=<%=curYEAR%>"/>

這時候只需要src的路徑組合在一個String中即可,如下

<%
	Calendar calendar = Calendar.getInstance();
	int curYEAR = calendar.get(Calendar.YEAR);
	String selyear=request.getParameter("selYear");
	if(selyear==null){
	      selyear=curYEAR+"";
	}
	String url=request.getContextPath()+"/bar?year="+selyear;
	System.out.println(url);
%>
<img src="<%=url%>"/>

這樣就可以把變量的值傳遞到servlet.java中



下面貼一下jsp與servlet之間數據傳遞:

1.如果要從servlet把對象傳到jsp,那麼這個對象的成員變量都要實現set/get函數;

2.如果要從servlet與jsp之間傳遞數組類型(list..vector.),那麼應該用session來實現;

3.還沒發現直接把jsp上多個同名的checkbox的字符值傳到servlet中,使用下面的代碼在下標索引的方法上來實現的

<script>
	function doSubmit(){
    var selected = ""; //保存按下的複選框的value 
    // 獲取你的所有的複選框
      var alldatas = document.getElementsByName("pro");
      //遍歷,把選中的複選框value拼接起來並用:分開
      for(var i  =0;i < alldatas.length;i++){
          if(alldatas[i].checked){
              selected += i.toString();
              selected += ":";
          }
      }
      //把頁面導航到你的servlet 
      document.forms[0].action = "photo?op=gotoDownloadAllUsrPhoto&values="+selected;
      //document.forms[0].submit();
   }
	
</script>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章