2012-03-29 65 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