当前位置 : 主页 > 编程语言 > java >

jsp – 如何在web.xml中配置欢迎文件列表

来源:互联网 收集:自由互联 发布时间:2021-06-25
我在我的web.xml文档中有这个。我想要一个欢迎列表,所以我不需要键入主页的路径了。但每次点击我的tomcat页面中的应用程序,它显示所请求的资源不可用。 listener listener-classweb.Init
我在我的web.xml文档中有这个。我想要一个欢迎列表,所以我不需要键入主页的路径了。但每次点击我的tomcat页面中的应用程序,它显示所请求的资源不可用。

<listener>
    <listener-class>web.Init</listener-class>
</listener>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>index</servlet-name>
    <servlet-class>web.IndexServlet</servlet-class>
</servlet>

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

我的servlet为jsp页面

package web;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

public class IndexServlet extends HttpServlet
{
    private Logger logger = Logger.getLogger(this.getClass());
    private RequestDispatcher jsp;

    public void init(ServletConfig config) throws ServletException
    {
        ServletContext context = config.getServletContext();
        jsp = context.getRequestDispatcher("/WEB-INF/jsp/index.jsp");
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        logger.debug("doGet()");
        jsp.forward(req, resp); 
    }
}

为什么它仍然不起作用?我仍然需要在我的url中键入/ index …如何正确执行?

您需要将JSP文件放在/index.jsp中,而不是放在/WEB-INF/jsp/index.jsp中。这样一来,整个servlet都是超级顺畅的。

WebContent
 |-- META-INF
 |-- WEB-INF
 |    `-- web.xml
 `-- index.jsp

如果你绝对有兴趣,你需要调用这个奇怪的方式,那么你应该把它映射到一个URL模式的/index.jsp而不是/ index。您只需要更改它以从请求而不是从配置获取请求分派器,并摆脱整个init()方法。

如果你真的打算有一个“主页小程序”(因此不是一个欢迎文件 – 这有一个完全不同的目的,即当一个文件夹被请求时,这个文件夹被提供的默认文件,这不是特别的根文件夹),那么你应该在空字符串URL模式上映射servlet。

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

参见Difference between / and /* in servlet mapping url pattern。

网友评论