SpringBoot 中如何使用JSP页面开发?

  • 前言
  • 正文 SpringBoot 中如何使用JSP页面开发
    • 依赖引入与加载
      • 引入POM
      • 创建webapp
      • 配置解析器
    • 业务实现
      • 新建JSP页面
      • ModelAndView的使用
        • 数据携带
        • 数据获取
  • 其他问题

前言

我们学校的计算机科学与技术、软件工程,作为一个培养IT技术人才的专业,依旧开着古老的JSP课程,倒也并不是课程跟不上IT时代,是IT行业发展太快了。
SpringBoot诞生于2014年,那个时候SSH框架如日中流,就在SpringBoot飞速发展的几年中,SSM逐渐取代了SSH以至于现在仍有很多企业使用SSM,但这一切都赶不上SpringBoot发展的浪潮,时间点说来也巧,大概在2018年,我进入大学的那年,SpringBoot纵身一跃名冠前列,直接超过了SSM。
说到JSP,它对服务器的依赖只增不减,这种连体开发或许在早些年还能独挡一面,但放在现在真是想让人跑路。

看了看手中的JSP教材,还有未完成的大作业,干吧,不就是在SpringBoot中来使用JSP开发页面吗。

tip:本文操作在IDEA中实现

正文 SpringBoot 中如何使用JSP页面开发

依赖引入与加载

引入POM

  • 在SpringBoot中,我们直接引入pom依赖就可以了。由于JSP是动态网页,光有SpringBoot自带的Tomcat是无法完成解析的,所以我们必须引入tomcat-embed-jasper这一项,而servlet由于SpringBoot已经提供,我们可以忽略,这个地方其实是有一点小小的影响的,我在文章后面会提到。对于jstl的引入作用是让项目能够使用JSP页面编程,这个也是必加项。
     <!--对jsp的支持--><!--引入springBoot 内嵌的Tomcat对JSP的解析包--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency><!--servlet--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><!--jsp--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><!--jstl--><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>

创建webapp

  • 如果了解SSM或的应该接触过webapp文件夹,它在ssm有jsp开发的应用中经常见到,就算是SpringBoot也不能例外。我们直接在SpringBoot项目中的main文件夹(与resources/java同级的目录)创建webapp文件夹。

  • 创建文件夹后还不能直接作为jsp的开发文件夹使用,如果你同样使用IDEA开发工具,请将webapp添设置为web模块,信息参考如下图

  • 然后就是webapp文件夹里的内容了,其中的web.xml是必须的,这里参考代码,可以根据实际使用修改

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--错误跳转页面--><error-page><exception-type>com.cloud.lost.common.config.exception.CloudException</exception-type><location>/WEB-INF/error/404.jsp</location></error-page><error-page><error-code>404</error-code><location>/WEB-INF/error/404.jsp</location></error-page><error-page><error-code>500</error-code><location>/WEB-INF/error/500.jsp</location></error-page><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.png</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.ico</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.gif</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.css</url-pattern></servlet-mapping>
</web-app>

配置解析器

  • 需要注意的是,在SpringBoot中使用JSP还需要在application.yml配置文件中添加解析配置,让SpringBoot能够解析到jsp页面。
spring:mvc:view:prefix: /WEB-INF/jspsuffix: .jsp

业务实现

新建JSP页面

  • 因为我配置的jsp文件路径在/WEB-INF/jsp,所以我们在里面添加jsp文件即可,这里我创建了一些页面,作为测试我就不贴页面代码了,主要看看Controller的编写。比如下面的代码实现的是当你访问localhos项目主页时将会访问到(/user/login/index)WEB-INF目录下的jsp/user/login/index.jsp页面。
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;/*** @author Long*/
@Controller
@RequestMapping("/")
public class IndexController {@RequestMapping("/")public ModelAndView index(){return new ModelAndView("/user/login/index");}
}
  • 测试结果

ModelAndView的使用

数据携带

  • 这里我并不想单独拿出来说的,但是鉴于其传递数据与页面控制的特性,就算是JSP,我们也能用ModelAndView达到数据与页面的解耦效果。
  • 例如在下面的代码中,我们同样是完成了向/user/login/index页面的跳转,同时还携带了一个数据,这个数据的key是name,值是张三,这样我们就可以在页面中渲染出来我们想要的效果,这一点与其他的模板引擎倒是非常相似。
     ModelAndView modelAndView = new ModelAndView("/user/login/index");modelAndView.addObject("name", "张三");return modelAndView;

数据获取

  • 获取数据,我们使用JSP的EL功能,即${},它与很多的模板引擎都很相似,例如下面的代码在页面中,如果跳转时通过ModelAndView携带了数据,我们就能根据key拿到数据并渲染到页面上
<span>${name}</span>
  • 至此,我们便能在SpringBoot中使用JSP页面进行开发了,仿佛又回到了从前后端程序员为项目时生产拖家带口的时代了。

其他问题

  • 后来开发中,因为业务需求,需要在项目中集成QQ登录的功能,但是集成在SpringBoot与JSP项目中会出现异常,这个异常并不是人为的,有可能是Tomcat冲突,但在我写这篇博客时我仍然没有找到问题所在。

SpringBoot 中如何使用JSP页面开发?相关推荐

  1. Java小项目中WEB-INF下jsp页面如何访问?

    Java小项目中WEB-INF下jsp页面如何访问? - 今天又是充满希望的一天 - CSDN博客 关闭 今天又是充满希望的一天 目录视图 摘要视图 订阅 var username = "H ...

  2. springboot 如何跳转jsp页面

    springboot框架是没有跳转jsp页面.所以之前可以在idea上直接跳转html页面的前提下,在项目中按以下步骤执行便可让springboot跳转jsp页面. 前提是 请确认 pom.jar 文 ...

  3. html如何设置多个模块,在webpack中如何实现多页面开发

    这篇文章主要介绍了webpack多页面开发实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 写在前面 webpack是一款模块加载器兼打包工具,能把js,css,页面, ...

  4. spring mvc项目中,在jsp页面中输入中文时,提交到student.jsp页面后,结果显示中文乱码

    在jsp页面中输入中文时,提交到student.jsp页面后,结果显示中文乱码 下面是相关代码截图 表单代码: 控制器类代码: springmvc配置文件代码: 用于显示的jsp页面: 修改之前的we ...

  5. 15.全网最详教程-springboot 中如何集成jsp模板、如何集成thymeleaf 模板

    一.集成jsp模板 1.集成jsp模板 1.1引入jsp的集成jar包 <dependency><groupId>jstl</groupId><artifac ...

  6. thymeleaf 使用页面报错_异常处理-SpringBoot中thymeleaf对应前台页面大于号\小于号使用问题...

    浏览器报错信息: There was an unexpected error (type=Internal Server Error, status=500). Exception parsing d ...

  7. J2EE中修改了jsp页面或者html页面重新启动tomcat无效问题

    在J2EE eclipse中重新启动 tomcat运行新修改的项目,但是页面前后修改无效,还是老的页面,这是经常遇见的问题.这个问题在多次停止,启动tomcat之后,还是无效!这是eclipse中比较 ...

  8. 将项目导入eclipse中出现的jsp页面报错

    图片摘自百度经验,实在是每次都会忘了步骤,每次都得重新百度,所以索性自己总结到博客中,下次如果还记不住就直接从博客中看.原谅我实在学渣,呜呜~~~~(>_<)~~~~ 转载于:https: ...

  9. eclispe Springboot项目修改html,jsp 页面不能及时刷新

    Springboot静态文件不更新的解决办法,以及Springboot实现热部署 正确答案是把菜单 Project > Build Automatically .(之前不知道怎么手瞎把这个给去了 ...

  10. j2ee中如何拦截jsp页面?

    2019独角兽企业重金招聘Python工程师标准>>> 加filter: public class RightFilter implements Filter {public voi ...

最新文章

  1. 调试webservice遇到“测试窗体只能用于使用基元类型作为参数的方法”的解决办法...
  2. 2020这一年,我完成了这几件大事
  3. openstack(Queens) neutron-l3-agent 代码解析1(从命令行启动到同步plugin数据)
  4. 多进程和多线程的概念
  5. [收集] C++ memset ,memcpy 和strcpy 的区别
  6. zcmu1209(dfs)
  7. selenium(2.4.0)中不能导出web drive 代码
  8. WCF学习之旅—WCF寄宿前的准备(八)
  9. python写appium_案例分享,Python +appium做登录功能
  10. remoteing2
  11. 分布式服务框架Dubbo使用小结
  12. 在c语言中文件的指针是什么,C语言中文件描述符和文件指针的本质区别
  13. matlab实现一/多元非线性回归
  14. Atitit.兼具兼容性和扩展性的配置方案attilax总结
  15. php页面审核,深入理解用PHP实现页面注册审核
  16. Emacs Lisp基本语法(六)
  17. 乱谈B2C系统-算是今年的总结吧
  18. JAVA设计模式——享元模式
  19. DB数据库密码怎么破啊~~~求高手帮忙解决下~
  20. WINVNC源码分析(二)——图像

热门文章

  1. 00 VirtualBox安装Windows7 32位系统
  2. r型聚类分析matlab实现,浅谈Matlab中的聚类分析 Matlab聚类程序的设计
  3. usb声卡驱动_最适合专业音乐人网络直播的声卡型号
  4. 《深入浅出WPF》-刘铁猛学习笔记——XAML
  5. RhinoMarine v4.0.3 plugin for Rhinoceros 船艇设计分析
  6. matlab计算可达矩阵,matlab计算可达矩阵
  7. Windows下Redis-Cluster伪集群搭建
  8. iMac上用bootcamp安装Win10遇到的问题总结
  9. c#中使用BackgroundWorker
  10. 批量翻译软件免费【2022最新版】