barriers / 阅读 / 详情

关于JSP中JSTL标签库的问题!!!

2023-07-12 19:07:10
共2条回复
陶小凡
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!
<%@ page taglib prefix="c" uri="http://java.s*.com/jsp/jstl/core"%> 这个不是这么写的,应该是:
<%@ taglib prefix="c" uri="http://java.s*.com/jsp/jstl/core"%>
Chen
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!
什么是标签库?
JSP标签库(也称自定义标签库)可看成是一种通过JavaBean生成基于XML的脚本的方法。从概念上讲,标签就是很简单而且可重用的代码结构。比方说,在我们最新发布的JSPKit(在JSP Insider内)中,使用XML标签实现了对XML文档的轻松访问。请看以下的清单A。
清单A:执行XML/XSL 转换的示例标签及其所在的HTML页面
<%@ taglib uri="http://www.j********.com/jspkit/JAXP" prefix="JAXP"%>
<JAXP:TransformerTag>
<JAXP:XMLFile>c:/xml/example.xml</JAXP:XMLFile>
<JAXP:XSLFile>c:/xml/example.xsl</JAXP:XSLFile>
</JAXP:TransformerTag>

以上的示例使用了简单的标签来访问处在幕后的更强大代码,标签部分的语句首先装载了一个XML文件,然后应用了一个XSL文件来将XML文件中的内容转换成某个表现格式,并发送给客户端,这一切仅仅只是用了一个很简单的标签。定制标签使得JSP项目中很容易创建重用的开放源代码模块,而你所需要的只是标签库和它的文档说明。

标签库的重要特性

1.易于安装在多个项目上
标签很容易从一个JSP项目迁移到其他项目。一旦建立了一个标签库,则只需要将所有的东西打包为一个JAR文件,你就可以在任何的JSP项目中重新使用。因为标签可以重新使用,标签库可以轻松地用于你自己的项目,所以标签库越来越通行。目前,最好的标签资源可以在J*****.com这个站点找到。

2.扩展JSP 标签库可以具备JSP规范(JSP 1.2)中的任何特性和功能,你可以无限制地扩展和增加JSP的功能,而无需要等待下一版本JSP的出现。例如,你对JSP的include调用不太满意。你可以建立自己的include标签,该标签执行的是你自己的规范。

3.容易维护

标签库使得JSP的web应用程序非常易于维护,原因有:
(1)标签应用简单,对任何人而言都很容易使用、易于理解。
(2)所有的程序逻辑代码都集中放在的标签处理器和JavaBeans中。这意味着你在升级代码时,无需要对每个使用该代码的页面进行修改,你只需要修改集中的代码文件便可。
(3)如果需要加入新的功能,你也无需修改任何已经存在的页面,可以在标签中加入额外的属性,从而引进新的行为,而其它旧的属性不变,这样所有旧的页面还可以正常工作。 例如你有一个让所有文本变蓝的标签:
<BlueText>My Text</BlueText>
但在后来项目中,你又想让蓝色变暗。你可以保留原有的标签,只要为其增加一个新的属性:shade ,如下所示:
<BlueText shade="teal">My Text</BlueText>
所有旧的标签仍然可以产生蓝色的文本,但现在你可以使用同一标签来产生变暗的蓝色文本了。
(4)标签提升了代码的重用性。那些经过多次测试和使用的代码肯定具有更少的bug。所以,使用定制标签的JSP页面也同样具有更少的缺陷,维护起来自然方便多了。

4.快速的开发时间
标签库提供一个简单的方式来重用代码。在服务器端的语言中,其中一个标准的重用代码方式是使用模板。相对于使用模板库,标签库是一个更好的解决办法。使用模板库,你必须为每个项目修改模板或者且建立严格的界面,而标签库则没有这些限制,并且拥有所有面向对象的好处,可以做到灵活和更有扩展性,而且,通过重用代码,你可以花费更少的时间来做开发,更多的时间可以用在设计你的web应用上。标签库的接口也很简单,非常容易做插入、使用和调试。

标签的组成结构

虽然标签库非常易于使用,不过要建立一个标签库的内部实现机制还是颇复杂的,起码要比建立一个简单的JavaBean复杂。这个复杂是来自于标签库是由几部分构成的。不过,你只需要掌握了Java和JSP的知识就够了。
一个简单的标签由下面的元素构成:
1.JavaBean:为了得到Java与生具来的面向对象的好处,可重用的代码应该放到一个独立的代码容器中,也就是JavaBean。这些JavaBeans并不是标签库必不可少的一部分,但它们是标签库用来执行所分配任务的基础代码模块。
2.标签处理器:标签处理器是标签库的真正核心。一个标签处理器(tag handler)引用它所需要的任何外部资源(JavaBean)并且负责访问JSP页面的信息(PageContext对象)。而JSP页面则把页面上设置的标签属性和标签体中的内容都传递给标签处理器,当标签处理器完成其处理过程后,它就会把处理后的输出结果回送给JSP页面做进一步处理。
3.标签库描述符(TLD文件):这是一个简单的XML文件,它记录着标签处理器的属性、信息和位置等信息。JSP容器通过这个文件来得知从哪里及如何调用一个标签库。
4.Web站点的web.xml文件:这是Web站点的初始化文件,在这个文件中,需要定义了Web站点中用到的自定义标签,以及用来描述每个自定义标签的tld文件。
5.发布文件(WAR或JAR文件):如果你想重用自定义标签的话,你需要一个方法来将它由一个项目迁移到其他项目中去。将标签库打包为一个JAR文件是一个简单而且有效的方式。
6.JSP页面上的标签库声明:要在JSP页面中的使用某个自定义标签的话,需要使用标签库标示符在页面上进行声明。

看来要做的工作很多,刚开始用的时候当然会有点棘手,不过其实并不是很难。它的要点并不在于编码,而是在于如何将各部分正确地组织起来。这种层次性的结构是很重要的,它令标签的使用灵活和更容易转移。更重要的事,这些层次可以让整个建立标签库的过程都能通过JSP IDE(JSP的集成开发环境)自动完成。JSP IDE更可以自动完成创建定制标签的大部分工作,而你自己则只需要负责建立代码和标签处理器。

(注意:一个标签处理器仅定义一个自定义标签;一个标签库是几个处理相同任务的标签处理器的集合)

建立你的第一个标签

以下将一步一步地教你如何建立自定义的标签,具体的例子是扩展JSP,令它拥有自己的HTML编码功能。这个功能将所有的<和>字符用 HTML代码来代替。它可以很容易地扩展为做其它的编码处理。为了简化,这个例子只解释了建立自定义标签的基本要素。

创建JavaBean

代码中的任何可重用部分都应该放到一个JavaBean中。这一点是很重要的。这样你就可以在其他项目中重用这些代码了。由于任何放置在标签处理器内的代码在标签外都是不可以重用的,因此将可重用的代码部分独立开来是很重要的。在这个例子总,为HTML编码的逻辑是常用的,因此放到JavaBean中,请参看清单B
清单B:HTML编码JavaBean
/* HTML_Format.java */
public class HTML_Format extends Object implements java.io.Serializable {

/** 创建新的HTML_Format */
public HTML_Format() {}

/** 将一个字符串中所有的所有 < 和 > 字符用响应的HTML编码代替 */
public String HTML_Encode(String as_data)
{
int li_len = as_data.length();

/*string buffer的长度要比原来的字符串长*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10));

/* 循环替换全部的< 和 > 字符 */
for( int li_count = 0 ; li_count < li_len ; li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
}

return( lsb_encode.toString() );
}
}

创建标签处理器
标签处理器的代码请参看清单C:
清单C:HTML编码标签处理器
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class HTML_FormatTag extends BodyTagSupport
{
/* 1) 在标签末将会调用这个函数 */
public int doEndTag() throws JspTagException
{
try
{ /* 2)得到标签中的文本 */
BodyContent l_tagbody = getBodyContent();
String ls_output = "";

/* 3)如果标签体有文本,就处理它 */
if(l_tagbody != null)
{ HTML_Format l_format = new HTML_Format();
/* 3a) 将标签体的内容转换为一个字符串 */
String ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4)将结果写回到数据流中 */
pageContext.getOut().write(ls_output.trim());
}
catch (IOException e)
{ throw new JspTagException("Tag Error:" + e.toString());
}

/* 让JSP继续处理以下页面的内容 */
return EVAL_PAGE;
}
}

这个处理很简单,它包括有:
1.读入位于开始和结束标签间的文本
2.调用html编码函数
3.将结果返回到JSP页面。

创建标签描述符

我们需要描述自定义标签以让系统知道如何处理。该描述文件的后缀为.tld,TLD文件通常就以标签处理器命名,并存放在“/WEB-INF/”目录之下。请参看清单D。
清单D:HTML编码标签描述器
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.s*.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<TAGLIB>
<TLIBVERSION>1.0</TLIBVERSION>
<JSPVERSION>1.1</JSPVERSION>
<SHORTNAME>HTML_FormatTag</SHORTNAME>
<URI></URI>
<INFO>HTML Encoding Tag </INFO>

<TAG>
<NAME>HTMLEncode</NAME>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<INFO>Encode HTML</INFO>
</TAG>

</TAGLIB>

更新Web XML文件

现在可以告诉JSP容器如何使用标签库了。为此要修改web.xml文件,具体说来是要在其中加入一个taglib的项目来注册该标签库,并为标签分配一个URI。URI是Web站点上唯一应用于这一特定标签的索引。由于标签今后还可能用在不同的Web站点上,所以你最好采用完整的URL和/或者包名字(package name)来保证这一唯一性。这个例子是简化了,示例代码请参看清单E。
清单E:修改web.xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.s*.com/j2ee/dtds/web-app_2.2.dtd">

<WEB-APP>

<TAGLIB>
<TAGLIB-URI>
HTMLEncode
</TAGLIB-URI>
<TAGLIB-LOCATION>
/WEB-INF/HTML_FormatTag.tld
</TAGLIB-LOCATION>
</TAGLIB>

</WEB-APP>

使用新的标签

自定义的标签设置好后,就可以用在你的JSP页面上了。要做到这一点,只需要在页面上使用taglib指示命令声明所要采用的标签即可。标签通过其唯一的 URI被索引,然后被分配给一个名字空间前缀(prefix)。这一前缀并没有什么特别的意义,只要它不与其它的名字空间冲突便可,可以任意。请参看以下的清单F和G。

清单F:在一个JSP页面上使用HTML编码标签

<%@ taglib uri="HTMLEncode" prefix="Examples" %>
<PRE>
<?XML:NAMESPACE PREFIX = Examples /><Examples:HTMLEncode>
< Hello , Simple sample >
</Examples:HTMLEncode>
</PRE>

清单G:范例代码的输出
< Hello , Simple sample >
which displays as:
< Hello , Simple sample >

通过这个标签,我就将该页面的所有代码编码了。所有的自定义标签都是在服务器上处理的。这意味着你将不会在输出的页面上看到自定义的标签。

正如你所看到的那样,建立标签并非难事。最麻烦的是学习标签处理器的整个细节。这是一个很强大的功能,我们不过是触及了皮毛。由于这一过程需要采取的步骤很多,所以刚入门的JSP程序员可能在建立标签的时候会觉得很困惑。

结论

标签库是JSP最重要的特性之一,它还处在不断的发展中。它的确是一个新事物,因此还没有被广泛采用,不过自定义标签库已经剥去了它的神秘面纱,越来越多的开发者也开始关注和使用它了。在2001年末,可预料标签库将是许多JSP项目中的一个很常见的特性。

在这篇文章中只简要地讨论了标签库的好处。标签库实际上还有许多其它强大的功能。标签库促使JSP开发进入了前所未有的新天地。对JSP开发人员来说这确实是一种很令人振奋的新技术,因为他们得到了一个可将JSP转到各个应用并且建立任何类型web应用的工具。标签库让JSP变成了最丰富、最具动态开发能力的、强大的Web编程环境。它的功能只受我们的想象和创造力限制。

相关推荐

如何用jsp做个树形下拉框??

我的采用的是javabena+jsp 一个javabean public ArrayList selectCourseInfo()throws Exception {//下拉框显示课程信息 ArrayList list = new ArrayList(); try { db.open(); ResultSet rs = db.select("select * from CourseInfo"); while (rs.next()) { list.add(new CourseInfo(rs.getInt(1), rs.getString(2),rs.getString(3))); } } catch (Exception e) { e.printStackTrace(); } finally { db.close(); } return list; } 然后在jsp中调用 <tr><td>课 程:<select name="course"> <%try{ ArrayList list=m.selectCourseInfo(); if(list.isEmpty()){ out.println("没有数据显示"); } for(int i=0;i<list.size();i++){ CourseInfo c=(CourseInfo)list.get(i);%> <option><%=c.getName()%></option> <%}} catch(Exception e){} %></select> </td></tr> 这样就可以动态的显示了
2023-07-12 13:26:421

如何手动调用TagSupport的release方法

如何手动调用TagSupport的release方法 求解
2023-07-12 13:26:551

jsp自定义标签 tag属性有哪些

p自定义标签需要引入两个jar 分别是javax.servlet.jsp.jarjavax.servlet.jar2建立tld文件,建议目录为WEB-INF下,tld文件结构为下图,uri为整个标签库的名称,可以理解为java类,每一个tag分支,可以理解为java类中的每一个方法,我们在调用jsp自定义标签的时候就和调用java类一样,通过类找方法。tag分支重点要讲tag-class,该属性为该标签方法所指向的java类。attribute为参数,相信属性看步骤三附图。3关于tld文件属性的说明,可以参考下图4将tld文件引入web.xml中,建议名称与tld文件标签库名称一致5编写jsp自定义标签类,该类继承TagSupport类,我们需要做的就是重写doStartTag,我们可以通过JspWriter将后台处理的东西直接输出到jsp页面。当然了,输出的内容在实际操作中肯定经过了非常复杂的逻辑。
2023-07-12 13:27:021

在jsp页面这样配置url,用到什么技术

javascript 俗称js,官方称emcascript
2023-07-12 13:27:124

网页编程里学习标签有什么作用?

网页语义化,有助于SEO~也可以更加清晰客观
2023-07-12 13:27:192

SimpleTagSupport都需要导入什么包和类

您好,很高兴为您解答。看下这个:http://bbs.csdn.net/topics/60457204如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】希望我的回答对您有所帮助,望采纳!
2023-07-12 13:27:261

是个什么标签

楼主您好这应该是自定义标签了一般在webinf下有tld文件里面找然后里面会有这个标签属于哪个类,有哪些属性。建议楼主查下自定义标签,继承tagsupport类,然后doStartTag,doEndTag中转义成要输出的正常html标签
2023-07-12 13:27:341

Myeclipse编写JSP500错误

把 struts2 的过滤器的url-pattern改下在web.xml中 改成 <url-pattern>/*</url-pattern>
2023-07-12 13:27:413

jsp运行时错误,代码505?

PName=trim(request("name")) PType=request("type") PMoney=request("money") PInfo=request("info") PContact=trim(request("Contact")) PCategory=trim(request("Category")) set rsZW=server.createobject("adodb.recordset") sqltext="select * from [Product] where ID="&request("id") rsZW.open sqltext,conn,1,3 rsZW("Product_name")=PName rsZW("Product_type")=PType rsZW("Product_money")=PMoney rsZW("Product_info")=PInfo rsZW("Product_Contact")=PContact rsZw("Product_Category")=PCategory rsZW("Product_person")=Session("User") rsZW.update rsZW.close conn.close response.write "<script language=JavaScript> {window.alert("此客户跟踪成功!");opener.parent.main.location.href="ProductInfo.asp";window.close();}</script>" response.end else set rs=server.createobject("adodb.recordset") sqltext="select * from [Product] where Id="&request("Id")&"" rs.open sqltext,conn,1,1 End If %>
2023-07-12 13:27:492

JSP如何将HTML的表单数据提交生成一个XML文件

    使用JavaServer Pages有三种不同的方法用于处理XML文档,每种方法都有利于提高分离页面代码与XML数据的水平,有利于简化开发网页的复杂度并且改善提高组件与页面代码的可重用性。  1.JSP可以读取XML文件并且基于这些数据执行动作。例如:一应用程序可以读取具有某些特定结构的数据的XML文件。  2. JSP可以创建XML文件以发送数据到客户程序或其它的应用程序。 JSP可以转换XML文件,这个变换可以是交给XSLT处理,由JSP作为控制器,或者通过非XSLT解决方案来完成。 在这两种情况下,JSP的作用都是读取XML文件,转换它并生成一个输出。  因为JSP包含内嵌的Java程序,所以它可以直接地调用一个分析程序来读/写xml数据。 这是非常不合理的方法,因为数据和代码逻辑并不能很好的被分离开。 另外,这样的程序也很难读得懂  3. 每个标记都相当于一个相同名称的Java类。 这个类必须实现TagSupport接口,包含捕获事件触发器方法作为处理这个页面的JSP引擎。 当它第一次遇到这个标记的时候,引擎就会调用doStartTag ()方法。 可以使这个方法为空或者当需要的时候才执行应用程序逻辑。 当该方法返回SKIP_BODY时,那么引擎跳过这个标记体。 当它返回EVAL_BODY_INCLUDE时,引擎将会处理这个标记以及它的子标记。 类似地,JSP引擎在分析了结束标记之后就会调用doEndTag ()方法。 doAfterBody ()方法让你可以在引擎处理元素体之后执行动作,但是必须在doEndTag ()方法作用之前。
2023-07-12 13:27:561

maven pom.xml 的parent标签报错是什么原因

用Eclipse创建一个maven工程,网上有很多资料,这里不再啰嗦。右键maven工程,进行更新在弹出的对话框中勾选强制更新,如图所示4稍等片刻,pom.xml的红叉消失了。。
2023-07-12 13:28:174

在eclipse新建类时,想继承的父类找不到应该怎么办?

servlet.jar这个需要导入这个jar包的
2023-07-12 13:28:363

java.lang.NullPointerException

您这就一堆异常是怎么个问法呢?
2023-07-12 13:28:465

logfactory什么jar

Logger来自log4j自己的包。如果用Logger.getLogger,需要一个log4j的jar包,用此方式你只能依靠log4j: LogFactory来自common-logging包。如果用LogFactory.getLog,你可以用任何实现了通用日志接口的日志记录器替换log4j,而程序不受影响。apache的common-logging包是通用日志接口,通过这个中间层,你可以随便指定到底用哪个日志系统。增加系统的灵活性。若log4j它不存在, commons-logging 会另行选择其它的日志实现类。 这样保证了程序中不一定要使用log4j这个日志文件了 增强灵活性的理由: 1)首先在 classpath 下寻找自己的配置文件 commons-logging.properties ,如果找到,则使用其中定义的 Log 实现类; 2) 如果找不到 commons-logging.properties 文件,则在查找是否已定义系统环境变量 org.apache.commons.logging.Log ,找到则使用其定义的 Log 实现类; 3) 否则,查看 classpath 中是否有 Log4j 的包,如果发现,则自动使用 Log4j 作为日志实现类; 4) 否则,使用 JDK 自身的日志实现类( JDK1.4 以后才有日志实现类); 5) 否则,使用 commons-logging 自己提供的一个简单的日志实现类 SimpleLog ; 为了简化配置 commons-logging ,一般不使用 commons-logging 的配置文件,也不设置与 commons-logging 相关的系统环境变量,而只需将 Log4j 的 Jar 包放置到 classpash 中就可以了。这样就很简单地完成了 commons-logging 与 Log4j 的融合。 根据不同的性质,日志信息通常被分成不同的级别,从低到高依次是:“调试( DEBUG )”“信息( INFO )”“警告( WARN )”“错误(ERROR )”“致命错误( FATAL )”。 基于common-logging的运行方式: package org; import org.apache.commons.logging.Log; import org.apache.log4j.Logger; public class Test extends TagSupport{ public static Log log=LogFactory.getLog(Test.class); public static void test() { log.debug("111"); log.info("125"); log.warn("485"); log.error("error"); } public static void main(String[] a) { Test.test(); } } 基于log4j的运行方式 import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class TestLog4j { static Logger logger = Logger.getLogger(TestLog4j.class); public static void main(String args[]) { PropertyConfigurator.configure("log4j.properties"); logger.debug("Here is some DEBUG"); logger.info("Here is some INFO"); logger.warn("Here is some WARN"); logger.error("Here is some ERROR"); logger.fatal("Here is some FATAL"); } } ----------- commons-logging 仅仅对 Log4j( 当然还包括其它 LOG 实现 ) 作了一层包装,具体的日志输出还是在内部转交给身后的 Log4j 来处理,还有log4j会默认的去classes目录下去寻找log4j.properties 文件
2023-07-12 13:29:191

jsp页面中为什么我一用s标签就出现下面的错误 ,不用的话就没事

你的过滤器配置有问题
2023-07-12 13:29:278

如何写一个从数据库直接得到数据的自定义标签,然后在jsp页面用标签把数据显示出来。

23654412598456235356555454525565544266858975659695414125635255698555654456
2023-07-12 13:29:445

什么是自定义标签具体的分类

  自定义标签是可重用的元件程式码,并且允许开发人员为复杂的操作提供逻辑名称。那么你对自定义标签了解多少呢?以下是由我整理关于什么是自定义标签的内容,希望大家喜欢!   自定义标签的概念   一般我们说自定义标签是指JSP自定义标签。自定义标签在功能上逻辑上与javaBean 类似,都封装Java 程式码。  JSP开发人员使用标签库建立标签.标签库是按照功能或实现进行分组的自定义标签的 *** 。   网路上常见的CMS内容管理系统都是采用模板的形式来实现,基本上所有的CMS系统都有一套自己的模板标签书写方法,简称自定义标签。   1.标签Tag:   标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP档案支援多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的   2.标签库Tag library:   由一系列功能相似、逻辑上互相联络的标签构成的 *** 称为标签库。   3.标签库描述档案Tag Library Descriptor:   标签库描述档案是一个XML档案,这个档案提供了标签库中类和JSP中对标签引用的对映关系。它是一个配置档案,和web.xml是类似的。   4.标签处理类Tag Handle Class:   标签处理类是一个Java类,这个类继承了TagSupport或者扩充套件了SimpleTag介面,通过这个类可以实现自定义JSP标签的具体功能   自定义标签的分类   自定义JSP标签   1. <% @ taglib prefix=”someprefix” uri=”/sometaglib” %>   为了使到JSP容器能够使用标签库中的自定义行为,必须满足以下两个条件:   1从一个指定的标签库中识别出代表这种自定义行为的标签   2找到实现这些自定义行为的具体类   第一个必需条件-找出一个自定义行为属于那个标签库-是由标签指令的字首Taglib Directive"s Prefix属性完成,所以在同一个页面中使用相同字首的元素都属于这个标签库。每个标签库都定义了一个预设的字首,用在标签库的文件中或者页面中插入自定义标签。所以,你可以使用除了诸如jsp,jspx,java,servlet,sun,sunw它们都是在JSP白皮书中指定的保留字之类的字首。   uri属性满足了以上的第二个要求。为每个自定义行为找到对应的类。这个uri包含了一个字串,容器用它来定位TLD档案。在TLD档案中可以找到标签库中所有标签处理类的名称   2. 当web应用程式启动时,容器从WEB-INF资料夹的目录结构的META-INF搜寻所有以.tld结尾的档案。也就是说它们会定位所有的TLD档案。对于每个TLD档案,容器会先获取标签库的URI,然后为每个TLD档案和对应的URI建立对映关系。   在JSP页面中,我们仅需通过使用带有URI属性值的标签库指令来和具体的标签库匹配。   CMS自定义标签   CMS的自定义标签格式大同小异,以动易CMS为例,标签写法如下:   {$Skin_CSS}   {$MenuJS}   {$ShowLogo180,60} 自定义标签的分类
2023-07-12 13:30:001

java编写自定义标签,加入jsp-api.jar 与tomcat冲突

用全路径名
2023-07-12 13:30:073

Java类命名中的Support的含义和适用的场合?

ActionSupport 是用在Struts中使用动态action时候用到的,那么是否可以理解成加Support这个词,是对原有的Class的功能的一种拓展.这个拓展可以使用,也可以不使用.希望可以帮到你.
2023-07-12 13:30:282

javax.servlet.jsp.JspTagException这个异常具体是什么异常,什么地方错了报这个异常谢谢 下面是代码 急急

应该是你在jsp页面中非法使用<when>标签 该标签必须是<choose>标签的直接子标签 不能单独是<when>标签 下面给出一个例子 <c:choose> <c:when test="testCondition"> Content1 </c:when> <c:when test="testCondition"> Content2 </c:when> <c:otherwise> Content3 </c:otherwise> </c:choose>
2023-07-12 13:30:371

.tld是什么文件

.tld是标签文件 taglib 文件的后缀
2023-07-12 13:30:463

自定义标签,在jsp中获得标签处理类中值,用foreach循环输出list

你是想要在页面用jstl遍历的效果还是想要一个自己用java代码写的标签?
2023-07-12 13:31:224

jsp页面跑不出来,报空指针错误

if(str==null)/&quot判断字符串如果在本页面提交表单,目的页面还是本页面,必须对其中的字符串变量进行控制.代码如下<%stringstr=request.getparameter(";%>你的其中一个传值控件"/因为还没提交表单时,字符串可能为空,需要初始化str=")
2023-07-12 13:32:031

JSP页面,foreach标签循环次数过多,导致堆栈溢出,怎么解决

1、jsp中自定义标签类:packagecom.tutorialspoint;importjavax.servlet.jsp.tagext.*;importjavax.servlet.jsp.*;importjava.io.*;publicclassHelloTagextendsSimpleTagSupport{publicvoiddoTag()throwsJspException,IOException{JspWriterout=getJspContext().getOut();out.println("HelloCustomTag!");}}2、编译以上类,并将其复制到环境变量CLASSPATH目录中。最后创建如下标签库:webappsROOTWEB-INFcustom.tld。1.02.0ExampleTLDHellocom.tutorialspoint.HelloTagempty3、可以在JSP文件中使用Hello标签:Asamplecustomtag以上程序输出结果为:HelloCustomTag!
2023-07-12 13:32:102

java web如何防止html,js注入

这个问题50分都不够的亲。自己去百度吧
2023-07-12 13:32:311

Spring 的 JdbcTemplate.queryForList()方法问题.高手来

完整异常贴出来看看
2023-07-12 13:32:392

用struts1做分页效果的很少吗,为什么呢

如何写分页SQL和数据库有直接关系,各种数据库的SQL有些不同。本身IBATIS不支持物理分页,可以拦截底层代码进行过滤分页SQL参考: 中有文章iBATIS是在sql中写分页么?不是在PaginatedList里?我觉得分页按常理是在程序中控制的 iBATIS处理Sybase的分页代这文章写的不错吧? 方法有两种:1.SQL返回值设定为PaginatedList,Action里面直接操作PaginatedList的内容就可以实现分页了。 缺点是需要全搜索,数据量大的话通常无法直接使用。2.在SQL中实现部分搜索,例如Mysql的话用limit,iBatis直接返回普通的List就可以。 缺点是需要在SQL上下功夫,但是一劳永逸。 ----------->方法1,跟数据库无关,直接用PaginatedList控制分页就可以方法2,使用set rowcount 或者select top语句
2023-07-12 13:32:462

PropertyUtils.getProperty(object,property)中的参数property指代的是什么 ?

这个过程中,每一步输出后台看看变量和值
2023-07-12 13:32:542

如何使用jsp自定义标签 JspTag 使用入门

1jsp自定义标签需要引入两个jar 分别是javax.servlet.jsp.jarjavax.servlet.jar2建立tld文件,建议目录为WEB-INF下,tld文件结构为下图,uri为整个标签库的名称,可以理解为java类,每一个tag分支,可以理解为java类中的每一个方法,我们在调用jsp自定义标签的时候就和调用java类一样,通过类找方法。tag分支重点要讲tag-class,该属性为该标签方法所指向的java类。attribute为参数,相信属性看步骤三附图。3关于tld文件属性的说明,可以参考下图4将tld文件引入web.xml中,建议名称与tld文件标签库名称一致5编写jsp自定义标签类,该类继承TagSupport类,我们需要做的就是重写doStartTag,我们可以通过JspWriter将后台处理的东西直接输出到jsp页面。当然了,输出的内容在实际操作中肯定经过了非常复杂的逻辑。6页面调用,首先需要引入标签,<%@ taglib uri="option" prefix="option"%> option为标签名 定义在tld文件中,引用之后就可以在页面调用自定义标签了,简单的一行代码。即可实现一个grid的输出,且可以重复利用。
2023-07-12 13:33:011

谈JSP与XML的交互

使用JavaServer Pages有三种不同的方法用于处理XML文档,每种方法都有利于提高分离页面代码与XML数据的水平,有利于简化开发网页的复杂度并且改善提高组件与页面代码的可重用性。JavaServer Pages ( JSP)和XML是Sun的J2EE的两个至关紧要的组件。 JSP是用于创建应用程序服务器端程序的有效工具,而客户可以是一个浏览器,一个设备或其它的应用程序。你可以使用XML描述数据并在联系服务器与系统的其余部分之间传递。如果你仔细考虑Web服务的抽象概念的话,JSP可以被认为是实现技术而XML则是数据封装和消息传送技术。 JSP页面可以通过三种方式使用XML:直接使用XML文件,使用JavaBeans来执行XML处理或者通过标记库使用XML。一、直接使用XML我们可以在JSP页面中直接使用XML,这要分为三类:1. JSP可以读取XML文件并且基于这些数据执行动作。例如:一应用程序可以读取具有某些特定结构的数据的XML文件。2. JSP可以创建XML文件以发送数据到客户程序或其它的应用程序。 JSP可以转换XML文件,这个变换可以是交给XSLT处理,由JSP作为控制器,或者通过非XSLT解决方案来完成。在这两种情况下,JSP的作用都是读取XML文件,转换它并生成一个输出。因为JSP包含内嵌的Java程序,所以它可以直接地调用一个分析程序来读/写xml数据。 这是非常不合理的方法,因为数据和代码逻辑并不能很好的被分离开。 另外,这样的程序也很难读得懂。 所以,下面我将介绍第二方法:使用JavaBeans。二、使用JavaBeansJSP可以通过jsp:usebean标记与JavaBeans紧密的整合起来。 下面的程序片段示范了如何使用在JSP页面中的一个JavaBean来设置并获取属性。jsp:useBean id="cb" scope="session" class="xmlrep.Customer" /jsp:setProperty name="cb" property="id" value="45" /B First Name is: /B%=cb.getFname() %pB Last Name is: ./B%= cb.getLname() %JSP与JavaBeans整合的特征就是可以自动把超文本标志语言的表单元素翻译成JavaBean属性。 如果有一个HTML表单并且想让它向JavaBean提交表单内容,你可以写下面的代码:jsp:setProperty name="cb" property="*" /name属性包含JSP页面已经引用Bean的值。 前面jsp:useBean标记设置名称为" cb "。与设置单独的Bean属性不同,你可以使用星号来标志"全部的"属性。 JSP页面自动地映射HTML表单值为同名的Bean属性。如果你读取每个HTML表单元素,然后调用相应属性的Bean设置方法,那么结果也将是相同的。可以看到,类XML的标记允许JSP页面访问JavaBeans。 我们通过尽可能多的把封装的代码转变成可重用组件(JavaBeans),就可以把JSP页面中代码优化到最小的程度。你可以使用通用的语法分析程序,像Xerces或者JAXPI,在单独的JavaBeans里与XML文件交互作用--并且你可以在不改动JSP页面的情况下改变分析程序。 此外,Beans还可以使用XSLT来执行XML文件的转换。使用JSP和JavaBeans来完成的这些抽象的动作比直接在JSP页面中插入原始的Java程序要好得多,但是你仍然需要熟悉Java程序,以便随时改变JSP页面。应用程序的一致性与条理性依靠JavaBeans合作创建一个统一的输出结果的好坏程度。 例如,Bean中的缺陷可能会造成整个XML输出无效。依靠Beans指定资源的方法,可能同时带来执行性能的问题。三、通过标记库JSP与XML交互这也就是在前文中重点提到的,但是因为它实在太重要了,所以在本文中我必须也要提到。标记库可以定义出现在JSP页面中的作为类XML元素的自定义标签,可以把特定的Java代码与每个标记都关联起来。 例如,假定你可以访问一个天气情况数据库,而且你需要输出现在的天气状况。那么,你可以在JSP中插入JDBC程序代码直接查询数据库(虽然这并不是一个好的选择),把这些代码封装到一个JavaBean内,或者把它包装成一个标记库。 使用最后一个选择,你的JSP页面内的程序代码看上去就像:%@taglib uri="the TLD file" prefix="foo" %Current weather is foo:Weather/注意在上述程序代码中看不到任何Java代码的踪迹。 作为一个页面设计人员,你使用一种熟悉的语法就像foo:weather/,这些与其它的任何标记看起来非常相似。 在页面中包含现在的天气状况的HTML字符串的地方插入它。标记库有一个关联的XML格式的描述符文件,名叫Tag Library Descriptor(标记库描述符,TLD)。 在TLD文件中的每个标记都有一个条目,包括它的名称,版本和其它的任选信息。 在JSP页面内,你可以用" %@_taglib prefix = " foo " % "指令指定TLD文件。 属性" prefix "用来指定一个前缀,用来在JSP页面内使用特定的库来引用任何标记。那为什么我们要使用标记foo:Weather/而不仅仅是Weather/。 TLD文件的精确位置依赖于正在使用的应用程序服务器。一个标记库标记可以代替为了完成这段程序逻辑的相应的Java程序代码。每个标记都相当于一个相同名称的Java类。 这个类必须实现TagSupport接口,包含捕获事件触发器方法作为处理这个页面的JSP引擎。当它第一次遇到这个标记的时候,引擎就会调用doStartTag ()方法。 可以使这个方法为空或者当需要的时候才执行应用程序逻辑。当该方法返回SKIP_BODY时,那么引擎跳过这个标记体。 当它返回EVAL_BODY_INCLUDE时,引擎将会处理这个标记以及它的子标记。类似地,JSP引擎在分析了结束标记之后就会调用doEndTag ()方法。 doAfterBody ()方法让你可以在引擎处理元素体之后执行动作,但是必须在doEndTag ()方法作用之前。下面就是实现天气状况的Weather类的一个样本程序代码:import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;import java.io.*;public class Weather extends TagSupport {public int doStartTag() {try {JspWriter out = pageContext.getOut();out.print(" sunny and cloudy mixed with " +"rain and sunshine. ");} catch (IOException e) {System.out.println("Error " + e);}return (SKIP_BODY);}} 当引擎遇到" somePrefix:Weather/ "标记的时候,它会在标记库内搜索一个同名的类。如果doStartTag ()方法被实现的话(在本例中是这样的),它就会被调用。 这就使字符串包含适应显示的天气情况。因为方法返回了SKIP_BODY,JSP读取器移动到标记的末尾。最简单的使用JSP和标记库的方法就是使用Apache Tomcat引擎。 这个引擎也充当Servlet和JSP应用程序接口的引用实现。当使用标记库时,JSP页面看上去就非常像XML文件了。当JSP页面被处理时,引擎执行与标记相关联的程序代码(实际上,首先调用JSP引擎把JSP页面翻译成一个servlet,然后再编译servlet。与标记库相关联的方法都被包含在servlet中。),一个熟悉XML的人就可以设计并使用各种各样的页面布局进行试验,而不必改变任何Java程序代码。当然,代码与数据的分离的程度还是主要依赖标记库元素设计的好坏程度。
2023-07-12 13:33:081

Tomcat问题The server encountered an internal error ()怎么解决?

struts 的配置文件没写好,你可以把Struts配置删除再试试
2023-07-12 13:33:162

tomcat 中找不到 javax.servlet.jsp.tagext

要放在%TOMCAT_HOME%/common/lib下这里是公共包的地方.
2023-07-12 13:33:321

java simpletagsupport中输出中文问题

设置流编码
2023-07-12 13:34:052

虽然JSP支持自定义标签,但是客户端浏览器不支持那又怎么办?

对! 等用户看的时候是已经编译后的标准标签,因为他是server端执行的。
2023-07-12 13:34:134

请教以下报错的解决方案:

namespace "/TffInfo"中没有找到"TffinfoAction_findAll"的action,看struts2配置
2023-07-12 13:34:201

关于jsp页面错误求解……

不懂
2023-07-12 13:34:293

java自定义标签为什么不能用尖括号百分号赋值

没有定义可以接受这种类型的传值。在编写自定义标签的xml文件时定义你的attribute的rtexprvalue属性为true就可以使用了。 这是对该问题的解释:rtexprvalue:决定属性值是否可以为request-time表达式,也就是类似于< %=…% >的表达式如:<tag> <name>authority</name> <tagclass>com.dw.global.tagsupport.AuthorityTag</tagclass> <bodycontent>jsp</bodycontent><!-- 定义属性 --> <attribute><!-- 应用编号 --> <name>applyId</name> <type>String</type> <requried>true</requried> <rtexprvale>true</rtexprvale> </attribute> <attribute><!-- 权限点编号 --> <name>authorityId</name> <type>String</type> <requried>true</requried> <rtexprvale>true</rtexprvale> </attribute> </tag>
2023-07-12 13:34:361

jsp servlet 标签属性

<%ArrayList al = new ArrayList();al.add("hehe");al.add(new Date());al.add("12345");request.setAttribute("al", al);%><hehe:collectiontag a=${al}/>
2023-07-12 13:34:542

一个关于JSP的问题

404错误?/nestingtag标签没有找到?我估计你还是配置错了,一般初学者感觉配置良好的时候,其实那时恰恰是出错的时候,呵呵
2023-07-12 13:35:024

在写jstl格式的时候jstl.jar和standard.jar一定要添加吗?为什么

。。。。。。。。。。你不加,它上哪找去啊!
2023-07-12 13:35:103

哪位高手帮帮我哇、

期时间 跟踪扫描记录 车辆GPS定位信息 签收单图片信息 申通广告 2011/02/11 21:34:20 正在进行扫描 2011/02/11 21:34:20 由发往 说明现在还没到北京呢,等一等。等显示到了北京1~2天就会配送到你手上了,现在单子太多,申通圆通发长距离的时间没保证
2023-07-12 13:35:181

j2ee session失效的问题

玩游戏发的肯定是另一个session了
2023-07-12 13:35:383

struts html.tld是做什么的

struts标签,基本无视!
2023-07-12 13:35:464

.tld是什么文件

tag标签的配置文件,假如你写了个tag名叫 public class testTag extends TagSupport{ //your code } 之后你在tld文件里配置一下 <tag> <name>testTag </name> <tag-class> testTag </tag-class> <description>test</description> <attribute> <name>forward</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <description><![CDATA[tag说明]]> </description> </attribute> <attribute> <name>tag要传的参数</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <description><![CDATA[参数说明]]> </description> </attribute> </tag> <tag> 之后在你的jsp文件了就可以调用了
2023-07-12 13:35:531

html引入shiro

html是静态页面,只有html的那些原生标签,怎么能调shiro标签呢?肯定是类似jsp这种才可以啊请参考下开涛的那个,jsp头部必须引入shiro的标签才可以jsp也是通过tld和tagsupport类解析成html的<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
2023-07-12 13:36:021

jsp如何使用自定义的类

function 类名(param1,param2,...){ this.param1 = param1; this.param2 = param2;}用的时候 new 类名
2023-07-12 13:36:113

关于struts2的问题 我请求访问一个html页面却报了如下异常,页面显示正常,只是后台报错,想问问大家?

struts2配置文件错误,导致过滤器没有执行,标签就不能使用了如果你过滤器配置了,那么请检查一下你使用的是哪个版本的struts2。应该2.1.6是个分界线,前后的过滤器配置是不一样的
2023-07-12 13:36:193

windows media player 12 怎么播放 ape flac?

无损音乐是播放不成的,编码不对 下个解码器吧 或者用QQ音乐 千千静听 或者迅雷播放器 风暴影音之类的
2023-07-12 13:36:383

springmvc有没有帮助实现自定义jsp标签的类,怎么使用

根据描述: 实现自定义JSP标签跟SPRING关系 通实现JSP TAGSUPPORT等等实现自定义标签
2023-07-12 13:36:452

springmvc有没有帮助实现自定义jsp标签的类,怎么使用

根据你的描述: 实现自定义JSP标签跟SPRING有什么关系吗。。 通过实现在JSP 的TAGSUPPORT。。等等不就可以实现自定义标签吗。
2023-07-12 13:36:522