2012-03-29 2 views
0

В приведенной ниже программе последняя строка кода показывает ошибку. df и d не могут быть разрешены. Я использовал ту же логику в обычной программе Java, и я получил результат. Может кто-нибудь объяснить проблему в этом.Дата не отображается при использовании с сервлетами

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

d и df переменные определены внутри 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, на самом деле не связано с сервлетов. Кроме того, вы пожалуйста, сделать что-то за исключением, по крайней мере:

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

когда обернутый в одну попытку блока, страница ответа (после отправки запроса) показан совершенно пустой. – maryJane

+0

@ user1295306: добавьте обработку исключений, например. 'e.printStackTrace()', я считаю, что вы проглатываете какое-то исключение. –

+0

Причина, по которой я упоминал сервлет, логика действительно работала с обычным java-приложением, ofcrse с объемом переменных df и d, о котором заботились .. @Tomasz Nurkiewcz – maryJane

Смежные вопросы