2013-04-21 41 views
1

我創建了一個JSP頁面,其中的單選按鈕與當月的天數相同。該代碼是:將動態數據傳遞給servlet中的HashTable

<%@page import="java.util.Calendar"%> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org /TR/html4/loose.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>Insert title here</title> 
</head> 
<body> 
    <form action="TestAms" method="post"> 
    <% 
     Calendar cal = Calendar.getInstance(); 
     int md = cal.getActualMaximum(Calendar.DATE); 
     for(int i=0; i<md; i++){ 
      %> 
       <input type="radio" name="<%= i%>" value="<%=i %>"> 
      <% 
     } 
    %> 
    <input type="submit" value="SUBMIT"> 
    </form> 
</body> 
</html> 

現在我得到在servlet單選按鈕(JSP頁面)的響應,並將它們存儲在一個哈希表然後打印哈希表的元素,但我沒有得到預期的結果。沒有HashTable它工作正常,但我希望這與HashTable一起工作。 servlet代碼是:

import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Calendar; 
import java.util.Enumeration; 
import java.util.Hashtable; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class TestAms extends HttpServlet { 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    PrintWriter out = response.getWriter(); 

    Calendar cal = Calendar.getInstance(); 
    int md = cal.getActualMaximum(Calendar.DATE); 

    Hashtable ht = new Hashtable<>(); 
    Enumeration sh = ht.keys(); 

    for (int y=0; y<md; y++){ 
     String s[] = new String[md+1]; 
     s[md] = request.getParameter(Integer.toString(y)); 
     if(s[md]!=null){ 
      //out.println(s[md]); 
      ht.put(y, s[md]); 
     } 
    } 

    while(sh.hasMoreElements()){ 
     System.out.println(sh.nextElement()); 
    } 
} 
} 

回答

1

我得到在servlet單選按鈕(JSP頁面)的響應,並將它們存儲在一個哈希表然後打印哈希表的元素,

請在下面找到該優化版本將把請求參數值存儲在Hashtable中。我希望這可以工作:

protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
     Hashtable<String, String> days = new Hashtable<>(); 
     Enumeration<String> names = request.getParameterNames(); 
     while(names.hasMoreElements()){ 
      String param = names.nextElement(); 
      String value = request.getParameter(param); 
      days.put(param, value); 
     } 
     System.out.println(days); 
}