我使用spring boot简单应用程序来显示JSP。 但是,不是渲染JSP,而是在浏览器中下载页面。 请提出建议?
application.properties
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tcadmin?zeroDateTimeBehavior=convertToNull
spring.datasource.username=tcuser
spring.datasource.password=tcuserpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
server.port=9090
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
server.context-path=/internal
spring.mvc.view.prefix:/
spring.mvc.view.suffix:.jsp
我已经创建了文件夹src / main / webapp并将printReciept.jsp放入其中。
的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.a2b</groupId>
<artifactId>A2BInternalModules</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>A2BInternalModules</name>
<description>Sitemap Generator for A2B</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- Tomcat Embed -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>required</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
PrintRecieptController.java
@RequestMapping(value = "/PrinReciept", method = RequestMethod.GET)
public String welcome(Model model) {
model.addAttribute("message", "Hello World !!!");
return "printReciept";
}
printReciept.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Print Receipt
</body>
</html>
控制器受到了攻击,但不是渲染JSP而是在浏览器中下载该页面。请建议。
答案 0 :(得分:1)
您缺少JEE依赖项。
Sub base64()
'this converts the A1 text to base64
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
Dim arrData() As Byte
arrData = StrConv(Cells(1, 1), vbFromUnicode)
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
MsgBox objNode.Text
End Sub
另外,我强烈建议您将所有JSP放入WEB-INF文件夹(对于任何模板引擎都是如此)并选择除root之外的前缀。如果您还希望从同一个应用程序提供一些RESTlike端点,那么它会更安全,更灵活。
您还可以扩展WebMvcConfigurerAdapter并覆盖适用的方法。
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
“addViewControllers”很好用,因此您不必为每个通用JSP和部分创建控制器。请注意,我没有在视图名称中添加“.jsp”。
您可以使用根上下文作为前缀,并仍使用上述配置。
答案 1 :(得分:1)
我遇到了同样的错误,但是我没有把负责转换我们的jsp文件的tomcat jasper放进去,
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>9.0.16</version>
</dependency>
只需使用tomcat根据您的春季启动时间添加tomcat-jasper
答案 2 :(得分:0)
如果您使用的是Gradle,请添加以下依赖项
compile('org.apache.tomcat.embed:tomcat-embed-jasper')
答案 3 :(得分:0)
在Maven依赖关系中,检查tomcat嵌入的版本,并在maven中心中找到相关的tomcat-jasper版本依赖关系。 JSP编译需要此jar。由于未编译,因此可以下载。
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>9.0.19</version>
</dependency>
我的嵌入tomcat版本是9.0.19,并且得到了与该版本相关的碧玉。
答案 4 :(得分:0)
如果您使用的是 IntelliJ,请在为 tomcat jasper 添加依赖项后尝试重新加载 maven 依赖项。为我工作:)
记得添加正确的版本。