我的 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);
}
}
为什么它仍然不起作用?我仍然需要在我的网址中输入 /index...如何正确执行此操作?
您需要将JSP文件放入/index.jsp
而不是在/WEB-INF/jsp/index.jsp
。这样一来,整个 servlet 就显得多余了。
WebContent
|-- META-INF
|-- WEB-INF
| `-- web.xml
`-- index.jsp
如果您绝对确定需要以这种奇怪的方式调用 servlet,那么您应该将其映射到以下 URL 模式:/index.jsp
代替/index
。您只需要更改它即可获取请求调度程序request
而不是来自config
并摆脱整个init()
method.
如果您确实想要一个“主页 servlet”(因此not欢迎文件——其目的完全不同;即默认文件,当folder正在被请求,因此不是特定的根文件夹),那么您应该将 servlet 映射到空字符串 URL 模式。
<servlet-mapping>
<servlet-name>index</servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
也可以看看servlet 映射 url 模式中 / 和 /* 之间的区别.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)