自定义标签 实现页面显示properties中key对应的属性值

来源:互联网 发布:mac重装系统保留文件 编辑:程序博客网 时间:2024/05/29 18:04

实例

1.要用到 properties属性文件,定义一个message.properties文件放在WEB-INF目录下

message.properties

title=hello

body=world


2.定义一个Servlet,初始化的时候加载 属性文件

InitServlet2.java 只起到初始化作用会被运行

 
  1. package com.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.PrintWriter;  
  6. import java.util.Properties;  
  7.   
  8. import javax.servlet.ServletConfig;  
  9. import javax.servlet.ServletContext;  
  10. import javax.servlet.ServletException;  
  11. import javax.servlet.http.HttpServlet;  
  12. import javax.servlet.http.HttpServletRequest;  
  13. import javax.servlet.http.HttpServletResponse;  
  14.   
  15. public class InitServlet2 extends HttpServlet {  
  16.   
  17.     @Override  
  18.     public void init(ServletConfig config) throws ServletException {  
  19.           
  20.         Properties ps = new Properties() ;  
  21.           
  22.           
  23.         ServletContext context = config.getServletContext() ;  
  24.         //获取 message.properties文件的输入流  
  25.         InputStream is = context.getResourceAsStream("/WEB-INF/message.properties");  
  26.           
  27.         try {  
  28.               
  29.             ps.load(is); //把获取的流加载到 ps对象中  
  30.               
  31.         } catch (IOException e) {  
  32.               
  33.             e.printStackTrace();  
  34.         }  
  35.         //把ps对象放在 全局的application中,达到共享作用 
  36.         context.setAttribute("ps", ps);  
  37.           
  38.           
  39.     }  
  40.       
  41.   
  42. }  

对应的web.xml文件,没有 <servlet-mapping></servlet-mapping>

 
  1. <servlet>  
  2.   <servlet-name>InitServlet2</servlet-name>  
  3.   <servlet-class>com.servlet.InitServlet2</servlet-class>  
  4.   <load-on-startup>3</load-on-startup>  
  5. </servlet>  

3.创建标签的处理类 MyTag2.java

对于标签中涉及到属性的一定要在处理类中 定义 setXXX , getXXX

 
  1. package com.tag;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.Properties;  
  5.   
  6. import javax.servlet.jsp.JspException;  
  7. import javax.servlet.jsp.PageContext;  
  8. import javax.servlet.jsp.tagext.TagSupport;  
  9.   
  10.   
  11. public class MyTag2 extends TagSupport{  
  12.       
  13.     private String key ;  
  14.       
  15.       
  16.     public String getKey() {  
  17.         return key;  
  18.     }  
  19.       
  20.     //接收页面 传过来的值 也就是属性的值比如  key="title"  
  21.     public void setKey(String key) {  
  22.         this.key = key;  
  23.     }  
  24.   
  25.   
  26.     @Override  
  27.     public int doEndTag() throws JspException {  
  28.           
  29.           
  30.         
  31.         try {  
  32.               
  33.             Properties ps = (Properties)this.pageContext.getAttribute("ps", PageContext.APPLICATION_SCOPE);  
  34.               
  35.             String message = ps.getProperty(key); // key对应 自动调用 getKey()  
  36.             this.pageContext.getOut().println(message);  
  37.               
  38.         } catch (IOException e) {  
  39.               
  40.             e.printStackTrace();  
  41.         }  
  42.           
  43.         return EVAL_PAGE;  
  44.     }  
  45.   


4.创建标签库描述文件 myTag.tld ,如果有属性tag内要加属性attribute

 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">  
  3.   
  4. <taglib>  
  5.    <tlib-version>1.0</tlib-version>  
  6.    <jsp-version>1.1</jsp-version>  
  7.    <short-name>myTag</short-name>  
  8.    <uri>/myTag</uri> <!-- 这个是 uri 而不是 url -->  
  9.      
  10.    <tag>  
  11.        <name>message</name>  
  12.        <tag-class>com.tag.MyTag2</tag-class>  
  13.        <body-content>empty</body-content>  
  14.          
  15.        <attribute>  
  16.            <name>key</name> <!-- 该属性的名字 key要和 处理类的成员变量相对应 -->  
  17.            <required>true</required>   <!-- required = true 说明该属性是必填的,反之false-->  
  18.        </attribute>  
  19.      
  20.    </tag>  
  21.   
  22.   
  23. </taglib>

5.JSP页面 

 

  1.  <%@page language="java" contentType="test/html;charset=GB2312" pageEncoding="GB2312"%> 

  2. <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"http://www.w3.org/TR/heml4/loose.dtd"><%@ taglib uri="/myTag" prefix="hello" %>  
  3.   
  4. <html>  
  5.   <head>  
  6.   
  7.   </head>  
  8.     
  9.   <body>  
  10.     <!-- key的值 传到 标签处理类的 setKey() -->  
  11.     <hello:message key="title"/><br/>  
  12.     <hello:message key="body"/>  
  13.       
  14.       
  15.       
  16.   </body>  
  17. </html>  
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 养狗家里有异味怎么办 养狗房子有味道怎么办 狗身上有腥臭味怎么办 狗狗不想养了怎么办 药流2天后没出血怎么办 药流当天血多怎么办 怀孕四十天不想要怎么办 人流后出血量大怎么办 药流一直不出血怎么办 药流一直不见红怎么办 药流12天还流血怎么办? 把别人车刮了怎么办 车划掉漆了怎么办啊 倒车时碰了车怎么办 车头掉了一点漆怎么办 新买的车被刮了怎么办 白色车车头漆掉了一小块怎么办 临时牌照丢了1张怎么办 临牌遗失了一张怎么办 临牌只有一张了怎么办 临时牌丢了一个怎么办 药流出血特别多怎么办 新车刮擦了一点怎么办 自己的车撞墙了怎么办 新车被撞了个坑怎么办 车门被刮变形了怎么办 撞到别人的新车怎么办 新车掉了一点漆怎么办 新车擦了点漆怎么办 车挂了一点漆怎么办 第一天上班中途想走了怎么办 车子前脸裂开了怎么办 不想干了想辞职怎么办 药流期间老是吐怎么办 在工厂上班辞工后没发工资怎么办 培训期三天想走怎么办 药流吃了药吐了怎么办 工作3天不下去怎么办 在新公司融不进去怎么办 药流吃药吐了怎么办 药流期间发烧了怎么办