特此声明! 我只在web.xml文件里进行配置!  别的文件没有做任何改动因为是初学!  请详细说明! 谢谢!

解决方案 »

  1.   

    UserDatabaseServlet.java 中是否有public void init() throws javax.servlet.ServletException方法?
      

  2.   

    package servlet;import java.io.BufferedInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.util.Hashtable;import javax.resource.spi.UnavailableException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import modle.UserBean;import org.apache.commons.digester.Digester;import com.yourcompany.struts.action.*;public class UserDatabaseServlet extends HttpServlet { private Hashtable database=null;
    private int debug=0;
    private String pathname="/WEB-INF/unserdatabase.xml";


    public UserDatabaseServlet() {
    super();
    } public void destroy() {
    getServletContext().removeAttribute(Contants.DATABASE_KEY);

    } public int getDebug(){
    return this.debug;
    }

    public void addUser(UserBean user){
     database.put(user.getUserName(),user);
     
    }
    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("  <BODY>");
    out.print("    This is ");
    out.print(this.getClass());
    out.println(", using the GET method");
    out.println("  </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
    } /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("  <BODY>");
    out.print("    This is ");
    out.print(this.getClass());
    out.println(", using the POST method");
    out.println("  </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
    } /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occure
     */
    public void init() throws ServletException{
    // Put your code here
    String value;
    value=getServletConfig().getInitParameter("debug");
    try{
    debug=Integer.parseInt(value);
    }catch(Throwable t){
    debug=0;
    }
    if(debug>=1)
    log("Initializing database servlet");
        value=getServletConfig().getInitParameter("pathname");
        if(value!=null)
         pathname=value;
    try{
    load();
    getServletContext().setAttribute(Contants.DATABASE_KEY,database);
    System.out.println(Contants.DATABASE_KEY);
    }catch(Exception e){
    }
    }
     private synchronized void load() throws Exception{
    database=new Hashtable();
    if(debug>=1)
    log("Loading database from "+"'"+pathname+"'");
    InputStream is=getServletContext().getResourceAsStream(pathname);
    if(is==null){
    log("No such resource available-loading empty database");
    return;
    }
    BufferedInputStream bis=new BufferedInputStream(is);
    Digester digester=new Digester();
    digester.push(this);
    digester.setDebug(debug);
    digester.setValidating(false);
    digester.addObjectCreate("database/user","Address.model.UserBean");
    digester.addSetProperties("database/user");
    digester.addSetNext("database/user","addUser");
    digester.parse(bis);
    bis.close();
     }
    }
      

  3.   

    有 init() 方法!  我想我的web.xml文件是不是配置有写问题啊! 我做了一下简单的测试! 它根本都没有执行这个JAVA文件
      

  4.   

    <load-on-startup>2</load-on-startup>改成这样你再试试
      

  5.   

    /WEB-INF/userdatabase.xml
    这个文件存在不?
      

  6.   

    好像还是不好用  它的提示错误信息是: XML验证无效致命的: Begin event threw exception致命的:对 路径 /WEB-INF/struts-config.xml 资源的读入错误<servlet-mapping>
       <servlet-name>UserDatabaseServlet</servlet-name>
       <url-pattern>/servlet/UserDatabaseServlet</url-pattern>
      </servlet-mapping>我把<servlet-mapping > 删掉是否有影响?
      

  7.   

    userdatabase.xml 文件存在其内容如下:<?xml version="1.0" encoding="UTF-8"?><database>
      <user userName="guest" password="guest">
      </user>
    </database>