侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

jsp页面中引用其他页面的简单方法

Java  /  管理员 发布于 7年前   287

初看这个标题....大家的感觉一定是好2啊.....博主一定要说jsp的动态引用(jsp:include)和静态引用(@include)了。介绍这两者区别的文章已经烂大街了。。一搜一大把。。博主竟然还来介绍这些老古董。。果断alt+F4。。。

如果你确实是这么想的。。。那请先别急着关闭页面。。。今天我来分享一下自己的理解,算是对烂大街的东西的一点补充吧。。。(后面文字会比较拢

首先先说明下为什么会去讨论这个话题。

我在写自己的博客程序的时候(blogv2.labofjet.com),程序中的目录是需要读取数据库中的数据的,而这个目录是要被多个页面引用的。这个时候该怎么办呢。

我那个时候用的是静态引用,在jsp页面中通过<%@include file="menu.jsp"%>引用这个目录的jsp页面片段(单独为目录做了一个jsp),缺点在于通过不同Controller跳转到不同的page的时候只要这个page包含目录的HTML片段,Controller里就需要去调用目录的dao的方法,然后去给request设置值,这样才能正常显示目录页面。

后来我想了想,我觉得最好能写一个servlet,访问这个servlet的url,就能得到目录的HTML片段,然后在不同的页面中,只要加载这个url就相当于加载了目录的HTML片段。这样的好处在于不同的controller里不再需要调用目录的dao了,只要有一个专门的目录Controller来处理目录的dao并设置request然后返回目录的page就行了。然后我就想到了jsp:include。。。。

然后我就百度了一下烂大街的东西。大部分文章都一个意思,jsp:include可以引用jsp,并动态编译。。blablabla。。。可是它们都没有说明jsp:include可不可以引用servlet呢?我们现在不会去把逻辑放到jsp中的,一般都是放到servlet中然后再跳转到jsp中吧。经过试验我发现是可以的。但是有一些地方比较坑爹。。。。。需要注意。。。

jsp:include引用jsp的时候完全OK,就是网上大部分文章介绍的内容。

jsp:include引用servlet的时候,这个servlet需要在web.xml里配置过,不然eclipse会给红色波浪线。

不知道大家看了上面的总结有没有产生一个新的问题:现在我们写程序的时候都用一些框架,比如SpringMVC,我们没有在web.xml为每个Servlet单独配置,而是通过SpringMVC自己的配置文件去配置这些Controller(Servlet)的。那么jsp:include还能用吗?

答案是可以的。。。。但是很坑。。。坑就坑在eclipse里还是会划红线,eclipse觉得找不到这个url对应的servlet,但是实际上是可以访问的。

另外还有个小问题,可能是我自己没设置对,我每次jsp:include的时候console里都会报java.io.IOException: Stream closed这个异常,我觉得可能是引用其他servlet的时候其他的servlet自动调用了out的close方法,导致包含其他page的page的内容不能被正常输出。。。。这个问题我没继续研究下去。。。。我想肯定是有解决办法的,但是不是我这篇文章要讨论的重点。

这么说的话现在就有2个小问题了:一个异常,一个eclipse的红线报错。。。虽然也能用,但是让人很不爽。。

所以就找一个替代方法吧。。那就是jstl的c:import

这个标签其实超级简单的。。。比如我把目录HTML片段对应的url设置成了/menu,那我在包含目录的页面中只要

<c:import var="data" url="/menu" />${data}

就OK了。目录就被包含到其他页面中了。。是不是超级简单呀!

以上这篇jsp页面中引用其他页面的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


  • 上一条:
    JSP页面间的传值方法总结
    下一条:
    springMVC使用jsp:include嵌入页面的两种方法(推荐)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在java中实现的脱敏工具类代码示例分享(0个评论)
    • zookeeper安装流程步骤(0个评论)
    • 在java中你背的“八股文”可能已经过时了(2个评论)
    • 在php8.0+版本中使用属性来增加值代码示例(3个评论)
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2018-03
    • 2020-03
    • 2023-05
    • 2023-11
    • 2024-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客