文档章节

JSTL中<c:import />标签的简单使用-以和Spring MVC搭配为例

阿信sxq
 阿信sxq
发布于 2015/07/11 23:02
字数 1038
阅读 389
收藏 0

        本文只是简单介绍<c:import />标签的用法,并不详细介绍这个标签是怎么一个原理、和其他相似功能标签的区别等等问题,因为我自己也没有去深入了解过。

0、场景

        早前,我也不知道这个标签,直到有一个场景,我才开始使用这个标签,但是也仅仅是简单使用,并没有过多深入的了解,所以对希望了解这个标签详细使用事项的朋友们说声“对不住了”。

        当时的场景是这样的:项目是使用Spring MVC和jsp做的页面展现相关的工作,用过Spring MVC的应该知道,所有的页面相关的资源包括图片、css、js、jsp等等都是放在<web>/WEB-INF下面的,用户直接输入路径是访问不到的,必须通过界面控制器实现访问;这个本来很不错,便于权限控制,同时也想用户隐藏了真实的目录结构等,好处先就说到这里,接下来是问题;下载页面中有一处需要在页面加载过程中,动态加载一个页面的内容进来。

1、解决办法

        想来也容易啊,直接来一个

<jsp:include />

        但是,经过试验,以前使用的各种包含页面的方式都不行,原因就是根本访问不到那个页面文件。

        这个简单的问题,要是在struts2里面,一个简单的

<s:action />

        也就是分分钟的事,但是这里是Spring MVC,技术不能说换就换,于是乎上网查询解决办法。

        由于过去有一段时间了,忘记是在哪里找到的了,反正解决办法就是使用JSTL的一个标签:

<c:import />

2、具体的使用

        下面说一说我的具体使用,供大家参考。

        页面所在的路径是

<webapp>/WEB-INF/jsp/home/foot.jsp

        如前所述,直接访问是不行的,所以我写了一个控制器,也简单,就是直接返回这个页面就是了,

@Controller
@RequestMapping(value = "/home")
public final class HomeController extends BaseController {
    //省略其他不相关代码
    //……
    @RequestMapping(value = "/foot")
    public String footPage() {
        return "home/foot";
    }
}

        这个控制器的访问地址就是

<ROOT>/home/foot

        拿在需要加载foot.jsp页面的jsp文件的对应位置添加如下代码

<c:import url="/home/foot"/>

        当然,为了能够正常使用这个标签,还需要导入相关的JAR包,在jsp文件头部加上引入标签,

        在pom.xml文件中加入

        <dependency>
            <groupId>org.apache.taglibs</groupId>
            <artifactId>taglibs-standard-spec</artifactId>
            <version>1.2.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taglibs</groupId>
            <artifactId>taglibs-standard-impl</artifactId>
            <version>1.2.5</version>
        </dependency>

        没有使用maven的朋友请去这个地址下载http://tomcat.apache.org/download-taglibs.cgi       

        在jsp文件头部加入

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

3、注意事项

        ①该标签会直接将请求来的结果插入到标签所在位置,所以放对位置很关键,影响布局;

        ②在标签中可以使用<c:param name=""></c:param>标签来传递参数,不过我没有试验过;

        ③你可能注意到了,我在标签中写的地址是直接的相对于项目根路径的地址,而不是相对于服务器访问根路径的地址,这个具体的原理我也没有搞清楚;

        ④虽然我是加载一个页面,但是完全可以用在所请求的url结果是任意文本的情况,也有可能只是请求了,没有返回内容;

4、后记

        这篇文章本打算很久之前就该写的,但是由于一直没有去深入的研究这个标签的用法,又很想将它很详细的写出来,所以就一拖再拖,直到今天,我觉得我不会再去深究它的用法和原理以及与其他类似标签的区别了,如果再不写以后估计就忘了,所以就写了下来,还有很多不足之处,还望大家不吝赐教。

        enjoy

© 著作权归作者所有

共有 人打赏支持
阿信sxq

阿信sxq

粉丝 228
博文 83
码字总数 73652
作品 1
成都
后端工程师
私信 提问
加载中

评论(2)

阿信sxq
阿信sxq

引用来自“lianruanjian”的评论

谢谢楼主,我这个问题两三天都没有解决,现在终于解决了。。。
能帮到你,我很开心
lianruanjian
lianruanjian
谢谢楼主,我这个问题两三天都没有解决,现在终于解决了。。。
关于spring 3.0.5的 <mvc:resources mapping="***" location="***">标签的使用

spring mvc 的<mvc;resources mapping="*" location="">标签是在spring3.0.4出现的,主要是用来进行静态资源的访问。在spring3.0.4出来的时候spring还没有更新其schema所以在配置文件中有可能......

随智阔
2014/03/27
0
0
一个简单的Spring MVC小例子,为什么总是报404错误

web.xml代码如下: spring-mvc-study2 springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.xml 1 springmvc / index.jsp sp......

FlashRui
2017/01/17
346
1
Spring笔记10---Spring MVC

本节主要讲解SpringMVC. :) =============================== 浏览器请求->DispatcherServlet->MVC控制器(数据交互,产生信息Model)+View名称 ->DispatcherServlet->查询视图解析器->视图渲......

强子哥哥
2015/01/14
0
0
连载:JavaEE极速全注解驱动开发(一)----Spring MVC 3.x

笔者接触JavaEE开发数年有余,从Struts1、Webwork、Struts2、SpringMVC3一路用过来,JavaEE的XML配置是最令人头疼的,随着工程逻辑复杂度的上升,XML文件变得越来越难以维护,这也是JavaEE最...

风之传说
2012/12/10
0
2
Spring MVC 教程,快速入门,深入分析

资源下载: SpringMVC教程快速入门_深入分析V1.1.pdf SpringMVC核心配置文件示例.rar 作者:赵磊 博客:http://elf8848.iteye.com 目录 一、前言 二、spring mvc 核心类与接口 三、spring mv...

Idiot_s_Sky
2014/02/05
0
1

没有更多内容

加载失败,请刷新页面

加载更多

【机器学习PAI实战】—— 玩转人工智能之商品价格预测

摘要: 我们经常思考机器学习,深度学习,以至于人工智能给我们带来什么?在数据相对充足,足够真实的情况下,好的学习模型可以发现事件本身的内在规则,内在联系。我们去除冗余的信息,可以...

zhaowei121
7分钟前
0
0
Spring拓展接口之FactoryBean,我们来看看其源码实现

是什么 FactoryBean的源码比较简单,大家可以细读下其注释,我做了简单的如下翻译 /** * 实现此接口的bean不能用作普通bean。此bean暴露的对象是通过getObject()创建的对象,而不是它自身...

java菜分享
11分钟前
0
0
Pod在多可用区worker节点上的高可用部署

一、 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可用...

阿里云官方博客
17分钟前
0
0
深入理解 Hive 分区分桶 (Inceptor)

分区是hive存放数据的一种方式。将列值作为目录来存放数据,就是一个分区。这样查询时使用分区列进行过滤,只需根据列值直接扫描对应目录下的数据,不扫描其他不关心的分区,快速定位,提高查...

hblt-j
25分钟前
0
0
数据结构

什么是数据结构 1、数据 数据是描述客观世界的数字、字符以及一切能够输入到计算机中,并且能够被计算机程序处理的符号集合。简言之,数据就是计算机加工处理的原料,是信息的载体。 2、数据...

stars永恒
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部