2013-02-21 50 views
0

因此,我目前正在嘗試學習一些JSP,並且我無法弄清楚如何解決我遇到的這個問題。從Servlet重定向後其他形式不起作用

目前,我有一個index.jsp頁面有幾種形式。對於一種形式,它有兩個文本字段,它發送給一個servlet test.java,以便構建一個字符串。建設後的字符串,然後servlet重定向到的index.jsp

原始的index.jsp地址: http://localhost:8080/TestJSPConversion/

重定向後,該地址是 http://localhost:8080/TestJSPConversion/test

的問題出現了,當我嘗試在index.jsp上使用另一種形式,它然後帶我到地址空白頁, http://localhost:8080/TestJSPConversion/test?author=Peter+Johnson

我相信這是由於我用來從servlet重定向的方法(重新quest.getRequestDispatcher(「/ index.jsp」)。forward(request,response); 但是,我不太清楚如何解決這個問題。即使在servlet重定向到index.jsp之後,我也想讓表單工作。

servlet代碼:

protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    // Get parameters from the request. 
    String name = request.getParameter("name"); 
    String email = request.getParameter("email"); 

    String message = null; 
    GregorianCalendar calendar = new GregorianCalendar(); 
    if (calendar.get(Calendar.AM_PM) == Calendar.AM) { 
     message = "Good Morning, "; 
    } else { 
     message = "Good Afternoon, "; 
    } 
    message += name + " with the email, " + email; 

    request.setAttribute("message", message); 
    request.getRequestDispatcher("/index.jsp").forward(request, response); 
} 

index.jsp的代碼:

<h2>Choose authors:</h2> 
<form method="get"> 
    <input type="checkbox" name="author" value="Tan Ah Teck">Tan 
    <input type="checkbox" name="author" value="Mohd Ali">Ali 
    <input type="checkbox" name="author" value="Kumar">Kumar 
    <input type="checkbox" name="author" value="Peter Johnson">Peter 
    <input type="submit" value="Query"> 
</form> 

<c:set var="authorName" value="${param.author}" /> 
</br> 
<c:if test="${not empty authorName}"> 
    <c:out value="${authorName}" /> 
</c:if> 
</br> 
<form action="test" method="POST"> 
    First Name: <input type="text" name="name" size="20"><br /> 
    Surname: <input type="text" name="email" size="20"> 
    <br /><br /> 
    <input type="submit" value="Submit"> 
</form> 
<c:out value="${message}" /> 
+0

當您提交其他形式的,他們有行動=「someServlet」,其中someServlet是現有的servlet? – 2013-02-21 15:08:15

+0

另一種形式只是從複選框抓取作者姓名並顯示它,所以不會。 – Bird 2013-02-21 15:14:02

回答

0

第一:你只實現doPost,所以你的第一個Form與方法= Get的概率將prob。失敗。

第二:你應該使用sendRedirect而不是轉發。這樣,如果您在瀏覽器中刷新了刷新,您將不會收到有關重新發布數據的警告!當服務器進程完成並且您想要將結果顯示在JSP中時,始終要sendRedirect更好。

問候

0

組行動= 「測試」 其他<form>也。

如果這會導致你喜歡域/ TestJspConnection /檢驗/試驗一些網址...然後嘗試行動=「/ TestJSPConnection /測試」作爲您的<form>屬性

哦,是的,沒有注意到這個在所有!......你沒有在你的sevlet實施的doGet()...所以<form method="get" >是登陸您空白頁上

so..two解決方案:

1)中的servlet
實現的doGet()或
2)設置method="post"第一種形式

+0

實現這個仍然讓我到一個空白頁面。例如,點擊Kumar給我地址http:// localhost:8080/TestJSPConversion/test?author = Kumar – Bird 2013-02-21 15:17:35

0

嘗試response.sendRedirect("index.jsp?message=hello");並使用${param.message}(EL)顯示它。如果您在<form action="test" method="POST">中使用方法作爲帖子,則必須在doPost方法中編寫代碼。