TOMCAT提示 
Resolve entity failed-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.1//EN http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd 
Resolve entity failed-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.1//EN http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd 
mytaglib.tld 
<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE taglib 
PUBLIC "-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.1//EN" 
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> 
<!-- a tag library descriptor --> 
<taglib> 
<tlibversion>1.0 </tlibversion> 
<jspversion>1.1 </jspversion> 
<shortname>mytaglib </shortname> 
<uri>/mytaglib </uri> 
<tag> 
<name>message </name> 
<tagclass>mypack.MessageTag </tagclass> 
<bodycontent>empty </bodycontent> 
<info>produce message by key </info> 
<attribute> 
<name>key </name> 
<required>true </required> 
</attribute> 
</tag> 
</taglib> 
web.xml 
<?xml version="1.0" encoding="GB2312"?> 
<!-- 
<!DOCTYPE web-app PUBLIC 
  '-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN' 
  'http://java.sun.com/j2ee/dtds/web-app_2_3.dtd'> 
--> <web-app> <servlet> 
<servlet-name>CounterServlet </servlet-name> 
  <servlet-class>mypack.CounterServlet </servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>CounterServlet </servlet-name> 
<url-pattern>/hello </url-pattern> 
</servlet-mapping> 
<servlet> 
<servlet-name>SampleServlet2 </servlet-name> 
  <servlet-class>mypack.SampleServlet2 </servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>SampleServlet2 </servlet-name> 
<url-pattern>/SampleServlet2 </url-pattern> 
</servlet-mapping> 
<servlet> 
<servlet-name>dispatcher </servlet-name> 
  <servlet-class>mypack.DispatcherServlet </servlet-class> 
  <load-on-startup>1 </load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>dispatcher </servlet-name> 
<url-pattern>/dispatcher </url-pattern> 
</servlet-mapping> 
<taglib> 
<taglib-uri>/mytaglib </taglib-uri> 
<taglib-location>/WEB-INF/mytaglib.tld </taglib-location> 
</taglib> <filter> 
<filter-name>NoteFilter </filter-name> 
<filter-class>NoteFilter </filter-class> 
<init-param> 
<param-name>blacklist </param-name> 
<param-value>jack </param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>NoteFilter </filter-name> 
<url-pattern>/note </url-pattern> 
</filter-mapping> 
<servlet> 
<servlet-name>NoteServlet </servlet-name> 
<servlet-class>mypack.NoteServlet </servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>NoteServlet </servlet-name> 
<url-pattern>/note </url-pattern> 
</servlet-mapping> 
</web-app> 
程序代码
DispatcherServlet.java 
package mypack; 
//package mypack; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 
public class DispatcherServlet extends HttpServlet{ 
private String target="/hello.jsp"; public void init(ServletConfig config)throws ServletException{ 
super.init(config); 
Properties ps=new Properties(); 
Properties ps_ch=new Properties(); 
try{ 
ServletContext context=config.getServletContext(); 
InputStream in=context.getResourceAsStream("/WEB-INF/messageresource.properties"); 
ps.load(in); 
InputStream in_ch=context.getResourceAsStream("/WEB-INF/messageresource_ch.properties"); 
ps_ch.load(in_ch); 
in.close(); 
in_ch.close(); 
context.setAttribute("ps",ps); 
context.setAttribute("ps_ch", ps_ch); } 
catch(Exception e){ 
e.getStackTrace(); 
} } public void doGet(HttpServletRequest request,HttpServletResponse response) 
throws ServletException,IOException{ 
doPost(request,response); 

public void doPost(HttpServletRequest request,HttpServletResponse response)throws 
ServletException,IOException{ 
String username=request.getParameter("username"); 
String password=request.getParameter("password"); 
request.setAttribute("USER",username); 
request.setAttribute("PASSWORD",password); 
ServletContext context=getServletContext(); 
System.out.println("Redirectiongto"+target); 
RequestDispatcher dispatcher=context.getRequestDispatcher(target); 
dispatcher.forward(request,response); 

public void destrou(){ } } 
MessageTag.java 
package mypack; 
import javax.servlet.jsp.*; 
import javax.servlet.jsp.tagext.TagSupport; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 
public class MessageTag extends TagSupport{ 
private String key = null; 
public MessageTag(){} 
public String getKey(){ 
return this.key; 

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

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"),"GB2312"); } 
else 
message=(String)ps.get(key); 
pageContext.getOut().print(message); 

catch(Exception e){ 
throw new JspTagException(e.getMessage()); } 
return SKIP_BODY; 

public void release(){ 
super.release(); 


异常
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: /login.jsp(10,7) Unable to find setter method for attribute: key
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150)
org.apache.jasper.compiler.Generator$GenerateVisitor.evaluateAttribute(Generator.java:2677)
org.apache.jasper.compiler.Generator$GenerateVisitor.generateSetters(Generator.java:2825)
org.apache.jasper.compiler.Generator$GenerateVisitor.generateCustomStart(Generator.java:2158)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1669)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3272)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.