2012-03-29 66 views
0

在下面的程序中,代碼中的最後一行顯示錯誤。 df和d無法解析。我在普通的Java程序中使用了相同的邏輯,並且得到了輸出。有人可以解釋這個問題。使用servlet時未顯示日期

package com.first; 
import java.io.*; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class AgeCalc extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    public AgeCalc() { 
     super(); 
     } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     //request parameters 
     String name1=request.getParameter("name1"); 
     try { 
     DateFormat df=new SimpleDateFormat("dd-MMM-yy"); 
     String dob=request.getParameter("dob"); 
     Date d=df.parse(dob); 

     } 
     catch(Exception e){} 
     out.println("<html><h3>The name entered is </h3></html>"+name1); 
     out.println("<html><body>and the date of birth is </body></html>" +df.format(d)); 

    } 
} 

回答

2

ddf變量內部try塊定義和不屬於它的外部可見。無論外界宣告他們:

DateFormat df = null; 
Date d = null; 
try { 
    df=new SimpleDateFormat("dd-MMM-yy"); 
    String dob=request.getParameter("dob"); 
    d=df.parse(dob); 
} catch(Exception e){ 
} 
out.println("<html><h3>The name entered is </h3></html>"+name1); 
out.println("<html><body>and the date of birth is </body></html>" +df.format(d)); 

更好,在一個巨大的try塊包裹的一切:

try { 
    DateFormat df=new SimpleDateFormat("dd-MMM-yy"); 
    String dob=request.getParameter("dob"); 
    Date d=df.parse(dob); 
    out.println("<html><h3>The name entered is </h3></html>"+name1); 
    out.println("<html><body>and the date of birth is </body></html>" +df.format(d)); 
} catch(Exception e){ 
} 

這是基本的Java,沒有真正涉及到的servlet。你也做一些不同之處,至少包括:

} catch(Exception e){ 
    e.printStackTrace(); 
} 
+0

當包裹在一個try塊,響應頁面(請求提交後)顯示完全空白。 – maryJane 2012-03-29 13:06:13

+0

@ user1295306:請添加例外處理,例如'e.printStackTrace()',我相信你正在吞嚥一些異常。 – 2012-03-29 13:14:18

+0

我之所以提到servlet的原因是,這個邏輯確實與一個普通的java應用程序一起工作,用變量df和d的作用域來處理.. @Tomasz Nurkiewcz – maryJane 2012-03-29 13:15:40