Java 带减震器滤清器和Tomcat的弹簧防尘套
我正在将Struts2应用程序迁移到Spring Boot。我在应用程序启动类中定义了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
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中,你在这件事上运气好吗?谢谢。遗憾的是,我没有。