![](/img/trans.png)
[英]how to pass the same parameter from one JSP to two servlets? Then pass the different parameters from servlet to the same JSP?
[英]Managing two JSP outputs from the same servlet
在我的項目中,我有以下文件:
這是文件:poll.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Poll Page</title>
</head>
<body>
<form action="/poll?action=pole" method="POST">
<div>
<a><h2><% out.print(request.getAttribute("oldTitle").toString());%>
</h2></a><br>
</div>
<br><br>
<input type="submit" name = "submit"value="submit">
</form>
</body
results.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Results</title>
</head>
<body >
<form action="/poll?action=results" method="POST">
<a><% out.print(request.getAttribute("title"));%></a>
</form>
</body>
</html>
PollServlet.java
@WebServlet(name = "PollServlet", urlPatterns = {"/poll"})
public class PollServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if (action.equals("pole")) {
request.setAttribute("oldTitle","new tile for poll.jsp ");
getServletConfig().getServletContext().getRequestDispatcher(
"/poll.jsp").forward(request, response);
} else if (action.equals("results")) {
/* set the title for results.jsp */
request.setAttribute("title","title for results.jsp");
getServletConfig().getServletContext().getRequestDispatcher(
"/results.jsp").forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request,
}
該問題似乎出現在servlet的doGet()
方法中。 我只能設置第一項(poll.jsp)標題的值,而不能設置第二項(results.jsp)的值,這是我做錯了什么,如何正確實現? 謝謝!
您不能多次轉發相同的請求,因為一旦轉發了請求,便已提供響應。 看到這個問題。
但是,在forward()
之后編寫的代碼仍將執行,但這是出於其他目的(例如記錄...),但是您無法再次轉發該請求。
編輯
您可以向網址/poll?action=pole
和/poll?action=results
發送一個參數,這將幫助您確定此頁面是poll.jsp
還是results.jsp
,類似這樣
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if(action.equals("pole")) {
/* set the title for pole.jsp */
request.setAttribute("oldTitle","new tile for poll.jsp ");
getServletConfig().getServletContext().getRequestDispatcher(
"/poll.jsp").forward(request, response);
} else if(action.equals("results")){
/* set the title for results.jsp */
request.setAttribute("title","title for results.jsp");
getServletConfig().getServletContext().getRequestDispatcher(
"/results.jsp").forward(request, response);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.