- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个上传图像的index.jsp页面。提交后,它会转到 servlet Upload.java。在 servlet 中,我检查图像的扩展名(“jpg”、“png”等)并转发到新的 jsp 页面,否则它会显示错误消息并包含相同的 index.jsp 页面。
我的 servlet 是一个名为“servlets”的包。
如果我选择一个图像,那么它就可以正常工作。但是,如果我选择图像以外的任何文件,那么它会按预期显示 index.jsp 页面的错误。到目前为止它工作正常,但如果我从这里上传任何文件甚至图像,服务器就会提示。
以下是我如何将 index.jsp 页面包含在 UploadServlet.java servlet 中。
out.println("This type of file is not allowed. Please select an image.");
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/index.jsp");
dispatcher.include(request, response);
这是我第二次尝试上传图像时服务器发出的错误。
HTTP Status 404 - /UploadImage/servlets/servlets/UploadServlet
<小时/>
type Status report
message /UploadImage/servlets/servlets/UploadServlet
description The requested resource (/CropImage/servlets/servlets/UploadServlet) is not available.
<小时/>
Apache Tomcat/6.0.13
它将 servlet 的包名称附加到 url 中。
如何解决这个问题?
最佳答案
显然您在 <form>
中使用了相对操作 URL .
<form action="servlets/UploadServlet" ...>
当您打开index.jsp
时,请求URL为
当您提交表单时,操作 URL 是相对于当前文件夹的,因此请求 URL 将是
当您再次提交表单时,表单仍然相对于当前文件夹,因此您最终会进入
http://localhost:8080/UploadImage/servlets/servlets/UploadServlet
您需要将其修复为与域相关的 URL,以前导斜杠开头。
<form action="/UploadImage/servlets/UploadServlet" ...>
这样,URL 将相对于域根进行解析。您还可以通过 ${pageContext.request.contextPath}
动态解析上下文路径:
<form action="${pageContext.request.contextPath}/servlets/UploadServlet" ...>
关于java - RequestDispatcher.include(...) 附加 servlet 的包名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7357427/
我观察到虽然 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
我是一名优秀的程序员,十分优秀!