2009-07-11 4 views
2

Tomcat을 설치했고 테스트를 해봤습니다. 일부 .html 및 .jsp 파일을 작성한 후 서버에서 시도했습니다. 그들은 함께 올바르게 작동하는 것 같습니다. 예를 들면 : 내가 시도하고있는이 파일들은 서버에 파일을 업로드 할 수있게하고 이름을 데이터베이스 (MySQL)에 씁니다. 이 작업이 완료되면 다른 파일을 업로드 할 수있는 버튼이 있거나 데이터베이스에 저장된 파일의 이름을 참조 할 수 있습니다.서블릿 용 Tomcat 구성

서블릿을 실행해야하는 경우 문제가 발생합니다. 나는 기본적인 것을 시도하고있다 :

package HelloWorldServlet; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 

public class HelloWorldServlet extends HttpServlet { 

    public void init(ServletConfig conf) 
    throws ServletException 
    { 
    super.init(conf); 
    } 
    public void service(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException 
    { 
    res.setContentType("text/html"); 
    PrintWriter out = res.getWriter(); 

    out.println("<html>"); 
    out.println("<body>"); 
    out.println("<h1>Hello World</h1;>"); 
    out.println("</body>"); 
    out.println("</html>"); 
    } 
} 

나는 .class 파일을 얻는다. 이 파일을 webapps/HelloWord/web-inf/classes에 넣습니다.

web.xml 파일을 수정하는 방법과이 서블릿을 .html 또는 .jsp 페이지에서 호출하는 방법을 모르겠습니다.

답변

3

우선 웹 주소록 은 대문자 인 (WEB-INF)이어야합니다.

기본 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-app_2_3.dtd"> 

<web-app> 
    <servlet> 
     <!-- 
     This is arbitrary name for your servlet, 
     used in servlet-mapping below 
     --> 
     <servlet-name>HelloWorld</servlet-name> 

     <!-- Name of your servlet class --> 
     <servlet-class>HelloWorldServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>HelloWorld</servlet-name> 

     <!-- 
     Here you say location (under context) where your servlet 
     can receive requests. 
     --> 
     <url-pattern>/hello-world</url-pattern> 
    </servlet-mapping> 
</web-app> 

귀하의 web.xml이 <your-app>/WEB-INF/web.xml 경로에 저장해야합니다.

는 브라우저가 서버에 http://localhost/HelloWorld/hello-world에 액세스 할 때마다이 /hello-world에 매핑되기 때문에 지금, 당신의 서블릿 우리는, 호출 및 응용 프로그램이 HelloWorld 디렉토리에 배치되어 있기 때문에 (즉 /하여 HelloWorld 컨텍스트에 매핑).

+0

안녕하세요. 나는 네가 말한대로 모든 것을했는데, 이제는 다른 오류가 발생한다. 내가이 페이지에 코드를 붙여 넣으면 나는 첫 번째 줄을 잊어 버렸다 : "package HelloWorldServlet;" 다른 점이 있습니까? 그렇지 않다면 나는 내가 쓰고있는 에로스를 게시 할 것이다. 감사합니다 –

+1

@Charles - 패키지를 추가하면 서블릿의 정규 클래스 이름이 WEB-INF/classes/HelloWorldServlet/HelloWorldServlet.class 파일에 있어야하는 HelloWorldServlet.HelloWorldServlet으로 변경됩니다. – McDowell

+0

감사합니다! –

1

먼저 Servlet 클래스를 이름에 매핑합니다. 그런 다음 이름을 URL 패턴에 매핑합니다. URL 패턴은 하나의 경로가 될 수 있거나 될 수 있습니다처럼/경로는 "글 로빙"패턴/* 또는 같은 단지/*

뭔가 :

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="TestApp" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>Test App</display-name> 
    <servlet> 
     <servlet-name>HelloWorld</servlet-name> 
     <servlet-class>HelloWorldServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>HelloWorld</servlet-name> 
     <url-pattern>/hello</url-pattern> 
    </servlet-mapping> 
</web-app> 
관련 문제