2016-02-09 19 views
2

我是新的使用JSP & servlets,所以我不知道我是否正確地做到這一點。所以在這裏。doPost後一個前向servlets

我試圖用我的firstServlet做一個doPost來填充表然後用第二個我要嘗試做一個插入,但我需要從index.jsp表的數據,但是當我執行secondServlet我得到一個空數據

的index.html

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
    <table> 
     <tr> 
      <td id="data"><%=(String)request.getAttribute("data") %> </td> 
     </tr> 
    </table> 
    <form action="firstServlet" method="post"> 
     <input type="text" id="text1"> 
     <input type="submit" id="btn"> 
    </form> 
    <form action="secondServlet" method="post"> 
     <input type="text" id="text2"> 
     <input type="submit" id="btn"> 
    </form> 
</body> 
</html> 

firstServlet

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class firstServlet 
*/ 
@WebServlet("/firstServlet") 
public class firstServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public firstServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     response.getWriter().append("Served at: ").append(request.getContextPath()); 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     request.setAttribute("data", "Here's my data"); 
     request.getRequestDispatcher("index.jsp").forward(request, response); 
     //doGet(request, response); 
    } 

} 

secondServlet

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class secondServlet 
*/ 
@WebServlet("/secondServlet") 
public class secondServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public secondServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     response.getWriter().append("Served at: ").append(request.getContextPath()); 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String s = (String) request.getAttribute("data"); 
     request.setAttribute("data", s); 
     request.getRequestDispatcher("index.jsp").forward(request, response); 
     //doGet(request, response); 
    } 

} 

回答

0

使用HttpSession對象很容易傳遞數據。

在你的第一個Servlet的doPost方法,你就會有這樣的事情:

request.getSession().setAttribute("DATA", "Here's my data"); 

而在第二個servlet可以檢索你的數據是這樣的:

String myData = (String)request.getSession().getAttribute("DATA"); 

從現在開始,這個數據屬性將只要會話有效,就保留在用戶的會話中。您可以使用從會議中刪除屬性:

session.removeAttribute("DATA"); //OR request.getSession().removeAttribute("DATA"); 
+0

它的工作原理謝謝:d –

+0

@OscarFlores不要忘記,如果答案可以幫助你,你可以給予好評,並接受它,以便其他用戶能夠更容易地發現有益的答案 – MaVRoSCy