java - Apache Tomcat 上的应用程序抛出 HTTP 405 错误

标签 java html tomcat

我有 2 个类似的 Web 表单可以将数据发布到我的 Java 应用程序。 两个单独的函数处理这个 POST 请求,但它们完全相同。 但是,一种形式 POST 成功,而另一种形式不成功并抛出 HTTP 405 错误。

包括HTML表单代码:

 <form action="BiApi/a/b" method="post" id="formquery" name= "makeQuery">
    <!----Text Boxes---->
    <input type="submit" value="Query" onclick="if(this.value=='Query'){ this.value='Wait processing query...'; this.style.color='#000';}"/>
 </form>

处理请求的 Java 函数

@POST
@Path("/b")
@Produces({"text/csv"})
public String b(
        @FormParam("reportType") int reportType,
        @FormParam("preStart") String preStart,
        @FormParam("preEnd") String preEnd
        ){
    try {

        CampaignQueryDto campaignQueryDto = new CampaignQueryDto();
        campaignQueryDto.setReportType(reportType);
        campaignQueryDto.setPreEnd(preEnd);
        campaignQueryDto.setPreStart(preStart);

        if (campaignQueryDto.isAuthorized()) {
            return csvForDto(campaignDao.xyz(campaignQueryDto));
        } else {
            throw new UnauthorizedException();
        }
    } catch (SQLException ex) {
        throw new WebApplicationException(404);
    }
}


/*..Method 2 ..*/

@POST
@Path("/bUK")
@Produces({"text/csv"})
public String bUK(
        @FormParam("reportType") int reportType,
        @FormParam("preStart") String preStart,
        @FormParam("preEnd") String preEnd){
    try {

        CampaignQueryDto campaignQueryDto = new CampaignQueryDto();
        campaignQueryDto.setReportType(reportType);
        campaignQueryDto.setPreEnd(preEnd);
        campaignQueryDto.setPreStart(preStart);
        if (campaignQueryDto.isAuthorized()) {
               return csvForDto(campaignDao.xyzUK(campaignQueryDto));
        } else {
            throw new UnauthorizedException();
        }
    } catch (SQLException ex) {
        throw new WebApplicationException(404);
    }
}

我的 web.xml

<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>abc</display-name>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.argusinformation.rest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/BiApi/*</url-pattern>
</servlet-mapping>

两种形式的代码唯一不同的是 Java 函数的名称。即,如果一个是 b,那么另一个是 bUK。

一个返回结果,另一个在提交表单后给出 405 错误。

有什么可能的解决方案吗?

谢谢!

最佳答案

确切地说,正如 SachinSarawgi 提到的那样 - 您能否至少向我们提供您使用过的两种方法(根据整体版权政策和/或应用程序源代码的保密性等,不允许您提供其完整版本)?

编辑。您似乎忘记将 campaignQueryDto.setReportType(reportType); 行添加到第一个方法的代码中。修复它应该会有所帮助。

关于java - Apache Tomcat 上的应用程序抛出 HTTP 405 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42213531/

相关文章:

html - 网站在 ie78 下不工作

Java Web 应用程序 - 下载的文件不可读

java - 从 swagger.json 中排除 jax-rs 服务的方法

java - 指定具有多个上下文的 Camel 上下文关闭顺序

java - 如何理解java.lang.management.MemoryMXBean和-Xms?

html - 你如何制作一个动画,其中 flex 盒子中的 2 个元素将交换位置

java - 无法使用 jconsole 连接到 JMX 远程

javascript - 表头固定的JS代码TH宽度必须等于TD宽度

java - 为什么我的 POST 方法没有被调用?包括代码

java - 我应该为我创建并想存储在远程 tomcat 服务器中的文件(最好是 json)提供什么文件路径?