1.JSTL表达式语言负责处理表达式和文字。表达式由${ }字符所包围。
2.include指令和jsp:include动作 :include指令是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的
时间是在页面被请求的时候。jsp:include动作的文件引入时间决定了它的效率要稍微差一点,而且被引用文件不能包含某些JSP代码(例如不
能设置HTTP头),但它的灵活性却要好得多。
3.RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器
地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可
以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助
于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 HttpServletResponse.sendRequest()方法。
4.自定义标签:
iterateTag.java
public class iterateTag extends BodyTagSupport{
private String name;//在pageContext中标识的一个属性名
private Iterator it;//要迭代的对象
private String type;//it中对象的类型
Collection collection;
public void setCollection(Collection collection){
if(collection.size()>0)
it=collection.iterator();
}
//----标签开始时调用此方法-------
public int doStartTag(){
if(it==null) return SKIP_BODY;
else return continueNext(it);
}
//----标签体执行完后调用此方法----
public int doAfterBody(){
return continueNext(it);
}
//----标签结束时调用此方法-------
public int doEndTag(){
try{
if(bodyContent!=null)
bodyContent.writeOut(bodyContent.getEnclosingWriter());
}catch(Exception e){
System.out.println(e);
}
return EVAL_PAGE;
}
//----迭代----
protected int continueNext(Iterator it){
if(it.hasNext()){
pageContext.setAttribute(name,it.next(),PageContext.PAGE_SCOPE);
return EVAL_BODY_AGAIN;
}else return SKIP_BODY;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
/**
* @return Returns the collection.
*/
public Collection getCollection() {
return collection;
}
}
IterateTEI.java //TagExtraInfo用于提供编译时标签的额外信息,为脚本变量定义的标签额外信息类必须在TLD中声明,这样元素tei-
class将会如下:<tei-class>XXXX.XXXXTei</tei-class>
public class IterateTEI extends TagExtraInfo {
public IterateTEI() {
super();
}
public VariableInfo[] getVariableInfo(TagData data){
return new VariableInfo[]{
new VariableInfo(data.getAttributeString("name"),
data.getAttributeString("type"),
true,VariableInfo.NESTED)
};
}
}
XXX.tld 中的部分配置:
<!-- iterateTag-->
<tag>
<name>iterateTag</name>
<tag-class>com.format.iterateTag</tag-class>
<tei-class>com.format.IterateTEI</tei-class>
<body-content>JSP</body-content>
<attribute>
<name>collection</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>name</name>
<required>true</required>
</attribute>
<attribute>
<name>type</name>
<required>true</required>
</attribute>
</tag>
jsp调用:
<%//----------设置一个ArrayList对象的初始值----------
ArrayList testCol=new ArrayList();
testCol.add("abc");
testCol.add("bcd");
testCol.add("add");
request.setAttribute("testCol",testCol);
%>
<csai:iterateTag name="testColOne" collection="<%=testCol%>" type="String">
输出一个值:out.println("testColOne")<br>
</csai:iterateTag>
分享到:
相关推荐
yelp_review_full_csv数据集,是Yelp为了学习目的而发布的一个开源数据集。它包含了由数百万用户评论,商业属性这是一个非常常用的全球NLP挑战数据集。训练集总共650,000,测试集50,000,一共5个分类,每一种各有130...
5. 模拟与混合信号电路验证:对于包含模拟或混合信号部分的芯片,确保其功能和性能满足要求。 6. 制造工艺兼容性:确认设计与制造工艺的兼容性,避免生产过程中的问题。 7. 反馈修正:根据前几轮流片的反馈,对设计...
### 基于Code_Collaborator和Review_Board的代码审查工具试用对比...而Review_Board则以其低成本和开源特性受到青睐,适合预算有限或需要自定义扩展功能的团队。最终选择哪款工具应根据团队的具体需求和预算来决定。
1. Quick_Help_FBX_Review_1.2_Win_64bit.chm:这是一个帮助文件,包含了FBX Review 1.2版本的Windows 64位版的详细使用指南。CHM(Compiled HTML Help)是Microsoft提供的一个标准帮助文件格式,用户可以通过它快速...
标题“review_polarity”指的是一个专门用于情感分析的机器学习语料库,它包含了大量文本数据,这些数据被标记为正面或负面,以帮助训练模型识别文本的情感倾向。语料库是机器学习中的一个重要组成部分,它是模型...
5. `src`或`open_review_abstract_bot`目录:通常包含项目的源代码,其中可能有`__init__.py`文件,表明这是一个Python包。 6. 测试文件(如`tests`目录):用于验证代码功能的单元测试或集成测试。 7. 可能还有示例...
《PyPI官网下载:探索亚马逊产品评论爬虫库——amazon_product_review_scraper-0.6》 在Python的生态系统中,PyPI(Python Package Index)是最重要的资源库,它为开发者提供了海量的开源软件包和模块,使得开发变...
Harvard_Business_Review_-_05_2021
在解压后的文件列表中,“Autodesk_FBX_Review_Win_64bit”可能包含了安装程序或者可执行文件,用户只需运行这个程序就可以安装或启动FBX Review工具。安装过程中,通常会检查系统环境,确认是否满足运行需求,然后...
标签"FBX Review Autodesk 1.4.1"进一步强调了软件的核心功能——FBX格式的支持,以及其与Autodesk公司的关联。 在压缩包子文件的文件名称列表中,"Autodesk_FBX_Review_Win_64bit"很可能是安装程序的主文件,用户...
A_Brief_Didactic_Theoretical_Review_on_Convolutional_Neural_Networks, Deep Belief Networks and Stacked Auto-Encoders MSc.Rômulo Fernandes da Costa
代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应 用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必 要的风险。
标题"PSS_20_Public_Review_Draft_20201118_PSS_SIMULATION_"中的"PSS"通常代表“电力系统稳定器”(Power System Stabilizer),这在电力工程领域是一个重要的概念。电力系统稳定器是一种辅助控制设备,用于改善...
37 Review_Day_6
41 Review_for_closing
25 Review_week_2
31 Review_Day_5
Solutions_Review_Business_Intelligence_Buyers_Guide_VI27
Solutions_Review_Business_Intelligence_Buyers_Guide_VI27.pdf
【标题】"review_NEW_electricvehicle_" 暗示了我们即将探讨的是关于新能源电动车(Electric Vehicles, EVs)的最新趋势与评测。这可能是对电动汽车行业的深度分析,包括技术发展、市场动态、政策影响以及消费者评价...