您的位置:首页 > Web前端 > JavaScript

客户化jsp标签的作用

2015-09-02 23:51 741 查看
客户化jsp标签技术支持用户在jsp文件自定义标签,这样可以使jsp代码更加简洁

创建客户化jsp标签的步骤

1 创建标签的处理类

2 创建标签库描述文件

3 在jsp文件中引入标签库,然后插入标签

1创建标签的处理类MyTag.java,创建一个普通的class继承tagSupport类

package com.hpu.tag;

import java.util.Properties;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class MyTag extends TagSupport
{
private String key;
public String getKey()
{
return key;
}

public void setKey(String key)
{
this.key = key;
}

public int doEndTag() throws JspException
{
try
{
Properties ps= (Properties)this.pageContext.getAttribute("ps",pageContext.APPLICATION_SCOPE);

String massage=ps.getProperty(key);

this.pageContext.getOut().println(massage);

} catch (Exception e)
{
e.printStackTrace();
}

return EVAL_PAGE;
}

}


2 创建标签库描述文件

<?xml version="1.0" encoding="utf-8"?>
<!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-version>1.1</jsp-version>
<short-name>myTag</short-name>
<uri>/myTag</uri>
<tag>
<name>massage</name>
<tag-class>com.hpu.tag.MyTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>key</name>
<required>true</required>
</attribute>
</tag>
</taglib>


3 在jsp文件中引入标签库,然后插入标签

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib uri="/myTag" prefix="hello" %>
<%
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 'tag.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>
<hello:massage key="title"/><br>
<hello:massage key="body"/>
</body>
</html>


在写properties类的时候,需要写一个文件massage.properties

title=hello world
body=welcome


<
4000
p>该文件是以键值对的形式存储的

工作过程:

1初始化一个servlet,服务器已启动就得到执行(InitServlet)执行的内容是将/WEB-INF/massage.properties加载到properties对象里面,就是properties对象就可以去读取/WEB-INF/massage.properties里面的内容了.将properties对象放置在全局变量中
context.setAttribute("ps",ps)
.

服务器一启动,这个工作就结束了。

2当去访问tag.jsp页面的时候。指定好标签库uri=“/myTag”,使用的标签prefix=”hello” 当解析到标签时
<hello:massage key="title"/>
没有写doStartTag所以遇到标签开始什么都不做,遇到标签结束,调用doEndTag方法。从全局范围内将之前通过servlet对象存进去的properties对象get出来,get出来之后getProperties(key)。这个key是来自于属性hello:massage key=”title”。属性要提供跟属性一样的成员变量,调用get方法的同时自动调用set 方法,可以设置属性,取出来属性

getProperties就get到title了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: