- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
ServletContext#getRequestDispatcher() 的 API说:
This method returns null if the ServletContext cannot return a RequestDispatcher.
和
Returns: a RequestDispatcher object that acts as a wrapper for the resource at the specified path, or null if the ServletContext cannot return a RequestDispatcher
为什么 ServletContext 不能返回 RequestDispatcher?起初我认为如果传递了无效路径但不返回 null,则会在浏览器上导致 404。
我在调用 forward() 方法之前检查是否为 null,在日志中我偶尔会看到 RequestDispatcher 为 null,但我不知道为什么,也不知道如何复制它。
谢谢
更新
正如 Fazal 建议的那样,我尝试为“http://www.google.com/”创建一个 RequestDispatcher,看看会发生什么。这导致了 IllegalArgumentException
java.lang.IllegalArgumentException: Path http://www.google.com/ does not start with a "/" character
异常是在我的 try/catch block 中捕获的,所以我没有机会检查 RequestDispatcher 是否为 null 或调用 forward() 方法。
那么 ServletContext#getRequestDispatcher() 方法必须有另一种方法来返回 null 而不抛出异常吗?
最佳答案
Tomcat 为当前上下文之外的路径返回 null
,例如 /../foo
(但 Jetty 不会,因此它是特定于实现的)。
关于java - ServletContext 何时返回空的 RequestDispatcher?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3815028/
我观察到虽然 RequestDispatcher.forward(request, response) 可以抛出 IllegalStateException(如果响应已提交),但 RequestDis
我已经阅读了很多类似的问题并尝试了所有建议的方法来解决问题,但是没有成功。现在我真的不知道如何处理这个 (localhost:8080/testWebApp/home): HTTP Status 50
使用 servletContext 而不是使用 request 来获取 requestDispatcher 有什么好处? servletContext.getRequestDispatcher(dis
处理RequestDispatcher时和资源路径,是主要基于 构建的路径元素?即使资源位于不同的包中 例如:我在 servlet 下定义了: /handlers/FrontHandler 以及
当我们使用请求调度程序方法 forward 将请求从一个 servlet 转发到另一个 servlet 时,以便另一个 servlet 生成响应,或者当我们希望另一个 servlet 的响应返回到一个
String fn=request.getParameter("fn"); request.setAttribute("eno",eno); RequestDispatcher rd = reques
我有这个搜索表单。 String search = request.getParameter("search"); if (search != null) {
我在 2 个桌面上安装了 2 个 apache tomee。第一个在 Windows 7 上,第二个在 Windows 8 上。当我部署我的应用程序(带有业务组件)时,发生了一些奇怪的事情。 我在我的
在 servlet 中,我们可以使用 requestdispatcher,它将从 servlet 转发到 servlet 或 html 文件。但是我在其余服务中尝试了这个 requestdispatc
我在学习 RequestDispatcher 时正在编写一些基本代码。我知道当调用 rd.forward() 时,控制(和响应处理)被转发到路径中命名的资源——在本例中是另一个 servlet。但是,
我正在尝试创建一个 HttpServlet,它将所有传入请求按原样转发到在不同域上运行的另一个 serlvet。 如何做到这一点? RequestDispatcher 的 forward() 仅在同一
如何在同一工作空间中将 RequestDispatcher 用于外部网络应用 在第一个网络应用程序中,我是这样使用它的 RequestDispatcher rd =request.getReques
在变量 search_for 中,我得到了我正在搜索的值的字符串值。但我无法通过 RequestDispatcher 将其传递给 jsp。我做错了什么? RequestDispatcher rd =
我正在使用 JAVA Servlet 开发网络应用程序。我正在尝试制作一个登录表单,我只想让用户设置用户名和密码,如果有效,则打开 mainPage.html代码运行时没有错误或异常,但是当此函数运行
我在 jsp 中遇到重定向问题,页面仍然存在并且不会抛出任何错误。 当我直接在 login.jsp 中编写脚本时,我可以进行重定向,例如 .......... 但是,当我将文件分成三个并包含它时
我正在使用 /* 将所有请求映射到一个 sevlet,我在其中完成所有身份验证工作。但我想跳过一些静态内容(如 css 文件)。所以我尝试从该 sevlet 到资源文件所在的位置 if(isResou
使用 RequestDispatcher 的主要目的是什么,例如当它在 Filter 中执行时,如下例所示: public void doFilter(ServletRequest request,
我有以下代码: RequestDispatcher dispatcher = request.getRequestDispatcher(viewName); // while viewName is
我正在阅读的所有在线引用资料和 head first JSP&Servlet 书都说明了 RequestDispatcher 和 Redirect(即 resoponse.sendRedirect()
如果我有一个 servlet,我可以毫无问题地转发到 WebContent 文件夹中的 jsp: request.getRequestDispatcher("page.jsp").forward(re
我是一名优秀的程序员,十分优秀!