zoukankan      html  css  js  c++  java
  • 使用<jsp:include>,不想写死URL,动态生成URL的解决的方法

    JSP中文件包括有2种方式,静态包括和动态包括。

    静态包括使用<%@ include file="" %>。动态包括使用<jsp:include page="" />

    本文不打算介绍这2种方式的差别和使用场景,主要关注page和file属性的路径问题。

    假设事先知道被包括页面的url,那么直接写死到page或file属性中就可以。这样的写死url的方式。没有什么不好,可是很不灵活,不能满足动态生成url的需求。

    考虑这样的场景。A.jsp訪问B.jsp,传递一个id參数值,B.jsp须要依据id的值。包括不同的页面。当然,我们能够通过n多的if-elseif来实现,但这样的方式不灵活,有些时候甚至是根本不可能的事。

    假设想要实现动态包括。最简单也是最合理的解决方案例如以下:

    <jsp:include page="<%=request.getContextPath()%>/message/<%=request.getParameter("id")%>/.targetjsp"></jsp:include>

    可是这样的方式不行,容器不会解析page中的jsp脚本。但经过试验,

    <jsp:include page="<%=request.getParameter("id")%>"></jsp:include> 这样的方式。是可以正常解析參数值的。

    于是我们能够得出结论:page属性要么全然是写死的常量URL,要么全是动态的java脚本,2种方式不能混搭

     

    <% String urlPath = "/message/plugins/smsplugin_" + request.getParameter("type")+ "/add.jsp";%>
    <jsp:include page="<%=urlPath %>"></jsp:include>

    像这样的方式。可以借助java脚本的灵活性。实现随意复杂的推断逻辑。

    參考资料:http://dangry.iteye.com/blog/868422/

     

  • 相关阅读:
    mongodb 的安装历程
    从C的声明符到Objective-C的Blocks语法
    #译# Core Data概述 (转)
    避免在block中循环引用(Retain Cycle in Block)
    GCD和信号量
    Blocks的申明调用与Queue当做锁的用法
    [译]在IB中实现自动布局
    清理Xcode的技巧和方法
    SVN的Status字段含义
    iOS应用崩溃日志揭秘2
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6999919.html
Copyright © 2011-2022 走看看