2017-08-31 1 views
0
// web.xml  
<?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
      version="3.1"> 

     <servlet> 
      <servlet-name>welcome</servlet-name> 
      <servlet-class>com.rippleworks.WelcomeServlet</servlet-class> 
     </servlet> 

     <servlet-mapping> 
      <servlet-name>welcome</servlet-name> 
      <url-pattern>/welcome</url-pattern> 
     </servlet-mapping> 
    </web-app> 

// WelcomeServlet.javaÄrger läuft Servlet Anwendung in IntelliJ Community Edition mit Tomcatbediener 8,5

package com.rippleworks; 

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

public class WelcomeServlet extends HttpServlet { 
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     super.doGet(req, resp); 
     PrintStream out = new PrintStream(resp.getOutputStream()); 
     out.println("Hello students!"); 
    } 
} 

// index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
<head> 
    <title>Title</title> 
</head> 
<body> 
    <h1>HEllo world!</h1> 
</body> 
</html> 

Ich habe konfiguriert Intellij meinem lokalen verwenden Tomcat Installation. Wenn ich mein Projekt bereitstellen, scheint nur index.jsp zu funktionieren. Eine HTTP-Anfrage an den/Willkommen-Pfad gibt 405. Was mache ich falsch?

+0

Wenn Sie auf Ihre JSP zugreifen, müssen Sie einen Kontext verwenden? Das heißt, normalerweise würden Sie zu einer URL wie "http: // localhost: 8080/something /" gehen, wobei "etwas" der Webanwendungskontext ist. Sie müssen mit dem Servlet in denselben Kontext wechseln - also "http: // localhost: 8080/something/welcome". Und haben Sie überlegt, Anmerkungen zu verwenden? Sie brauchen in diesem Fall nicht einmal web.xml. – stdunbar

+0

Ist das nicht intellij konfigurierbar. Ich habe meinen Anwendungsstamm auf/festgelegt. –

Antwort

0

Es ist das super.doGet (..), das das Problem verursacht. Aus dem Quellcode für HttpServlet, ist die Standardimplementierung dieses,

public void doGet(..) { 
     String protocol = req.getProtocol(); 
     String msg = lStrings.getString("http.method_get_not_supported"); 
     if (protocol.endsWith("1.1")) { 
      resp.sendError(405, msg); 
     } else { 
      resp.sendError(400, msg); 
     } 
} 

Es ist immer mit einem Fehler reagieren werden. Der Aufruf der Super-Methode wurde entfernt und es funktioniert jetzt einwandfrei.

PS. Danke allen für die Antworten.

0

Die Servletzuordnung scheint falsch .. so etwas tun:

<servlet> 
    <servlet-name>WelcomeServlet</servlet-name> 
    <servlet-class>com.rippleworks.WelcomeServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>WelcomeServlet</servlet-name> 
    <url-pattern>/welcome</url-pattern> 
    </servlet-mapping> 

Und Ihr Servlet:

public class WelcomeServlet extends HttpServlet { 

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

    //do whatever you want here 


    //forward request to index 
    RequestDispatcher rd=req.getRequestDispatcher("index.jsp");  
    rd.forward(req,resp); 

    } 
} 

bereiten und lassen Sie mich wissen, ob es für Sie arbeitet. Denken Sie daran, Ihren Server vor dem Versuch neu zu starten.

+0

Das hat nicht funktioniert. –

Verwandte Themen