我成功地遵循了Oracle的优秀教程,展示了如何创建嵌入式tomcat应用程序,我可以通过java -jar \ targeg \“myExecutableJar”启动它。在这样的教程中根本没有Spring。 (Oracle Tutorial
然后我编辑了index.jsp,如下所示。显然,我在pom.xml中添加了所有必需的Spring库。
在此之后,我收到了问题主题的错误。我已经阅读了几个类似的问题,但没有一个问题解决了我的问题。实例,在某些问题上有人告诉我检查ecj所以我把它添加到pom中。其他答案建议使用最新的Tomcat。我做到了。
在我看来,某些嵌入式tomcat lib与其他嵌入式tomcat之间可能存在一些冲突,但我无法想象哪一个。
其他可能性可能与spring上下文的某些问题有关,特别是因为它是一个嵌入式tomcat但我无法猜测其他任何事情要尝试。
我错过了任何额外的配置吗?请注意,在下图中我将context.xml保留在META-INF下完全自动生成,并将所有bean定义放在App-servlet.xml中。
的index.jsp
HttpOnly
应用-servlet.xml中
SELECT a.*, dups.Flag
FROM app a INNER JOIN (
SELECT ApplicationID, CASE
WHEN MIN(TeamMember) = MAX(TeamMember) THEN 'Alike'
ELSE 'Dup'
END Flag
FROM app t
GROUP BY ApplicationID) dups
ON a.ApplicationID = dups.ApplicationID
的web.xml
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<body>
<h2>Uploading a file.. </h2>
<form:form method="POST" action="uploadFile" enctype="multipart/form-data">
Upload your file please:
<input type="file" name="file" />
<input type="text" name="name">
<input type="submit" value="Upload" />
<form:errors path="file" cssStyle="color: #ff0000;" />
</form:form>
</body>
</html>
POM
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<context:component-scan base-package="com.example.employees" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
</beans>
日志:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Spring MVC Application</display-name>
<servlet>
<servlet-name>App</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/App-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>App</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
************已添加
答案 0 :(得分:4)
这可能是由于servlet.jar
jar冲突造成的。 Tomcat已经加入了servlet api库。尝试在pom.xml中为servlet依赖项添加<scope>provided</provide>
。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
此依赖项已由您的容器(即Tomcat)提供,因此您不必再次将其包含在已部署的应用程序中。
您可以尝试的其他事项:
您至少应该要求使用JSP 2.1并将其标记为POM中提供的
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
一个可能的原因是如果临时文件无法写入当前目录。
在Tomcat 8中,Jasper初始化是作为标准实现的 ServletContainderInitializer(检查Servlet规范)。 所以你应该确保 调用org.apache.jasper.servlet.JasperInitializer.onStartup 在网络应用启动期间。 Source
context.addServletContainerInitializer(new JasperInitializer(), null);
答案 1 :(得分:1)
从pom.xml中删除以下依赖项。手动添加项目运行时间。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-juli</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>${tomcat.version}</version>
</dependency>