带有自定义标签库的中英文页面
一个用于选择不同语言的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>
hello.title=helloapphello.hi=Nice to meet youlogin.title=helloapplogin.user=Usernamelogin.password=Passwordlogin.submit=Submit
hello.title=helloapphello.hi=你好login.title=helloapp的登录页面login.user=用户名login.password= 密码login.submit=登录
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 blocke.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;}@Overridepublic 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>
<%@ 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>
<jsp-config> <taglib> <taglib-uri>/WEB-INF/MyTag.tld</taglib-uri> <taglib-location>/WEB-INF/MyTag.tld</taglib-location></taglib></jsp-config>