`
java_zhentou
  • 浏览: 17991 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

带有自定义标签库的中英文页面

阅读更多
一个用于选择不同语言的JSP页面

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

<html>
  <head>

    
    <title>welcome to hello jsp</title>


  </head>
  
  <body>
    <p><font size=7>Welcome to helloApp</font></p>
    <p><a href="WelcomeLogin.jsp?language=English">English Page</a></p>
    <p><a href="WelcomeLogin.jsp?language=Chinese">Chinese Page</a></p>
     </body>
</html>






分别为中文和英文的Properties的文件
hello.title=helloapp
hello.hi=Nice to meet you
login.title=helloapp
login.user=Username
login.password=Password
login.submit=Submit
hello.title=helloapp
hello.hi=你好
login.title=helloapp的登录页面
login.user=用户名
login.password= 密码
login.submit=登录



用于加载中英文静态文本的Servelt类

package Tag1;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Properties;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {

	

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
         init();
         PrintWriter pw =response.getWriter();
         pw.println("The resouce file is reloaded");
		
	}

	
	public void init() throws ServletException {
		 Properties ps =new Properties();
		 Properties ps_ch=new Properties();
		 
		 ServletContext context =getServletContext();
		 
		 InputStream in=context.getResourceAsStream("/WEB-INF/message.properties");
		 InputStream in_ch=context.getResourceAsStream("/WEB-INF/message_ch.properties");
		 try {
			ps.load(in);
			ps_ch.load(in_ch);
			in.close();
			in_ch.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		context.setAttribute("ps", ps);
		context.setAttribute("ps_ch", ps_ch);
		 
	}

}



一个标签处理类

package Tag1;

import java.util.Properties;

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

public class MessageTag extends TagSupport {
    private String key =null;

	public String getKey() {
		return key;
	}

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

	@Override
	public int doEndTag() throws JspException {
		try{
	    Properties ps =(Properties)pageContext.getAttribute("ps", pageContext.APPLICATION_SCOPE);
		
		Properties ps_ch=(Properties)pageContext.getAttribute("ps_ch", pageContext.APPLICATION_SCOPE);
		
		HttpSession session=pageContext.getSession();
		
		String language=(String)session.getAttribute("language");
		
		String message=null;
		if(language!=null&&language.equals("Chinese")){
			message =(String)ps_ch.get(key);
			message=new String(message.getBytes("ISO-8859-1"),"UTF-8");
		}else{
			message=(String)ps.get(key);
		}
		pageContext.getOut().println(message);
		
	
		}catch(Exception e){
			e.printStackTrace();
		}
		return EVAL_PAGE;
	}
     
    
}





一个标签库
 
<?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.2</jsp-version>
 <short-name>MyTag</short-name>
 <uri>/MyTag</uri>
<tag>
   <name>MyTag</name>
   <tag-class>Tag1.MessageTag</tag-class>
   <body-content>empty</body-content>
   <attribute>
      <name>key</name>
      <required>true</required>
   </attribute>
 </tag>
</taglib>


根据选择 显示不同语言的JSP页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/MyTag.tld" prefix="cc"%>
<html>
   <%  
      String language=request.getParameter("language");	
      if(language==null)
    	  language="English";
      session.setAttribute("language",language);
     
   %>
  <head>
   <title><cc:MyTag key="login.title"/></title>
   </head>
  <body>
    <br>
    <form name="LoginForm" method="post" action="Welcomout.jsp">
        <cc:MyTag key="login.user"/>:<br>
        
        <input type="text" name="username"><br>
        <cc:MyTag key="login.password"/>:<br>
        <input type="password" name="password"/><br>
        <input type="submit" value="<cc:MyTag key="login.submit"/>"/><br/>
    </form>
  </body>
</html>



web.xml配置信息:
  <jsp-config>
  <taglib>
  <taglib-uri>/WEB-INF/MyTag.tld</taglib-uri>
  <taglib-location>/WEB-INF/MyTag.tld</taglib-location>
</taglib>
</jsp-config>
  • 大小: 5 KB
分享到:
评论

相关推荐

    通用企业网站系统V3.0语言/美工自定义/限制版

    文章信息都可以带有图片,如果您有很多图片要使用,您可以使用“效果图”功能。本系统几乎所有模块都有“效果图”功能。 使用“效果图”功能。您可以上传无限数量的图片。这些图片将在您对应的文章内容中全部显示...

    WP主题:HotNewspro 2.72

    默认为WP自带的搜索,如果认为功能太弱,可以在主题设置中开启Google自定义搜索,然后添加一个页面,右下页面属性“模板”中选择“谷歌搜索”模板,最终搜索结果将显示在这个页面中,只需在主题设置中输入搜索结果...

    Gallery4U 图片管理系统 v1.25.rar

    14.数据库带有默认模板。 v1.2版更新信息: 1.删除了config表,直接修改inc/config.asp文件,不再存入数据库 2.更改全站生成的方式,建议每次生成20个,不会引起脚本超时 3.修改了栏目生成的小问题 4.修正了...

    (blog)开源博客源码

    也可以成为“固定链接”,例如本站,文章的URL地址构建格式为:post_{year}_{month}_{day}_{shortname},你可以利用系统给出的自定义标签任意组合你的URL。但Tag、Category、Page的URL目前不支持自定义。 三种用户...

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...

    YiDaCms免费营销型企业建站系统 X3.5 build20150225.rar

    3.自定义标签、自定义页面 4.图片上传水印、注册及发货订单邮件提醒 5.模板一键使用,支持在线管理模板(代码编辑器) 6.订单模块、留言模块、下载模块、客服中心、BANNER模块 7.站内充值、站内短消息 8.广告模块...

    精易模块[源码] V5.15

    5、新增“文本_是否为双字节字符”与OPenGL支持库-&gt;文字轮廓 中的 是否为双字节字符功能相同。 6、新增“文本_是否为字母”,判断指定文本是否为字母。 7、新增“目录_取桌面目录”获取当前系统桌面目录。 MD5:...

    Java EE常用框架.xmind

    采用一种算法,将中英文本中的字符拆分开来,形成词汇,以待用户输入关健字后搜索 流程 步一:按分词器拆分出词汇 步二:去除停用词和禁用词 步三:如果有英文,把英文字母转为小写,即搜索不分大小写 ...

    Apress.Pro.WPF.in.C.Sharp.2008.2nd.Edition.Feb.2008

    WPF编程宝典——使用C# 2008和.NET 3.5(第2版)英文版 目录 第1章 WPF概述 1 1.1 理解Windows图形 1 1.1.1 DirectX:新的图形引擎 1 1.1.2 硬件加速与WPF 2 1.2 WPF:高级API 4 1.2.1 分辨率无关性 5 1.2.2 WPF的...

    TSDQQ网址导航系统带后台带特制版 v2017.01.20.rar

    7、全站除首页友情链接外,均带 nofollow 标签,防止传递权重。 TSDQQ系统特点: 1、网址超多,你无须一年半载的积累,美化版面即可成为一个全新网站。 网址质量怎么样,用了的人才知道! 2、设有网址检查程序,...

    python入门到高级全栈工程师培训 第3期 附课件代码

    03 基于BootStrap和FontAwesome制作页面 04 创建学生信息 05 删除学生信息 第57章 01 上节内容回顾 02 上节bug修复 03 编辑学生信息之前端功能 04 编辑学生信息之后台处理 05 以上内容总结 06 Ajax功能之dataType...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例075 动态改变页面中单元格的背景颜色 109 实例076 屏蔽偶数次的数据输出 110 实例077 跳过数据输出中指定的记录 111 实例078 执行指定次数的循环 112 2.7 自定义函数 113 实例079 自定义函数截取中文字符串 113 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例075 动态改变页面中单元格的背景颜色 109 实例076 屏蔽偶数次的数据输出 110 实例077 跳过数据输出中指定的记录 111 实例078 执行指定次数的循环 112 2.7 自定义函数 113 实例079 自定义函数截取中文字符串 113 ...

    禅道项目管理软件开源版5.3正式版本

    490 5.0.beta2在ie10下每个页面都会有警告 518 项目下拉列表在ie10下搜索框无法输入数据 537 同时发送多封邮件的时候,邮件内容会累加 540 IE11下完成任务会提示关闭选项卡 553 产品没有需求的时候,测试任务按需求...

    vc++ 开发实例源码包

    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...

    我记录网站综合系统 1.6源码

    在论坛附件中增加带进度条的上传功能 在编辑器中增加带进度条的上传功能 后台配置增加上传文件和图片的大小限制 用户空间首页加入微博发布框 配合ajaxLoader/frmLoader,门户区块增加了SectionData控制器,便于...

    C#编程经验技巧宝典

    111 &lt;br&gt;0184 如何在ASP.NET中获取文件的扩展名 111 &lt;br&gt;0185 如何在ASP.NET中用URL在页面之间传值 112 &lt;br&gt;0186 如何使用IsPostBack实现ASP.NET页面加载 112 &lt;br&gt;0187 如何利用输出缓存技术缓存...

    博易博客 多用户博客程序

    联系作者支持发送带有附件的电子邮件 日志排序 按照发表时间降序排列 分类支持 多分类 子分类支持 No Tag 标签支持 Yes 在线编辑器 TinyMCE 以及其他编辑器,可扩展 稿件模式 Yes 自动保存 Yes 格式支持 ...

    苹果8XPC和手机二合一完整版

    label_ 开头的都是自定义页面 art_detail.html 文章内容页 art_index.html 文章首页 art_list.html 文章分类筛选页 art_map.html 文章地图页 art_search.html 文章搜索页 art_...

Global site tag (gtag.js) - Google Analytics