2016-08-10 112 views
1

我将servlet配置为web.xml中的默认servlet。对servlet映射感到困惑

<servlet-mapping> 
    <servlet-name>myServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

当我请求JSP像请求 http://localhost:8080/abc.jsp,我得到正确的HTML内容的正确反应,并且servlet没有服务于这个请求。

但是,当我要求HTML如请求 http://localhost:8080/abc.html,我无法得到abc.html文件,并且我的servlet的service()方法被调用。

为什么servlet容器会这样操作?

如果我这样配置我的servlet,是否意味着我必须在我的servlet中为静态文件提供请求?

更新

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 
    <display-name>Servlet test</display-name> 

    <servlet> 
     <servlet-name>myServlet</servlet-name> 
     <servlet-class>com.test.MyServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

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

MyServlet.java

package com.test; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

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

public class MyServlet extends HttpServlet { 

    private static Logger LOG = LoggerFactory.getLogger(MyServlet.class); 

    @Override 
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     super.service(req, resp); 
     LOG.info("Served"); 
    } 
} 
+0

你能在你的Servlet类共享代码呢? –

+0

请同时分享您的web.xml – jr593

回答