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

初看这个标题....大家的感觉一定是好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页面中引用其他页面的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • jsp中一个页面引入另一个页面的实现代码

    action代码片段 复制代码 代码如下: public String execute() {        String ret = super.execute(); if (RETURN_LIST.equals(ret)) {            return list();        } else {            return ret;        }    } public String list() {        String show = this.getReq

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

    初看这个标题....大家的感觉一定是好2啊.....博主一定要说jsp的动态引用(jsp:include)和静态引用(@include)了.介绍这两者区别的文章已经烂大街了..一搜一大把..博主竟然还来介绍这些老古董..果断alt+F4... 如果你确实是这么想的...那请先别急着关闭页面...今天我来分享一下自己的理解,算是对烂大街的东西的一点补充吧...(后面文字会比较啰嗦) 首先先说明下为什么会去讨论这个话题. 我在写自己的博客程序的时候(blogv2.labofjet.com),程序中的

  • js父页面中使用子页面的方法

    iframe是非常常用的一个html元素,如果在父页面中使用子页面的方法应该怎么写呢,下面就做一下简单的介绍. 一.父页面代码 <html> <head> <meta charset=" gb2312"> <title>父页面</title> <script type="text/javascript"> function parentFunction() { alert('function i

  • Android 在页面中显示打包日期的实现方法

    项目有需求,要求在app里显示安装包打包的日期,我的想法是: 1,在build.gradle中定义打包的日期变量. 2,在app里引用BuildConfig文件自动生成的变量并显示. 实现如下: 先在Build.gradle中定义得到打包时间的方法,在文件内容最外层定义: //得到打包时间 def static releaseTime() { return new Date().format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone(&qu

  • Angular在一个页面中使用两个ng-app的方法(二)

    在上篇文章给大家介绍了Angular在一个页面中使用两个ng-app的方法,这种方法不太推荐,下面给大家介绍方法二,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>ng-app指令,angular找到第一个ng-app就不会再找了,在一个页面中只使用一个ng-app.</title>

  • Angular在一个页面中使用两个ng-app的方法

    下面一段代码给大家介绍了Angular在一个页面中使用两个ng-app的方法,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>ng-app指令,angular找到第一个ng-app就不会再找了,在一个页面中只使用一个ng-app.</title> </head> <b

  • JavaScript获取页面中第一个锚定文本的方法

    本文实例讲述了JavaScript获取页面中第一个锚定文本的方法.分享给大家供大家参考.具体如下: 下面的JS代码通过document.archors数组获取第一个archor的innerHTML <!DOCTYPE html> <html> <body> <a name="html">jb51.net</a><br> <a name="css">CSS Tutorial</a

  • vue2中引用及使用 better-scroll的方法详解

    使用时有三个要点: 一:html部分 <div class="example" ref="divScroll"> <div> <p>内容1</p> <p>内容2</p> <ul> <li>list1</li> <li>list2</li> <ul> </div> </div> [注] 1.最外层加re

  • VC中实现文字竖排的简单方法(推荐)

    好多人都觉得在VC中实现文字竖排是一件很难的事情,其实可以使用"躺"着的字体很方便的实现文字竖排. Windows中有一些字体是"躺"着的,例如:@Fixedsys.@System.@宋体.@黑体等等,有很多,这些字体和不加@的字体的唯一区别就是用这些字体显示的文字是"躺"着的.如下图: 对这些"躺"着的字体进行270°的旋转就可以实现文字竖排了,效果如下: 以下代码可以产出竖排的宋体. CFont font; CFont *

  • JavaWeb中导出excel文件的简单方法

    在平时做系统项目时,经常会需要做导出功能,不论是导出excel,还是导出cvs文件.我下面的demo是在springmvc的框架下实现的. 1.JS中只需要用GET模式请求导出就可以了: $('#word-export-btn').parent().on('click',function(){ var promotionWord = JSON.stringify($('#mainForm').serializeObject()); location.href="${ctx}/promotionW

  • php 从指定数字中获取随机组合的简单方法(推荐)

    例如:给定数字100,需要随机获取3个组成这个数字的组合,例如70,20,10 代码如下: <?php /** * 获取指定数字的随机数字组合 * @param Int $var 数字 * @param Int $num 组合这个数字的数量 * @return Array */ function getNumGroups($var, $num){ // 数量不正确 if($var<$num){ return array(); } $total = 0; $result = array(); f

随机推荐