Java 带减震器滤清器和Tomcat的弹簧防尘套

Java 带减震器滤清器和Tomcat的弹簧防尘套,java,spring-boot,configuration,struts2,Java,Spring Boot,Configuration,Struts2,我正在将Struts2应用程序迁移到Spring Boot。我在应用程序启动类中定义了strutspreadexecutefilter @SpringBootApplication public class ClearApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(ClearApplication.cla

我正在将Struts2应用程序迁移到Spring Boot。我在应用程序启动类中定义了
strutspreadexecutefilter

@SpringBootApplication
public class ClearApplication extends SpringBootServletInitializer {

  public static void main(String[] args) {
    SpringApplication.run(ClearApplication.class, args);
  }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(ClearApplication.class);
  }

  @Bean
  public FilterRegistrationBean filterRegistrationBean() {
    Collection<String> urlPatterns = new ArrayList<>();
    urlPatterns.add("/*");
    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    StrutsPrepareAndExecuteFilter struts = new StrutsPrepareAndExecuteFilter();
    registrationBean.setFilter(struts);
    registrationBean.setName("strutsFilter");
    registrationBean.setOrder(1);
    registrationBean.setUrlPatterns(urlPatterns);
    return registrationBean;
  }
}
我的action类有一个简单的Struts操作和另一个json操作

@Action(value = "welcome", results = { @Result(name = "success", location = "result.jsp") })
public String execute() {
    return "success";
}

@Action(value = "users", results = { @Result(name = "success", type = "json", params = { "root", "userList" }) })
public String users() {
    userList = new ArrayList<>();
    userList.add(new User("Carl", "15", "M"));
    userList.add(new User("Rick", "30", "M"));
    userList.add(new User("Michonne", "26", "F"));
    return "success";
}
我是否缺少使其工作的任何其他配置

更新:

[ost-startStop-1] o.a.c.c.C.[.[localhost].[/clear]         : Initializing Spring embedded WebApplicationContext
[ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/clear]  : Initializing Spring embedded WebApplicationContext
正如@Roman-C所建议的,我检查了tomcat服务器的启动日志,并且上下文路径是相同的

外部Tomcat服务器:

[ost-startStop-1] o.a.c.c.C.[.[localhost].[/clear]         : Initializing Spring embedded WebApplicationContext
[ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/clear]  : Initializing Spring embedded WebApplicationContext
嵌入式Tomcat服务器:

[ost-startStop-1] o.a.c.c.C.[.[localhost].[/clear]         : Initializing Spring embedded WebApplicationContext
[ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/clear]  : Initializing Spring embedded WebApplicationContext
application.properties位于文件夹中

src/main/resources     
还是不走运。我想struts注释被忽略了


我已经在中提交了源代码。

默认情况下,Spring Boot将嵌入式tomcat初始化为根应用程序上下文。因此,您可以从
/
访问您的应用程序

URL由操作映射器映射到操作。默认操作映射器的实现是解析URL并提取操作名称和命名空间的。上下文路径后最后一个斜杠之前的路径是命名空间,操作名称是剩余路径

application.properties

server.contextPath=/clear
server.port=8080 
如果它们使用maven的项目结构位于
src/main/resources
中,则可以正常工作

检查应包含以下行的日志消息

INFO 4496 --- [ost-startStop-1] o.a.c.c.C.[.[localhost].[/clear]       : Initializing Spring embedded WebApplicationContext

来自两个Tomcat服务器的日志读取相同的内容,并且资源位于resources文件夹中。我已经用这些发现更新了原始答案。你能在配置浏览器页面中使用操作url吗?选中,配置浏览器页面。对于嵌入式Tomcat。命名空间/中的操作均为空。然而,对于外部Tomcat,它显示了所有操作。您在命名空间
/
中没有任何操作,这些操作是如何在外部Tomcat中出现的?删除这个属性,使用默认名称空间,这可能是由插件的约定定义的。但是它仍然没有显示在embedded的配置插件主页上,而它显示在外部Tomcat的s.Bala中,你在这件事上运气好吗?谢谢。遗憾的是,我没有。