2010-03-03 4 views

Antwort

32

Sie benötigen eine doGet-Methode haben, wie:

public void doGet(HttpServletRequest request, 
     HttpServletResponse response) 
throws IOException, ServletException 
{ 
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 

    out.println("<html>"); 
    out.println("<head>"); 
    out.println("<title>Hola</title>"); 
    out.println("</head>"); 
    out.println("<body bgcolor=\"white\">"); 
    out.println("</body>"); 
    out.println("</html>"); 
} 

Sie this Link für eine einfache Hallo Welt Servlet

+12

Es wird nicht empfohlen, auf diese Weise HTML von einem Servlet zu erzeugen. Das ist ein Vintage-Idiom von 1998. Eine bessere Lösung wäre die Verwendung einer JSP. – duffymo

+2

Oder verwenden Sie einige Framework/Tools wie Dojo, GWT etc. und halten Sie die Client-Seite html komplett getrennt von serverseitigem Code. – saugata

+1

@duffymo: Aber manchmal, in bestimmten Fällen möchte ich laufende HTML-Antwort von Servlet generieren. Nicht jeder ist für MVC geeignet. –

93

Sie normalerweise vorwärts die Anforderung an eine JSP für die Anzeige sehen. JSP ist eine View-Technologie, die eine Vorlage zum Schreiben von HTML/CSS/JS in einfacher Form bietet und die Möglichkeit bietet, mit Hilfe von Taglibs und EL mit Backend-Java-Code/Variablen zu interagieren. Sie können den Seitenfluss mit Taglibs wie JSTL steuern. Sie können beliebige Backend-Daten als Attribut in einem beliebigen Anforderungs-, Sitzungs- oder Anwendungsbereich festlegen und EL (die ${} Dinge) in JSP verwenden, um auf diese zuzugreifen/sie anzuzeigen.

Kickoff Beispiel:

@WebServlet("/hello") 
public class HelloWorldServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String message = "Hello World"; 
     request.setAttribute("message", message); // This will be available as ${message} 
     request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response); 
    } 

} 

Und /WEB-INF/hello.jsp wie folgt aussehen:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>SO question 2370960</title> 
    </head> 
    <body> 
     <p>Message: ${message}</p> 
    </body> 
</html> 

Wenn http://localhost:8080/contextpath/hello Öffnen wird diese

Message: Hello World

im Browser anzeigen.

Dies hält den Java-Code frei von HTML-Unordnung und verbessert die Wartbarkeit erheblich. Um mit Servlets mehr zu lernen und zu üben, fahren Sie mit den folgenden Links fort.

Durchsuchen Sie auch the "Frequent" tab of all questions tagged [servlets], um häufig gestellte Fragen zu finden.

+2

Ist das immer noch ein gültiger Ansatz?Ich höre immer wieder, dass unser Hauptarchitekt sagt, dass wir JSP überhaupt nicht verwenden sollen, aber dann frage ich mich, wie ich den gesamten HTML-Code erstellen soll. Erstellen Sie jedes Element einzeln nacheinander? Das dauert wahrscheinlich ewig. – Timo

+2

@Timo: entweder haben Sie Ihren Architekten falsch verstanden, oder Ihr Architekt muss http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files lesen, http: // stackoverflow. com/questions/2095397/what-is-the-difference-zwischen-jsf-servlet-and-jsp und http://stackoverflow.com/tags/servlets/info Wenn immer noch nicht überzeugt, Feuer selbst und suchen Sie nach einem anderen Projekt. – BalusC

+0

dies .... das sollte als beste Antwort markiert werden! –

Verwandte Themen