如何配置在web.xml欢迎文件列表(How to configure welcome file l

2019-07-19 03:13发布

我有这个我的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>

我的JSP页面的servlet

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); 
    }
}

为什么它仍然没有工作?我还需要在我的网址键入/指数...如何正确地做到这一点?

Answer 1:

你需要把JSP文件中/index.jsp而不是在/WEB-INF/jsp/index.jsp 。 这样,整个的servlet的方式superflous。

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

如果你是绝对肯定的,你需要调用一个servlet这种奇怪的方式,那么你应该映射它的URL模式/index.jsp而非/index 。 你只需要改变它从获得请求调度request ,而不是从config和摆脱整体init()方法。

如果你确实要拥有“主页的servlet”(因此不是一个受欢迎的文件-它有一个完全不同的目的,即所请求的文件夹时,其前人的精力来提供的默认文件,因此没有特别的根文件夹),那么你应该在映射空字符串URL模式的servlet。

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

另请参见/ *在servlet映射URL模式之间的差异/和 。



Answer 2:

我猜你要的是你的servlet指数作为欢迎页面,那么更改为:

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

因此,该指数的servlet将被使用。 注意,你需要一个Servlet规范2.4容器能够做到这一点。

还要注意,@BalusC得到我的投票,对自己的索引的servlet是多余的。



Answer 3:

我看到这是一个很好的解决方案计算器链接可以使用空字符串URL模式“”帮助defulat的servlet处理问题的读者:

@WebServlet("")

要么

<servlet-mapping>
    <servlet-name>yourHomeServlet</servlet-name>
    <url-pattern></url-pattern> <!-- Yes, empty string! -->
</servlet-mapping>


Answer 4:

它基于从文件,您试图访问这些文件。

如果是在同一个文件夹中,你的工作项目文件,那么你可以只使用文件名。 没有必要路径。

如果是在其他文件夹这是你的工作项目文件相同的父文件夹下,那么你可以在以下/javascript/sample.js使用位置像

在您的例子,如果你想从你的HTML文件访问您的js文件,你可以使用下面的位置

../javascript/sample.js

前缀../将进入文件的父文件夹(文件夹向上之旅)



文章来源: How to configure welcome file list in web.xml