2017-09-11 78 views
0

我想將我的信息從servlet顯示到JSP頁面。Servlet到JSP數據顯示

我嘗試了很多可能的事情,但它是空的。

所以我寫了只有一個參數顯示的程序,它也是空的。

JSP頁面:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <form action="ci1" method="get"> 
      User Name : <% String name1 = request.getParameter("name"); 
      out.print(name1); %> 

     </form> 
</body> 
</html> 

web.xml中: -

​​

的Servlet: -

public class control_it { 
    protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) 
        throws IOException, ServletException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 

     String name = "Display the name"; 
     request.setAttribute("name", name); 
     request.getRequestDispatcher("try_it.jsp").forward(request, response); 
    } 
} 
+0

Servlet的必須是子類的'HttpSevlet'。請使用適當的命名約定來命名您的班級和其他成員。 – adatapost

+0

創建RequestDispatcher rd = request.getRequestDispatcher(「ur html」); –

回答

0

在servlet代碼設置一個attribute,但在你的jsp頁面您正試圖檢索parameter。 參數從客戶端發送到服務器,但屬性完全是服務器端。 嘗試改變 User Name : <% String name1 = request.getParameter("name");out.print(name1); %> 本: User Name : <%=request.getAttribute("name")%>

更新: servlet的doGet方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
    String name = "essy"; 
    request.setAttribute("name", name); 
    request.getRequestDispatcher("index.jsp").forward(request, response); 
} 

的web.xml:

<servlet> 
    <servlet-name>testservlet</servlet-name> 
    <servlet-class>TestServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>testservlet</servlet-name> 
    <url-pattern>/testservlet</url-pattern> 
</servlet-mapping> 

jsp頁面:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<html> 
<body> 
<h1>test</h1> 
<h2><%=request.getAttribute("name")%></h2> 
</body> 
</html> 

這段代碼和配置就像一個魅力。 試一試。 希望它有幫助

+0

與此不同的是:NULL –

+0

檢查更新 – ali4j

0

你的邏輯是倒退的。您必須首先使用該servlet將值傳遞給您的JSP。看着你的代碼,我得到的印象是,你似乎認爲它的運作方式相反。不從您的servlet執行GET方法,您將無法訪問您的「名稱」屬性。

此外, 「腳本小程序」(這些東西:<%%>)已經被勸阻針對2010年以來

試試這個代碼,而不是:

你的servlet(control_it):

public class control_it extends HttpServlet{ 
private static final long serialVersionUID = 1L; 

public control_it() { 
    super(); 
} 

    protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) 
        throws IOException, ServletException { 

     String name = "Display the name"; 
     request.setAttribute("name",name); 

     RequestDispatcher rd=request.getRequestDispatcher("try_it.jsp"); 
     rd.forward(request,response);  
    } 
} 

你的JSP(try_it):

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <form action="ci1" method="get"> 
      User Name : ${name} 
<input type="submit" value="GetFromServlet"/> 
     </form> 
</body> 
</html> 

現在,您可以通過2種方式獲得價值。

  • 通過表單點擊按鈕 「GetFromServlet」 你的JSP。

  • 或者,通過在瀏覽器搜索中輸入URL/ci1。(您
    LOCALDOMAIN東西首先當然)[注:與的doGet這隻能]