请教如何在一个javabean中执行一个servlet的doGet函数?

解决方案 »

  1.   

    这是servlet程序package news.servlets;import java.io.ByteArrayOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletResponseWrapper;/**
     * @author Administrator
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class ToHtmlIndex extends HttpServlet
    {
    public  void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException
        {
         String url="";
            url = request.getParameter("file_name");
            ServletContext sc = getServletContext();
            url = "/" + url + ".jsp";//这是你要生成HTML的jsp文件,如http://localhost/index.jsp的执行结果.
            String name = request.getParameter("name");
            name = name + ".htm";//这是生成的html文件名,如index.htm.
            RequestDispatcher rd = sc.getRequestDispatcher(url);
            
            final ByteArrayOutputStream os = new ByteArrayOutputStream();
            
            final ServletOutputStream stream = new ServletOutputStream()
            {
                public void write(byte[] data, int offset, int length)
                {
                    os.write(data, offset, length);
                }            public void write(int b) throws IOException
                {
                    os.write(b);
                }
            };
            
            final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
            
            HttpServletResponse rep = new HttpServletResponseWrapper(response)
            {
                public ServletOutputStream getOutputStream()
                {
                    return stream;
                }
                
                public PrintWriter getWriter()
                {
                    return pw;
                }
            };
            rd.include(request, rep);
            pw.flush();
            if(pw!=null){
             pw.close();
            }        
            FileOutputStream fos = new FileOutputStream(name); //把jsp输出的内容写到xxx.htm
            os.writeTo(fos);
            if(fos!=null){
             fos.close();
            }
            if(os!=null){
             os.close();
            }        
            if(stream!=null){
             stream.close();
            }        
        }
    }
      

  2.   

    SERVLET是用在WEB应用的技术,它处理HTTPServletRequest 请求,恐怕不能被javabean调用!关注...
      

  3.   

    不知楼主用意。
    ToHtmlIndex t = new ToHtmlIndex();
    t.doGet(request,response);
    不过这个有意义吗?
      

  4.   

    这个servlet是将jsp文件自动生成html文件,我想用个定时器过段时间将jsp文件自动生成htm。
    要在定时器中执行这段程序。
      

  5.   

    funcreal(为中华之崛起而编程) 
    不知楼主用意。
    ToHtmlIndex t = new ToHtmlIndex();
    t.doGet(request,response);
    不过这个有意义吗?
    这样写不行,报空指针错误
      

  6.   

    因为没有request和response对象所以报空指针
      

  7.   

    那你就要参考一下tomcat的实现了。读读javax.servlet中的源代码。
    我觉得你这样做就是要实现一个jsp解释器,挺难的应该。
      

  8.   

    把request,response传给你要执行的javabean
      

  9.   

    你在JavaBean中
    URL u = new URL("http://server:port/servletMappingPath");
    InputStream is = u.getInputStream();
    这样保存起它就行
      

  10.   

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;/*
     * 创建日期 2005-12-27
     *
     * 更改所生成文件模板为
     * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
     *//**
     * @author Administrator
     *
     * 更改所生成类型注释的模板为
     * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
     */
    public class CallServletBean { public void callServlet() {
    HttpServletRequest req = null;
    HttpServletResponse res = null;
    TestServlet ts = new TestServlet();
    ts.processReq(req,res);
    }
    }
    如果得不到请求及响应对象,可以构造空的,就没有问题.
    但不管怎样,你的bean在Web应用才可以正常调用.因为servlet是需要Web容器来控制生命周期的