강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

harry님의 프로필 이미지
harry

작성한 질문수

jsp 프로젝트 서블릿 java파일 실행시 url 질문드려요

작성

·

313

0

이클립스 2024-03

톰캣 9.0

jdk21

사용중입니다

 

  1. http://localhost:8081/jsp_practice/AdditionServlet01

  2. http://localhost:8081/jsp_practice/WEB-INF/classes/unit01/AdditionServlet01.java

     

     

    AdditionServlet01.java를 실행시 2번 url로 찍힙니다..

404에러가 발생하여 제가 직접 크롬 url을 수정해 1번 url로 바꾸면

404가 뜨지 않고 정상적으로 화면이 출력됩니다.

제가 알기로 현재 제설정으로는 1번url 주소로 나와야 하는데 이유를 모르겠습니다.

도와주세요 ㅠㅠ


 

 

1.서블릿 파일 코드입니다.

package unit01;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

@WebServlet("/AdditionServlet01")

public class AdditionServlet01 extends HttpServlet {

private static final long serialVersionUID = 1L;

 

public AdditionServlet01() {

super();

}

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

int num1 = 20;

int num2 = 10;

int add = num1 + num2;

PrintWriter out = response.getWriter();

out.println("<html><head><title>Addition</title></head>");

out.println("<body>");

out.println(num1 + "+" + num2 + "=" + add);

out.println("</body>");

out.println("</html>");

}

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

doGet(request, response);

}

}

 

2.server.xml파일 context 태그 입니다

<Context docBase="jsp_practice" path="/jsp_practice" reloadable="true" source="org.eclipse.jst.jee.server:jsp_practice"/>

 

3.web.xml 파일 코드입니다

<servlet-mapping>

<servlet-name>default</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

harry님의 경우, 서블릿이 404 에러 없이 정상적으로 실행되기 위해서는 몇 가지 확인해야 할 사항들이 있습니다.

  1. @WebServlet 어노테이션이 올바르게 설정되어 있는지 확인하세요. harry님의 코드에 따르면, @WebServlet("/AdditionServlet01")로 서블릿을 /AdditionServlet01의 URL 패턴에 매핑했습니다. 이 설정은 올바르므로, 서블릿에 접근하기 위한 URL은 http://localhost:8081/jsp_practice/AdditionServlet01 형식이 되어야 합니다. 여기서 /jsp_practice는 애플리케이션 컨텍스트 경로입니다.

  2. server.xml 파일의 <Context> 태그가 올바르게 설정되었는지 확인하세요. docBasepath 속성이 애플리케이션의 위치와 컨텍스트 패스를 제대로 가리키고 있어야 합니다. harry님의 설정에 문제가 없다면, 해당 웹 애플리케이션은 /jsp_practice 경로로 접근이 가능해야 합니다.

  3. web.xml 파일 설정도 문제가 없는지 확인하세요. 하지만 web.xml에서의 서블릿 매핑은 @WebServlet 어노테이션으로 이미 해결된 것으로 보입니다. default 서블릿 매핑이 모든 요청을 처리하도록 설정되어 있다면, 이것이 원인일 수 있으나 일반적으로는 서블릿 어노테이션 설정이 우선시 됩니다.

404 에러가 발생하는 주된 이유는 요청된 URL과 서블릿 매핑이 정확히 일치하지 않기 때문입니다. 위의 요소들을 다시 한번 확인하시고, 특히 애플리케이션의 컨텍스트 경로(/jsp_practice)와 서블릿 매핑 경로(/AdditionServlet01)가 URL에 올바르게 반영되었는지 확인해 보시기 바랍니다.

또한, Eclipse와 같은 개발 환경에서는 프로젝트를 “Clean” 하고 서버를 다시 시작하는 것이 종종 문제를 해결하는 데 도움이 됩니다. 프로젝트가 서버에 올바르게 배포되었는지도 확인하세요.

harry님의 프로필 이미지
harry

작성한 질문수

질문하기