jsp - 从索引 JSP 调用实用程序 JSP 中的 servlet,405 错误找不到 servlet

标签 jsp servlets

我对此主题进行了很多搜索,但似乎没有任何问题/答案能够提供我正在寻找的内容。如果答案在某个地方流传,我深表歉意。

我拥有的是我编写的一系列实用 JSP,我通过索引类型 JSP 访问它们,其中我有一个按钮表单可以转到相应的 JSP。每一个看起来都是这样的:

<form method="POST" action="delete.jsp">
<input type="submit" value="Delete" name="B2">
</form>

在我的delete.jsp中,我有另一个表单,一旦按下按钮,它就会调用我的servlet,如下所示:

<form method="post" action="ModelServlet">
Select file to delete: <input type="file" name="dataFile" id="fileChooser" /><br />
<br /> <input type="submit" name="DELETE" value="Delete" />
</form>

当我按此“删除”按钮时,收到“HTTP 状态 405 - 此 URL 不支持 HTTP 方法 POST”错误。这让我相信存在某种映射错误或其他原因,阻止实用程序 JSP 找到我的 servlet。对此有什么想法吗?我的 servlet 代码如下:

它正在调用我的 servlet:

package com.model;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;

public class ModelServlet extends HttpServlet {
        protected void init(){}

    protected void doPost(Model ourModel, HttpServletRequest   request, HttpServletResponse response) throws ServletException, IOException {
        //check for which case we have: upload, delete, move, or copy
        if (ServletFileUpload.isMultipartContent(request)){
        //do upload stuff
        performUpload(request,response);            
    }
    else if (request.getParameter("DELETE") != null){
        //do delete stuff
        performDelete(request,response);
    }
    else if (request.getParameter("MOVE") != null){
        //do move stuff
        performMove(request,response);

    }
    else if (request.getParameter("COPY")!= null){
        //do copy stuff
        performCopy(request,response);
    }

}

为其下面的函数定义方法。

干杯, 乔

最佳答案

您没有正确解释该错误。它找到了 servlet,但没有找到所需的方法。当您使用<form method="post">时,它显然正在寻找 doPost()方法。因此,您只需确保已提供一个 ( and that you don't incorrectly delegate to super.doPost() )。利用@Override方法上的注释,以确保您确实覆盖了正确的方法,因此没有拼写错误的方法签名,从而使其成为一个重载(但未实际使用)的方法。

如果它没有找到整个 servlet,您就会收到 404 错误。


更新:根据您的问题更新,您的 servlet 并未覆盖 the real doPost() method根本不。有一个未知的第三个参数,这使其实际上成为 servlet API 未指定的重载方法。

protected void doPost(Model ourModel, HttpServletRequest   request, HttpServletResponse response) throws ServletException, IOException {

如果你输入 @Override在方法上添加注释,您会发现它根本无法编译,因为 Model ourModel 无效。争论。相应地修复它:

@Override
protected void doPost(HttpServletRequest  request, HttpServletResponse response) throws ServletException, IOException {

关于jsp - 从索引 JSP 调用实用程序 JSP 中的 servlet,405 错误找不到 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14694422/

相关文章:

java - WebSphere App Server 不编译 JSP/标签库

javascript - 两个tomcat之间的Ajax调用

java - 只允许用户下载一次

tomcat - 在 Tomcat 中从哪里看到 Servlet 的 "console output"?

Java servlet 返回 404 错误

java - Spring Boot不渲染JSP View

mysql - 使用 JSP 访问数据库

java - 无法访问 Java Servlet

java - Web 容器中的 Servlet 实例

eclipse - Servlet post 请求记录到 Eclipse 控制台