如何在servlet中获取jsp中form表单提交的变量,以及jsp与servlet之间的数据传递

Java 发表评论

今天让这个问题纠结了大半天,关于如何在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>

发表评论

邮箱地址不会被公开。 必填项已用*标注

昵称 *