gpt4 book ai didi

spring-boot - Spring Boot + Tomcat Embedded + Struts 2 - 不调用 JSP

转载 作者:行者123 更新时间:2023-12-04 03:26:19 25 4
gpt4 key购买 nike

我正在尝试将带有 spring boot 和 struts 2(struts.xml 文件)的 Web 应用程序从 Jboss 7.1.1 迁移到嵌入式 tomcat。

现在,我的配置是这样的:

应用程序.java

@SpringBootApplication()
@ServletComponentScan()
public class Application extends JbossDefaultPropertiesInitializer {

public static void main(String[] args) {
configureApplication(new SpringApplicationBuilder()).run(args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
setRegisterErrorPageFilter(false);
return configureApplication(builder);
}

private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
builder.initializers(new DefaultPropertiesInitializer());
return builder.sources(Application.class);
}
}

pom.xml

<resources>
<resource>
<directory>src/main/webapp</directory>
<targetPath>/static</targetPath>
<excludes>
<exclude>**/*.jsp</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/webapp</directory>
<targetPath>/WEB-INF/jsp</targetPath>
<includes>
<include>**/*.jsp</include>
</includes>
</resource>
</resources>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.6.RELEASE</version>
<configuration>
<mainClass>com.myapplication.Application</mainClass>
<executable>true</executable>
<layout>WAR</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

struts.devMode=true

每个过滤器、servlet 和监听器都从 web.xml 迁移到@WebFilter、@WebListener 和@WebServlets。

当我启动 tomcat 时,一切似乎都工作正常,并且我能够获得一些静态资源,如 html、css 和 js。

当我调用一些像 http://localhost:8080/myapplication/login.go 这样的 struts 页面时,一切都很好,调用了过滤器和 servlet,调用了我的操作,但是当操作返回“成功”以调用“/myapplication/jsp/login.jsp”时,它没有呈现。未调用 jsp 文件或存在一些错误,我在控制台中什么也没有得到。

我的操作调用jsp页面之前的日志:

2017-11-28 13:03:19.881  INFO 7376 --- [nio-8080-exec-3] c.o.x.c.p.XmlConfigurationProvider       : Parsing configuration file [struts-default.xml]
2017-11-28 13:03:19.933 WARN 7376 --- [nio-8080-exec-3] com.opensymphony.xwork2.util.DomHelper : Local DTD is missing for publicID: -//Apache Software Foundation//DTD Struts Configuration 2.5//EN - defined mappings: {-//Apache Struts//XWork 1.1.1//EN=xwork-1.1.1.dtd, -//Apache Software Foundation//DTD Struts Configuration 2.0//EN=struts-2.0.dtd, -//Apache Struts//XWork 1.0//EN=xwork-1.0.dtd, -//Apache Software Foundation//DTD Struts Configuration 2.1//EN=struts-2.1.dtd, -//Apache Struts//XWork 1.1//EN=xwork-1.1.dtd, -//Apache Struts//XWork 2.1.3//EN=xwork-2.1.3.dtd, -//Apache Software Foundation//DTD Struts Configuration 2.3//EN=struts-2.3.dtd, -//Apache Struts//XWork 2.0//EN=xwork-2.0.dtd, -//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN=struts-2.1.7.dtd, -//Apache Struts//XWork 2.1//EN=xwork-2.1.dtd, -//Apache Struts//XWork 2.3//EN=xwork-2.3.dtd}
2017-11-28 13:03:20.220 INFO 7376 --- [nio-8080-exec-3] c.o.x.c.p.XmlConfigurationProvider : Parsing configuration file [struts-plugin.xml]
2017-11-28 13:03:20.301 INFO 7376 --- [nio-8080-exec-3] c.o.x.c.p.XmlConfigurationProvider : Parsing configuration file [struts.xml]
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (spring) for (com.opensymphony.xwork2.ObjectFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.ActionFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.ResultFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.ConverterFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.InterceptorFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.ValidatorFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.UnknownHandlerFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.FileManagerFactory)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.XWorkConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.CollectionConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.ArrayConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.DateConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.NumberConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.StringConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ConversionFileProcessor)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ConversionAnnotationProcessor)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.TypeConverterCreator)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.TypeConverterHolder)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.TextProvider)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.LocaleProvider)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.ActionProxyFactory)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ObjectTypeDeterminer)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.dispatcher.mapper.ActionMapper)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (jakarta) for (org.apache.struts2.dispatcher.multipart.MultiPartRequest)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.views.freemarker.FreemarkerManager)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.views.velocity.VelocityManager)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.components.UrlRenderer)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.validator.ActionValidatorManager)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.ValueStackFactory)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.reflection.ReflectionProvider)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.reflection.ReflectionContextFactory)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.PatternMatcher)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.util.ContentTypeMatcher)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.dispatcher.StaticContentLoader)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.UnknownHandlerManager)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.views.util.UrlHelper)
2017-11-28 13:03:20.308 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.TextParser)
2017-11-28 13:03:20.308 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.dispatcher.DispatcherErrorHandler)
2017-11-28 13:03:20.308 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.security.ExcludedPatternsChecker)
2017-11-28 13:03:20.308 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.security.AcceptedPatternsChecker)
2017-11-28 13:03:20.310 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.DefaultBeanSelectionProvider : Loading global messages from [messageResources]
2017-11-28 13:03:20.699 INFO 7376 --- [nio-8080-exec-3] c.o.xwork2.spring.SpringObjectFactory : Setting autowire strategy to name
2017-11-28 13:03:21.764 ERROR 7376 --- [nio-8080-exec-3] c.o.x.interceptor.ParametersInterceptor : Developer Notification (set struts.devMode to false to disable this message):
Unexpected Exception caught setting 'cp' on 'class com.myapplication.account.actions.LoginNavigationAction: Error setting expression 'cp' with value ['false', ]
2017-11-28 13:03:21.769 ERROR 7376 --- [nio-8080-exec-3] c.o.x.interceptor.ParametersInterceptor : Developer Notification (set struts.devMode to false to disable this message):
Unexpected Exception caught setting 'forwardURL' on 'class com.myapplication.account.actions.LoginNavigationAction: Error setting expression 'forwardURL' with value ['/myapplication/html/login.html', ]
2017-11-28 13:03:21.844 INFO 7376 --- [nio-8080-exec-3] c.m.account.actions.LoginPageAction : ========================= Result from LoginPageAction: success

更新

当我尝试 java -jar myapplication.war 时,我可以访问我的静态页面,但我在访问 struts 页面时遇到另一个错误:

2017-11-29 08:55:41.536  WARN 7968 --- [nio-8080-exec-8] c.o.xwork2.util.fs.JarEntryRevision      : Could not create JarEntryRevision for [jar:file:/C:/workspaces/workspace/dev/myapplication/target/myapplication-war-0.0.0.war]!

java.lang.NullPointerException: null
at com.opensymphony.xwork2.util.fs.JarEntryRevision.build(JarEntryRevision.java:52)
at com.opensymphony.xwork2.util.fs.DefaultFileManager.monitorFile(DefaultFileManager.java:97)
at com.opensymphony.xwork2.util.fs.DefaultFileManager.loadFile(DefaultFileManager.java:74)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:1015)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:167)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:134)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:239)
....
2017-11-29 08:55:41.636 WARN 7968 --- [nio-8080-exec-8] c.o.xwork2.util.fs.JarEntryRevision : Could not create JarEntryRevision for [jar:war:file:/C:/workspaces/workspace/dev/myapplication/target/myapplication-war-0.0.0.war*/WEB-INF/lib/struts2-core-2.3.34.jar]!

java.io.FileNotFoundException: war:file:\C:\workspaces\workspace\dev\myapplication\target\myapplication-war-0.0.0.war*\WEB-INF\lib\struts2-core-2.3.34.jar (The filename, directory name, or volume label syntax is incorrect)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:219)
at java.util.zip.ZipFile.<init>(ZipFile.java:149)
at java.util.jar.JarFile.<init>(JarFile.java:166)
at java.util.jar.JarFile.<init>(JarFile.java:130)
at com.opensymphony.xwork2.util.fs.JarEntryRevision.build(JarEntryRevision.java:50)
...
2017-11-29 08:55:41.690 INFO 7968 --- [nio-8080-exec-8] c.o.x.c.p.XmlConfigurationProvider : Parsing configuration file [struts-default.xml]
2017-11-29 08:55:41.802 ERROR 7968 --- [nio-8080-exec-8] o.apache.struts2.dispatcher.Dispatcher : Dispatcher initialization failed

com.opensymphony.xwork2.config.ConfigurationException: Unable to load configuration.
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:978)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
...
Caused by: com.opensymphony.xwork2.config.ConfigurationException: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:247)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:102)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:240)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
... 65 common frames omitted
Caused by: com.opensymphony.xwork2.config.ConfigurationException: Bean type class com.opensymphony.xwork2.ObjectFactory with the name struts has already been loaded by bean - jar:file:/C:/workspaces/workspace/dev/myapplication/target/myapplication-war-0.0.0.war!/WEB-INF/lib/struts2-core-2.3.34.jar!/struts-default.xml:65:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:231)
... 68 common frames omitted

拜托,有什么想法吗?

最佳答案

您是否尝试过将 jsp 文件从 src/main/webapp 文件夹简单地移动到 src/main/resources/META-INF/resources/WEB-INF ? Servlet 3.0 规范允许在 src/main/resources/META-INF/resources/中有动态页面

关于spring-boot - Spring Boot + Tomcat Embedded + Struts 2 - 不调用 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47541036/

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