2013-04-25 2 views
2
public class RoarHistoryUpdate extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws IOException, ServletException{ 
     super.doGet(request, response); 
     System.out.println("do Get"); 
     response.setContentType("text/html"); 
     response.getOutputStream().print("Success"); 
    } 
} 

이것은 내 서블릿입니다. 그리고이 같은 web.xml 파일에 등록을 한있다 : 나는 URL http://localhost:8080/Roary-JSP/Roary/UpdateServlet에 갈 때HTTP 메소드 GET은 doGet을 실행하지만이 URL에서는 지원되지 않습니다.

<servlet> 
     <display-name>RoarHistoryUpdateServlet</display-name> 
     <servlet-name>RoarHistoryUpdateServlet</servlet-name> 
     <servlet-class>de.ulm.uni.vs.avid.roary.servlets.RoarHistoryUpdate</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>RoarHistoryUpdateServlet</servlet-name> 
     <url-pattern>/Roary/UpdateServlet</url-pattern> 
    </servlet-mapping> 

그것은 HTTP Status 405 - HTTP method GET is not supported by this URL

재미있는 것은 내가 내 콘솔에 로그인 한 do Get을 얻을 말한다. 실제로는 doGet -method를 발견했습니다. 당신이 당신의 서블릿의 doGet() 방법에 super.doGet(request, response);을 수행 할 때, 당신이 실제로 HttpServlet 클래스의 doget()를 호출하기 때문에

는 내가 글래스 피쉬 서버 오픈 소스 버전 3.1.2.2

답변

8

을 사용하고 있습니다. 그 방법의 Tomcat 7 구현 (수 있습니다 비슷한 구현이 Glassfish 존재) 다음과 같습니다 :

protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException 
{ 
    String protocol = req.getProtocol(); 
    String msg = lStrings.getString("http.method_get_not_supported"); 
    if (protocol.endsWith("1.1")) { 
     resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg); 
    } else { 
     resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); 
    } 
} 
+0

네, 그게 전부입니다. 감사! –

+0

답으로 표시해주세요. 도움이됩니다. –

2

내 생각 엔 그것 때문에 super.doGet()를 호출하는 점이다. HttpServlet의 소스 코드를 확인하면 응답에이 상태 코드가 설정되어있는 것을 볼 수 있습니다. 그러니 수퍼 전화를 끊으십시오. 필요하지 않습니다.

관련 문제