今天讓這個問題糾結了大半天,關於如何在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>