servlet被调用的次数随着获取的请求数量而增加

 mobiledu2502926037 发布于 2023-01-18 11:56

我有以下代码,

public class HttpAdapter extends HttpServlet {
    private static final long serialVersionUID = 1L;
    static Logger l = Logger.getLogger(HttpAdapter.class.getName());

    public HttpAdapter() {
        super();     
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try{
            Layout ll = new SimpleLayout();
            Appender a = new FileAppender();
            a = new FileAppender(ll,"C:\\Users\\Vasanth\\Desktop\\JDlogs\\my.txt");
            l.info(request.getRemoteHost());
            l.addAppender(a); 

            String loc = DTO.findMyLocation();      
            l.info(loc);

            l.info(this.getClass()+" >>>>>>>>>>>>>>task complete");
            l.info(request.getRemoteHost());

        }catch(Exception e){
            e.printStackTrace();        
        }finally{
            getServletContext().getRequestDispatcher("/JSP/done.jsp").forward(request, response);
        }

    }
    //F:\\home\\WorkSpace\\Jdfront1\\webapps\\JSP\\

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}

这是不寻常的事情:每当我从浏览器通过jsp页面向这个servlet发出请求时,



 

jdHome


hello!!




当第一次发出请求时,它运行良好,日志也只进行一次,但是当我从jsp向同一个servlet发出第二个请求时,整个程序运行两次.日志来了两次,就像我有一个System.out.println("hello"),它打印'你好'两次.当我提出第3个请求时,它打印3次然后继续!我曾经在调度员身上找不到我想要转发的东西吗?我到处尝试过,没有类似的问题甚至接近这个问题.

1 个回答
  • 为什么要在doGet()方法中配置记录器?

    正如您所指出的,此方法在每个请求上执行.

    但是,您可能只想配置一次记录器和它的appender .这个逻辑的一个更好的地方是Servlet的init方法(这个逻辑的最佳位置是外部XML或属性文件).

    您看到日志行的多个副本的原因是,当您收到第四个请求时,您已向记录器添加了四个appender.记录器框架不知道这些appender是彼此重复的,并将日志消息发送给每个appender.

    2023-01-18 11:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有