java定义标签
‘壹’ 如何在javaWeb程序中使用自定义标签
这是自定义JSP标签的配置文件,在JavaWeb程序中使用的方法有2种: 1)在web.xml中统一配置 标签配置文件的物理地址 标签配置文件的调用别名 2)JSP中引入标签库
‘贰’ java自定义标签out
JspWriter out = pageContext.getOut();
这个题目挺白痴的,没什么意思,就是要去翻源码和API文档。
PageContext类有一个方法是
public abstract JspWriter getOut()
我们自定义标签的时候需要用out来输出。
‘叁’ java 自定义标签中,xx.tld里面的uri写什么,还有jsp中的uri还有prefix写什么。下面是错误提示和我的tld
在JSP中使用标签是很平常的事情,在制作自定义标签时,通常都需要写tld文件来定义标签的各种属性,对应的java类,前缀等等。标签与tld文件紧紧相连,所以需要引入c.tld文件。
首先是在头部申明taglib, uri必须是web.xml定义的,或者是原始tld文件定义的。
<%@ taglib prefix="c" uri="java.sun.com/jstl/core" %>
<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
然后便可以在jsp页面中通过prefix使用相应的标签
<c:import varReader="reader" url="${filepath}">
<ex:escapeHtml reader="${reader}"/>
</c:import>
Tld文件路径定义方式:
在web.xml中定义
<taglib>
<taglib-uri>/jstl-examples-taglib</taglib-uri>
<taglib-location>/WEB-INF/lib/jstl-examples.tld</taglib-location>
</taglib>
如果这样定义的话,映射关系如下:
/jstl-examples-taglibßà{“/WEB-INF/lib/jstl-examples.tld”,””} // taglib_tld_location[0]就足以表示tld路径,因此taglib_tld_location[1]为空。
‘肆’ 如何在JavaWeb程序中使用自定义标签
tld定义格式
[java] view plain print?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<!--定义标签版本库-->
<tlib-version>1.0</tlib-version>
<!--定义jsp版本库-->
<jsp-version>1.2</jsp-version>
<short-name>Cms Tag</short-name>
<description><!--标签描述--->
A simple appbase tag library
</description>
<tag>
<name>page</name><!--tag的名字-->
<tag-class>com.cms.common.tag.PageTag</tag-class><!--tag对应的java类的名字-->
<body-content>empty</body-content>
<!--关于body-content 有三个值可选;empty:标签体必须为空;jsp:标签由其他jsp元素组成比如标签中含有<%=attributeName%>的jsp元素,那么此时body-content的值就是实际attributeName传入的值;tagdependent:有标签解释不带jsp转换(这个深入的含义不太了解)-->
<attribute><!---这里表示的是这个tag的一个参数-->
<name>cmsform</name><!--这个参数的名字-->
<required>true</required><!--是否是必填选项-->
<rtexprvalue>true</rtexprvalue><!--这个参数的值是否可以写入,换句话说 就是这个参数是否可以动态赋值-->
</attribute>
</tag>
</taglib>
定义Tag对应类
此类必须重写doStartTag以及doEndTag方法
[java] view plain print?
/**
*
*/
package com.cms.common.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
* @author louisliao
*
*/
public class DemoViewTag extends TagSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private String cmsform = "";
public String getCmsForm() {
return cmsform ;
}
public void setCmsForm(String cmsform ) {
this.cmsform = cmsform ;
}
/**
*
*/
public DemoViewTag() {
// TODO Auto-generated constructor stub
}
public int doStartTag()
{
return super.SKIP_BODY;
}
public int doEndTag() throws JspException
{
JspWriter writer=pageContext.getOut();
try {
writer.print("这是我的标签示例<br/>"+"cmsform :"+this.cmsform);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return super.EVAL_PAGE;
}
}
在web.xml中加入taglib对应文件配置
如:
[java] view plain print?
<taglib>
<taglib-uri>http://mytag.sf.net</taglib-uri>
<taglib-location>/WEB-INF/mytag.tld</taglib-location>
</taglib>
这样就表示了http://mytag.sf.net对应WEB-INF/mytag.tld文件
在Jsp页面中引用
如:
<%@ taglib uri="http://mytag.sf.net" prefix="myTag"%>
在Jsp页面中使用
<myTag:exname1><myTag:exname1>
示例:
定义myTag.tld标签文件
[java] view plain print?
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>MyJSPTag Library</shortname>
<uri>http://mytag.sf.net</uri>
<info>我的示例标签库</info>
<tag>
<name>demo.Viewport</name>
<tagclass>com.myapp.web.tag.DemoViewTag</tagclass>
<bodycontent>JSP</bodycontent>
<info>demo.Viewport标签</info>
<attribute>
<name>northTitle</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>westTitle</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
定义标签类
[java] view plain print?
/**
*
*/
package com.myapp.web.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
* @author louisliao
*
*/
public class DemoViewTag extends TagSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private String northTitle = "";
private String westTitle = "";
public String getNorthTitle() {
return northTitle;
}
public void setNorthTitle(String northTitle) {
this.northTitle = northTitle;
}
public String getWestTitle() {
return westTitle;
}
public void setWestTitle(String westTitle) {
this.westTitle = westTitle;
}
/**
*
*/
public DemoViewTag() {
// TODO Auto-generated constructor stub
}
public int doStartTag()
{
return super.SKIP_BODY;
}
public int doEndTag() throws JspException
{
JspWriter writer=pageContext.getOut();
try {
writer.print("这是我的标签示例<br/>westTitle:"+this.westTitle+"<br/>northTitle:"+this.northTitle);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return super.EVAL_PAGE;
}
}
web.xml添加配置
[java] view plain print?
<taglib>
<taglib-uri>http://mytag.sf.net</taglib-uri>
<taglib-location>/WEB-INF/mytag.tld</taglib-location>
</taglib>
测试页面
[java] view plain print?
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://mytag.sf.net" prefix="myTag"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'tagtldDemo.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
<myTag:demo.Viewport northTitle="南" westTitle="西"></myTag:demo.Viewport>
</body>
</html>
‘伍’ java的标签怎么定义为什么我的编译通不过我用的是1.6的版本!可以参照这个简单的程序讲下!
你少了括号,你的break语句并不在循环内部,所以出错。
你的循环到System.out这句就停止了。
‘陆’ java怎么实现像招聘网站一样输入自定义标签
一般我们说自定义标签是指JSP自定义标签。自定义标签在功能上逻辑上与javaBean 类似,都封装Java 代码。自定义标签是可重用的组件代码,并且允许开发人员为复杂的操作提供逻辑名称。 JSP开发人员使用标签库创建标签.标签库是按照功能或实现进行分...
‘柒’ (java)关于自定义标签的问题
标签是使用在JSP上的,它是实现某些业务逻辑的,它只能把处理的结果展现出来。你想更改数据库的数据这必须要通过后台代码来实现。标签最终结果是展现在客户端的。对于你这样的提问实在是太尴尬了。我认为你应该多看看标签的相关文章。感觉你没有理解标签的作用。
如果真的可以做到,那我会虚心学习。呵呵~~~我会关注此问题的!
‘捌’ 关于Java中自定义标签
TagSupport举例:
public class LangHuaTag extends TagSupport {
private long startTime;
private long endTime;
public int doStartTag() throws JspException {
startTime = System.currentTimeMillis();
//表示定制标记里面有所包括的JSP页面
return TagSupport.EVAL_BODY_INCLUDE;
}
public int doEndTag() throws JspException {
endTime = System.currentTimeMillis();
long elapsed = endTime - startTime;
try {
JspWriter out = pageContext.getOut();
out.println("runtime is "+ elapsed);
} catch (IOException e) {
e.printStackTrace();
}
//表示JSP页面继续运行
return TagSupport.EVAL_PAGE;
}
}
Html代码
<%@ taglib prefix="util" uri="http://langhua.com/taglib/util"%>
<util:timer></util:timer>
<util:loop times="3">
<util:date pattern="yyyy-MM-dd" /><br/>
</util:loop>
当然,自定义标签的xml描述文件自己写,推荐你看看孙卫琴的《javaweb与tomcat。。》大概书名是如此。。呵呵
‘玖’ java 自定义标签tld 继承service实现层操作数据库怎么做
1.java自定义标签 自定义标签制作步骤: 1.扩展TagSupport 2.标签所对应的tld文件配置 3.在JSP页面引用tld配置文件并使用标签 标签制作常用方法说明: doStartTag()和doEndTag()返回值处理: SKIP_BODY (0) :跳过了开始和结束标签之间的代码。