2010-11-22 3 views
1

나는 첫 번째 서블릿을 j2ee (Tomcat 7.0)와 함께 Eclipse에서 실행하려고하고 있는데, 내가 잘못하고있는 것을 이해할 수 없다. 내 프로젝트 -> Run As-> Run on Server를 마우스 오른쪽 단추로 클릭하면 index.html 파일이 브라우저에 나타나지만 "Continue"를 누르면 다음 메시지가 나에게 표시됩니다.첫 번째 서블릿을 만드는 방법은 무엇입니까?

HTTP 상태 404 -/PDPJ_L5/안녕하세요 - 요청 된 리소스 (/ PDPJ_L5/안녕하세요)는 사용할 수 없습니다 입니다.

문제가 form 태그의 작업 속성 또는 웹 설명자 파일에있는 것으로 의심됩니다. 제가 잘못하고있는 일과 프로젝트를 수리하는 방법을 설명해주십시오. 감사. 여기

내 프로젝트 (PDPJ_L5) 디렉토리 구조는 :

PDPJ_L5

  • JAX-WS 웹 서비스
  • 배포 설명자 : PDPJ_L5
  • 자바 자료 : SRC 이는 서블릿을 포함 Hello.java 서블릿과 패키지
  • 자바 스크립트 리소스
  • lib 디렉토리 폴더, 내 index.html을하고 web.xml을

index.html을 내용으로

  • 빌드
  • META-INF
  • WEB-INF : 여기

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>Some title</title> 
    </head> 
    <body> 
    <H1 ALIGN="CENTER">Choose your option:</H1> 
    <form action="http://localhost:8080/PDPJ_L5/hello" method="GET"> 
        <center> 
         <INPUT TYPE="RADIO" NAME="group" VALUE="one">ONE<BR> 
         <INPUT TYPE="RADIO" NAME="group" VALUE="two">TWO<BR><BR> 
         <INPUT TYPE="SUBMIT" VALUE="Continue"> 
        </center> 
    </form> 
    </body> 
    </html> 
    

    인 Hello.java 서블릿 :

    package servlets; 
    
    import java.io.IOException; 
    import java.io.PrintWriter; 
    
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
    
    /** 
    * Servlet implementation class Hello 
    */ 
    public class Hello extends HttpServlet 
    { 
        private static final long serialVersionUID = 1L; 
    
        /** 
        * @see HttpServlet#HttpServlet() 
        */ 
        public Hello() 
        { 
         super(); 
        } 
    
        /** 
        * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
        */ 
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        { 
         response.setContentType("text/html"); 
    
         PrintWriter out = response.getWriter(); 
         out.println("<HEAD><TITLE>Success</HEAD><BODY>"); 
         out.println("<h1> It works </h1>"); 
         out.println("</BODY>"); 
         out.close(); 
        } 
    
        /** 
        * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
        */ 
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        { 
         doGet(request, response); 
        } 
    
    } 
    

    그리고 web.xml 파일 :

    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-application_2_3.dtd"> 
    
    <web-app> 
        <servlet> 
         <servlet-name>Hello</servlet-name> 
         <servlet-class>servlets.Hello</servlet-class> 
        </servlet> 
    
        <servlet-mapping> 
         <servlet-name>Hello</servlet-name> 
         <url-pattern>/hello</url-pattern> 
        </servlet-mapping> 
    </web-app>  
    
  • +0

    기본 web.xml 이클립스가 Servlet 2.3 * http : //java.sun.com/dtd/web-application_2_3.dtd*를 가리키면 놀랍습니다. 내 웹은 ~ web-app_2_5.xsd * – JoseK

    +0

    @ Jose : 1998 년 이후 사용되지 않았던 '

    '태그의 존재와 '90 년대 스타일의 대문자 HTML 태그의 사용으로 입증 된 오래된 튜토리얼/책을 읽고있는 큰 기회. Tomcat 7은 Servlet 3.0 가능 컨테이너이므로 Servlet 3.0을 사용합니다. – BalusC

    답변

    0

    내 문제의 해결책을 찾았습니다.

    jar 명령으로 war 아카이브를 빌드하고 tomcat의 webapps 폴더에 넣으면이 방법으로 작동합니다.

    남은 유일한 문제는 서버에서 실행하면 이클립스에서 작동하지 않지만이 방법으로 작동한다는 것입니다.

    도움 주셔서 감사합니다.

    0

    색인 페이지가로드되면 실제로 어떤 포트가 사용됩니까? 귀하의 하이퍼 링크는 8080으로 바뀌지 만 "서버에서 실행"이 임의의 포트에 바인드 할 임시 서버를 시작하고 있다고 생각합니다.

    +0

    인덱스 페이지가로드되면 브라우저의 주소는 http : // localhost : 8080/PDPJ_L5 /이므로 8080 포트입니다. – DaJackal

    0

    Tomcat 로그 파일은 무엇을 말하는가 (또는 콘솔 Eclipse에서 Tomcat 인스턴스를 실행 중인지)? 이것은 일반적으로 서블릿을 초기화하거나 요청을 처리 할 때 일부 Exception이 발생했을 때 발생합니다.

    +0

    정보 만 있어도 경고 또는 예외는 없습니다 – DaJackal

    +0

    자세한 내용 필요; 어떻게 Tomcat을 시작하니? Eclipse 내에서 또는 .bat 파일을 실행하여? 어떤 로그 파일을 보았습니까? –

    +0

    서버에서 실행을 사용하여 Eclipse에서 Tomcat Server를 시작했고 Eclipse에서 콘솔보기를 보았습니다. – DaJackal

    0

    마우스 오른쪽 버튼> 프로젝트 빌드를 선택했다고 가정합니다.

    (Windows 탐색기의) Eclipse 작업 공간에서 실제 클래스 파일 PDPJ_L5/build/classes/servlets/Hello.class을 찾을 수 있습니까? 그것이 존재합니까?

    +0

    예, 존재합니다. – DaJackal