SpringBoot整合JSP,一个经典而且优雅的方案!
步骤 1 pom.xml
<!-- servlet依赖. --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!-- tomcat的支持.--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>
添加以上配置,不然没法正确访问到jsp
步骤 2 application.yml
spring: jpa: database: mysql hibernate: ddl-auto: update show-sql: true #资源目录 resources: static-locations: classpath:static/ #视图解析器 mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp
这些配置主要是为了说明资源目录和视图的位置。
启动类
在src下新建一个com包,里面写一个启动类:
package com; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * SpringBoot启动类 * @author Administrator * */ @SpringBootApplication(scanBasePackages = "com") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
4. index.jsp写在哪?
项目肯定需要一个欢迎页,我们需要这样的一个目录结构:
index.jsp里面的内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> 恭喜,JSP整合成功! </body> </html>
5. 访问控制器
页面有了,下一步就是如何访问这个页面,老规矩,创建Controller
package com.app.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class IndexController { @RequestMapping("/") public ModelAndView index(ModelAndView mav){ mav = new ModelAndView("index"); return mav; } }
默认访问的就是index.jsp
验证效果
启动项目,访问 http://localhost
附录: Jsp中获得项目根路径的方式
1.可以使用EL表达式:${pageContext.request.contextPath}
这种方式是的取到pageContext对象,然后在得到HttpServletRequest对象,最后再拿到contextPath。
2.可以采用JSP的形式来表示:
<%=request.getContextPath()%>
3.jstl set自定义标签
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <c:set var="basePath" value="${pageContext.request.contextPath}"></c:set>
上面3种方式都是可以的,我们以第三种方式为例。
更新index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <c:set var="basePath" value="${pageContext.request.contextPath}"></c:set> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> 恭喜,JSP整合成功! ${basePath} </body> </html>
修改application.yml
server: port: 80 context-path: /app
意思就是修改项目根目录为app。
重启,访问 http://localhost/app