我的上一篇文章翻译了这个JSP limitation,其实就是一定要注意,要用war包来创建你这个JSP项目,不要用Jar包,用了Jar包死活JSP也找不到,好像是打包成jar之后,这个JSP文件就根本没有打包到这个jar里面,另外打包成这个war的工程文件,里面是有一些对JSP的支持的。下文详细说。记得用war包,不用jar包。
步骤如下:
一、https://start.spring.io/ 去这个网站
创建一个项目,在artifact处改为:jspwardemo 选war ,选war 选war 3times to say important things.依赖选择SpringWeb
点击Generate下载下来这个zip包,解压缩到硬盘上。
用IDE SpringToolSuite4.exe 打开这个项目
然后开始写点代码什么的。最后的目录结构如下图
二、创建目录结构和JSP文件
你会发现在main目录下有个webapp目录,这个目录如果你创建项目的时候选择jar包是没有这个目录的。这也是为什么网上有人说必须是webapp才行。这个目录是默认war包的这种Spring给你规定好了的,有了就行。在webapp目录下创建WEB-INF目录,再在WEB-INF目录下创建jsp目录,然后创建hello.jsp.
hello.jsp 内容很简单,有个文本就可以了。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
THis is JSP Create By Mr Spring!
</body>
</html>
三、修改application.properties文件内容,该文件位于:
更改后内容如下:
########################################################
###JSP
########################################################
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
# 自定义属性,可以在Controller中读取
application.hello=Hello Angel From application
server.port=9090
这个最后一句改端口的可以根据你的情况改为8080,8088 ,9099 都好像差不多可以,其他的都是不能动。就是对前缀和后缀做了龟腚贝。
四、添加一个类文件:JSPController.java 文件在:
内容为:
package com.example.jspwardemo;
import java.text.DateFormat;
import java.util.Date;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class JSPController {
private String hello;
@RequestMapping("/hello")
public String helloJsp(){
System.out.println("HelloController.helloJsp().hello=hello");
// map.put("hello", hello);
return "hello";
}
}
就是加了个控制器注解,访问/hello的都去运行helloJsp()方法,该方法返回的视图名称为hello,其实最后浏览器中用的就是hello.jsp。
基本上就可以了。
这个地方用war的会多出来一个类文件(如果用jar构建,就没有这个类文件):
package com.example.jspwardemo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(JspwardemoApplication.class);
}
}
这个是Spring给我们写好的,用来做JSP Servlet初始化的,这个就是用war和jar的最重要的区别了。
都好了,在IDE中 Run AS SB App
然后浏览器中 输入网址:localhost:9090/hello
你看到了jsp文件中的内容。
你要是不像我这么干,我也不知道了怎么干,就这个东西我搞了一天,就是因为没有用war的形式创建项目,jsp死活找不到。
按照我的这个你也可以,Do it Now,Bye!