SpringBoot 中如何使用JSP页面开发?
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页面开发?相关推荐
- Java小项目中WEB-INF下jsp页面如何访问?
Java小项目中WEB-INF下jsp页面如何访问? - 今天又是充满希望的一天 - CSDN博客 关闭 今天又是充满希望的一天 目录视图 摘要视图 订阅 var username = "H ...
- springboot 如何跳转jsp页面
springboot框架是没有跳转jsp页面.所以之前可以在idea上直接跳转html页面的前提下,在项目中按以下步骤执行便可让springboot跳转jsp页面. 前提是 请确认 pom.jar 文 ...
- html如何设置多个模块,在webpack中如何实现多页面开发
这篇文章主要介绍了webpack多页面开发实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 写在前面 webpack是一款模块加载器兼打包工具,能把js,css,页面, ...
- spring mvc项目中,在jsp页面中输入中文时,提交到student.jsp页面后,结果显示中文乱码
在jsp页面中输入中文时,提交到student.jsp页面后,结果显示中文乱码 下面是相关代码截图 表单代码: 控制器类代码: springmvc配置文件代码: 用于显示的jsp页面: 修改之前的we ...
- 15.全网最详教程-springboot 中如何集成jsp模板、如何集成thymeleaf 模板
一.集成jsp模板 1.集成jsp模板 1.1引入jsp的集成jar包 <dependency><groupId>jstl</groupId><artifac ...
- thymeleaf 使用页面报错_异常处理-SpringBoot中thymeleaf对应前台页面大于号\小于号使用问题...
浏览器报错信息: There was an unexpected error (type=Internal Server Error, status=500). Exception parsing d ...
- J2EE中修改了jsp页面或者html页面重新启动tomcat无效问题
在J2EE eclipse中重新启动 tomcat运行新修改的项目,但是页面前后修改无效,还是老的页面,这是经常遇见的问题.这个问题在多次停止,启动tomcat之后,还是无效!这是eclipse中比较 ...
- 将项目导入eclipse中出现的jsp页面报错
图片摘自百度经验,实在是每次都会忘了步骤,每次都得重新百度,所以索性自己总结到博客中,下次如果还记不住就直接从博客中看.原谅我实在学渣,呜呜~~~~(>_<)~~~~ 转载于:https: ...
- eclispe Springboot项目修改html,jsp 页面不能及时刷新
Springboot静态文件不更新的解决办法,以及Springboot实现热部署 正确答案是把菜单 Project > Build Automatically .(之前不知道怎么手瞎把这个给去了 ...
- j2ee中如何拦截jsp页面?
2019独角兽企业重金招聘Python工程师标准>>> 加filter: public class RightFilter implements Filter {public voi ...
最新文章
- 调试webservice遇到“测试窗体只能用于使用基元类型作为参数的方法”的解决办法...
- 2020这一年,我完成了这几件大事
- openstack(Queens) neutron-l3-agent 代码解析1(从命令行启动到同步plugin数据)
- 多进程和多线程的概念
- [收集] C++ memset ,memcpy 和strcpy 的区别
- zcmu1209(dfs)
- selenium(2.4.0)中不能导出web drive 代码
- WCF学习之旅—WCF寄宿前的准备(八)
- python写appium_案例分享,Python +appium做登录功能
- remoteing2
- 分布式服务框架Dubbo使用小结
- 在c语言中文件的指针是什么,C语言中文件描述符和文件指针的本质区别
- matlab实现一/多元非线性回归
- Atitit.兼具兼容性和扩展性的配置方案attilax总结
- php页面审核,深入理解用PHP实现页面注册审核
- Emacs Lisp基本语法(六)
- 乱谈B2C系统-算是今年的总结吧
- JAVA设计模式——享元模式
- DB数据库密码怎么破啊~~~求高手帮忙解决下~
- WINVNC源码分析(二)——图像
热门文章
- 00 VirtualBox安装Windows7 32位系统
- r型聚类分析matlab实现,浅谈Matlab中的聚类分析 Matlab聚类程序的设计
- usb声卡驱动_最适合专业音乐人网络直播的声卡型号
- 《深入浅出WPF》-刘铁猛学习笔记——XAML
- RhinoMarine v4.0.3 plugin for Rhinoceros 船艇设计分析
- matlab计算可达矩阵,matlab计算可达矩阵
- Windows下Redis-Cluster伪集群搭建
- iMac上用bootcamp安装Win10遇到的问题总结
- c#中使用BackgroundWorker
- 批量翻译软件免费【2022最新版】