客户化jsp标签的作用

客户化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

该文件是以键值对的形式存储的

工作过程:
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了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值