一、spring boot默认是不支持响应和返回jsp视图的,若要spring boot支持jsp视图,需要设置下面两步:
- 导入 tomcat-embed-jasper依赖
需要在application.properties中配置jsp
1、导入依赖
在pom.xml文件中导入jsp的依赖:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.4</version>
</dependency>
2、创建jsp文件的目录
在/src/main/下面创建目录/webapp/WEB-INF/目录,jsp文件是默认存储在该目录下的。例如下面形式,把jsp文件放在WEB-INF目录的jsp目录下。jsp目录为随意定义的一层目录。
在application.properties文件配置响应jsp文件的目录位置和jsp的格式。配置如下:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
表示解析后的jsp文件格式为.jsp,存放位置为/WEB-INF/jsp/目录下。
下面通过示例演示
二、示例1
1、导入上面的依赖,创建jsp的存放位置,以及在application.properties中配置完成后,下面演示响应请求。
启动类为:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(App.class);
ConfigurableApplicationContext context = app.run(args);
}
}
2、创建视图控制类
package com.lzj.spring.boot;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
/*
* 1、spring boot 默认不支持jsp的,需要导入tomcat-embed-jasper
*2、需要在application.properties中配置:
* spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
注意:如果/WEB-INF/jsp/最后不加'/',则在返回的字符串'ok'和'fail'的最前面加'/'
*3、如果要把返回的字符串映射成一个jsp文件,在类的注解上不能用@RestController,因为该注解中内部包含了@ResponseBody注解,
* 还是用@Controller比较好
* */
@Controller
public class MyJsp {
@RequestMapping("/createJsp")
public String createJsp(@RequestParam(value="name") String name){
if(name.equals("lzj")){
return "success";
}
return "fail";
}
}
3、创建响应的jsp视图
在/WEB-INF/jsp/目录下分别创建success.jsp和fail.jsp视图。
success.jsp视图:
<h1>SUCCESS</h1>
fail.jsp视图:
<h1>FAIL</h1>
运行启动类,当在浏览器中输入http://localhost:8080//createJsp?name=lzj请求后,浏览器返回的视图为success.jsp的视图,表示请求成功。注意浏览器中的请求连接没有改变,因为我们没有重定向。
三、示例2:给jsp视图传参数
继续采用如上配置后,下面直接定义控制视图层
@Controller
public class MyJsp {
@RequestMapping("/login")
/*通过Model模型,把数据加载到返回的login.jsp视图中*/
public String login(Model model){
model.addAttribute("username", "lzj");
return "login";
}
}
在/WEB-INF/jsp/目录下创建login.jsp文件,通过${username }获取视图中加载的数据。内容为:
<body>
<h1>This is login page</h1>
<h2>username is ${username }</h2>
</body>
运行启动类,在浏览器中输入http://localhost:8080/login后,浏览器中显示login.jsp视图。