gpt4 book ai didi

java - 需要帮助从 web.xml spring boot 转换

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:25 34 4
gpt4 key购买 nike

我正在尝试将基于 web.xml 的 Web 应用程序转换为 spring boot,但在配置 HttpRequestHandlerServlet 时遇到问题。我的 web.xml 中有以下内容:

<servlet>
<servlet-name>webServices</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>updateServlet</servlet-name>
<servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>updateServlet</servlet-name>
<url-pattern>/update</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>webServices</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>

DispatcherServlet 不是问题:

@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer
{
public static void main(String[] args)
{
SpringApplication.run(PoolWebApplication.class);
}

@Bean
public DispatcherServlet dispatcherServlet()
{
return new DispatcherServlet();
}

@Bean
public ServletRegistrationBean servletRegistrationBean()
{
return new ServletRegistrationBean(dispatcherServlet(), "/ws/*");
}
}

但我不知道如何配置 updateServlet。

如何在 Spring Boot 应用程序中配置基于 HttpRequestHandlerServlet 的 servlet?

附加信息:

我尝试了建议的答案,但它对我不起作用。

我没有提到的一件事是 UpdateServlet 被命名为“updateServlet”: Componenet("updateServlet") 公共(public)类 UpdateServlet 实现 HttpRequestHandler

该名称与答案中的 bean 名称冲突。更改(更新)后,我得到:

No bean named 'httpRequestHandlerServlet' is defined

将updateServlet的名称改为httpRequestHandlerServlet后,得到

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'httpRequestHandlerServlet' must be of type [org.springframework.web.HttpRequestHandler], but was actually of type [org.springframework.web.context.support.HttpRequestHandlerServlet]

最佳答案

对于 DispatcherServlet,有一种更简单的方法,只需将一行添加到 application.properties 并从您的应用程序类中删除 servlet bean。

server.servlet-path=/ws/*

接下来只需将 HttpRequestHandlerServlet 的定义添加到您的配置中,而不是 DispatcherServlet

@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer
{
public static void main(String[] args)
{
SpringApplication.run(PoolWebApplication.class);
}

@Bean
public HttpRequestHandlerServlet updateServlet()
{
return new HttpRequestHandlerServlet();
}

@Bean
public ServletRegistrationBean updateServletRegistrationBean()
{
return new ServletRegistrationBean(updateServlet(), "/update");
}
}

更新:

注意,使用updateServlet()方法在这里是绝对合法的,可以用来获取SpringBean实例(见下面的注释)。

关于java - 需要帮助从 web.xml spring boot 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30930888/

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