2017-09-11 3 views
0

Ich möchte meine Informationen von Servlets zur JSP-Seite anzeigen.Servlet zu JSP-Datenanzeige

Ich versuchte viele mögliche Sache, aber es kommt als null.

Also schrieb ich Programm, das nur einen Parameter zum anzeigen hat und es ist auch null.

JSP Seite:

<%@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: -

<web-app> 
    <servlet> 
     <servlet-name>ci</servlet-name> 
     <servlet-class>control_it</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>ci</servlet-name> 
     <url-pattern>/ci1</url-pattern> 
    </servlet-mapping> 
</web-app> 

Servlets: -

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

Servlets muss eine Unterklasse von 'HttpSevlet' sein. Bitte verwenden Sie geeignete Namenskonventionen, um Ihre Klasse und andere Mitglieder zu benennen. – adatapost

+0

Erstellen Sie RequestDispatcher rd = request.getRequestDispatcher ("ur html"); –

Antwort

0

In Ihrem Servlet-Code setzen Sie ein attribute, aber in Ihrer jsp Seite Sie versuchen, eine parameter abzurufen. Parameter werden vom Client aus an den Server gesendet, Attribute sind jedoch etwas komplett serverseitig. Versuchen User Name : <% String name1 = request.getParameter("name");out.print(name1); %> mit, dies zu ändern: User Name : <%=request.getAttribute("name")%>

Update: Servlet doGet-Methode:

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 Seite:

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

Dieser Code und Konfiguration funktioniert wie ein Charme. Probieren Sie es aus. Hoffe es hilft

+0

Nein das gleiche ans kommt: Null –

+0

Überprüfen Sie das Update – ali4j

0

Ihre Logik ist rückwärts. Sie müssen zuerst das Servlet verwenden, um den Wert an Ihre JSP zu übergeben. Wenn ich auf deinen Code schaue, habe ich den Eindruck, dass du denkst, dass es umgekehrt funktioniert. Ohne die GET-Methode von Ihrem Servlet aus auszuführen, können Sie nicht auf Ihr "name" -Attribut zugreifen.

Auch "Scriptlets" (diese Dinge: <%%>) wurden gegen entmutigt seit 2010

diesen Code Versuchen Sie stattdessen:

Ihr 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);  
    } 
} 

Ihre 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> 

Jetzt können Sie Ihren Wert 2 Möglichkeiten erhalten.

  • auf den Button "GetFromServlet" in Ihrem Formular auf Ihrer JSP Mit einem Klick.

  • Oder durch Eingabe in die URL/ci1 in Ihrem Browser suchen.(Mit Ihren
    localdomain Sachen zuerst natürlich) [Hinweis: das funktioniert nur mit doGet]