我在我的 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);
}
}
为什么它仍然不工作?我仍然需要在我的 url 中键入 / index...如何正确地做到这一点?
您需要将 JSP 文件放在/index.jsp
中,而不是/WEB-INF/jsp/index.jsp
中。
WebContent
|-- META-INF
|-- WEB-INF
| `-- web.xml
`-- index.jsp
如果您确信需要以这种奇怪的方式调用 servlet,那么您应该将其映射到/index.jsp
而不是/index
的 URL 模式上。您只需要更改它以从request
而不是从config
获取请求调度程序,并摆脱整个init()
方法。
如果你真的打算有一个“主页 servlet”(因此不是一个欢迎文件-它有一个完全不同的目的;即默认文件,当文件夹被请求时,它将被提供,因此不是特定的根文件夹),那么你应该在空字符串 URL 模式上映射 servlet。
<servlet-mapping>
<servlet-name>index</servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
另请参见Difference between / and /* in servlet mapping url pattern。
我想你想要的是你的索引 servlet 作为欢迎页面,所以更改为:
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
注意,您需要一个 servlet spec 2.4 容器才能做到这一点。
还要注意,@ BalusC 得到我的投票,因为你的索引 servlet 本身是多余的。
我在这个stackoverflow link中看到了一个很好的解决方案,它可以通过使用空字符串 URL 模式“”来帮助 defulat servlet 处理问题的读者:
@WebServlet("")
或
<servlet-mapping>
<servlet-name>yourHomeServlet</servlet-name>
<url-pattern></url-pattern> <!-- Yes, empty string! -->
</servlet-mapping>
这是我的方式来设置 Servlet 作为欢迎页面。
我分享对谁的关心。
web.xml
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Demo</servlet-name>
<servlet-class>servlet.Demo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo</servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
Servlet 类
@WebServlet(name = "/demo")
public class Demo extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
RequestDispatcher rd = req.getRequestDispatcher("index.jsp");
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(60条)