栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何避免在我的JSP页面中使用scriptlet?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何避免在我的JSP页面中使用scriptlet?

我认为,如果您亲眼看到它实际上完全可以 不用 scriptlet 来完成,那么它会有所帮助。

这里有一个1对1重写与在其他的帮助JSTL(刚落

jstl-1.2.jar
/WEB-INF/lib
)核心和功能的taglib:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %><html><head>  <title>My Events - <decorator:title /></title>  <link href="${pageContext.request.contextPath}/assets/styles.css" rel="stylesheet" type="text/css" /></head><body><div >  <a     ${fn:contains(pageContext.request.requestURI, '/events/') ? '' : ''}    href="${pageContext.request.contextPath}/events/Listing.action">Events</a>  <a     ${fn:contains(pageContext.request.requestURI, '/people/') ? '' : ''}    href="${pageContext.request.contextPath}/people/Listing.action">People</a></div><div >  <c:if test="${fn:contains(pageContext.request.requestURI, '/events/')}">    <a href="Listing.action">List of Events</a>    |<a href="New.action">New Event</a>  </c:if>  <c:if test="${fn:contains(pageContext.request.requestURI, '/people/')}">    <a href="Listing.action">List of People</a>    |<a href="New.action">New Person</a>  </c:if>  &nbsp;</div>

这是一个更优化的重写,请注意,我曾经

c:set
“缓存”表达式结果以供重用,并且我使用HTML
<base>
标记来避免将上下文路径放置在每个链接中(只需将网页中的所有相对URL都与之相对-不用前导削减!):

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %><c:set var="isEvents" value="${fn:contains(pageContext.request.requestURI, '/events/')}" /><c:set var="isPeople" value="${fn:contains(pageContext.request.requestURI, '/people/')}" /><html><head>  <title>My Events - <decorator:title /></title>  <base href="${pageContext.request.contextPath}">  <link href="assets/styles.css" rel="stylesheet" type="text/css" /></head><body><div >  <a ${isEvents ? '' : ''} href="events/Listing.action">Events</a>  <a ${isPeople ? '' : ''} href="people/Listing.action">People</a></div><div >  <c:if test="${isEvents}">    <a href="Listing.action">List of Events</a>|<a href="New.action">New Event</a>  </c:if>  <c:if test="${isPeople}">    <a href="Listing.action">List of People</a>|<a href="New.action">New Person</a>  </c:if>  &nbsp;</div>

如果您在应用程序范围内收集所有这些“硬编码”值(例如

events
和)
people
并链接文本,
Map
并在每个JSTL下使用
<c:forEach>
以显示选项卡,则实际上可以进一步优化。

对于您的 实际 问题,您可以通过在webapp的中添加以下条目来 禁用
脚本(并获得有关使用脚本的运行时错误)

web.xml
。可能会发现被监督的脚本。

<jsp-config>    <jsp-property-group>        <url-pattern>*.jsp</url-pattern>        <scripting-invalid>true</scripting-invalid>    </jsp-property-group></jsp-config>

要了解有关EL的更多信息,请查看Java
EE教程第二部分第5章
。隐EL对象,例如

${pageContext}
被描述在这里。要了解有关JSTL的更多信息,请查看Java
EE教程第二部分第7章。注意,JSTL和EL是两个独立的东西。JSTL是
标准的taglib, 而EL仅允许以编程方式访问后端数据。尽管它通常在JSTL之类的标记库中使用,但也可以在模板文本中独立使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号