gpt4 book ai didi

java - 尝试呈现 JSP 时,Spring MVC 返回 405

转载 作者:行者123 更新时间:2023-11-29 06:04:14 24 4
gpt4 key购买 nike

我最近一直在尝试使用带有 JSP 网页的 Spring MVC 为我们的 Spring 项目实现一个简单的健康检查服务。这是我第一次使用 Spring MVC,我一直在研究 this Spring MVC tutorial.问题似乎是当它试图呈现我的页面时,它返回 405,我不明白为什么。如果有人可以帮助我,我将不胜感激。

现在我的 web.xml 中有一个 servlet 和映射设置:

<servlet>
<servlet-name>health</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>health</servlet-name>
<url-pattern>/health</url-pattern>
</servlet-mapping>

我的 health-servlet.xml 配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">

<context:component-scan base-package="com.mycompany" />

<import resource="classpath*:applicationContext.xml" />

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/health/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>

我还有一个简单的 Controller 设置:

@Controller
public class HealthcheckEndpoint {
@RequestMapping(value = "/health", method = RequestMethod.GET)
public String checkHealth(ModelMap mav) {
// Some business logic
return "healthcheck";
}
}

此外,我在 WEB-INF/health/healthcheck.jsp 中有一个 .jsp 页面设置。

我已经打开了 org.springframework.web 日志记录,这些是我收到 405 响应之前的最后两行:

[2012-01-31 12:52:04,770] DEBUG - org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(236) | Forwarding to resource [/WEB-INF/health/healthcheck.jsp] in InternalResourceView 'healthcheck'
[2012-01-31 12:52:04,780] DEBUG - org.springframework.web.servlet.FrameworkServlet.processRequest(674) | Successfully completed request

更新

也在我的web.xml中定义:

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

在我的 applicationContext-resources.xml 中,我确实有 context:annotation-config 行。

注意:此健康 servlet 是对我们现有服务的补充。因此,现在我们的 web.xml 中定义了 2 个 org.springframework.web.servlet.DispatcherServlet servlet。我不知道这是否是个问题,但它似乎有效,因为我可以调试到两个端点。

最佳答案

A 405 “不允许的方法”表示服务器不支持资源(例如 GET)上使用的 HTTP 方法( POST/health 等)。你已经清楚地表明 GET受支持(在您的 Controller 中),所以我猜您是在使用错误的 HTTP 方法访问您的 URL(可能是 POST?)。


编辑:所以你正在做一个 GET .

在进一步检查您的配置后,我相信您需要一个 <context:annotation-config/>告诉 Spring 处理注释的行(就像在你的 Controller 上)允许它知道你的 GET支持。也许试试看?

关于java - 尝试呈现 JSP 时,Spring MVC 返回 405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9085311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com