【发布时间】:2014-04-18 12:17:41
【问题描述】:
我有以下代码,
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 发出请求时,
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>jdHome</title>
</head>
<body>
<header>hello!!</header>
<section>
<form action="http://192.168.1.101:90/Jdfront1/hello">
<label>Topic :</label><input type="text" name="topic"/><br>
<label>Number of pages :</label><input type="text" name="Nopages"/><br>
<label>URL :</label><input type="text" name="link"/><br>
<label>isRange :</label><input type="text" name="range"/><br>
<input type="submit">
</form>
</section>
当第一次发出请求时,它运行良好,日志也只出现一次,
但是当我从 jsp 向同一个 servlet 发出第二次请求时,整个程序会运行两次。日志来了两次,就像我有一个System.out.println("hello"),它会打印两次“你好”。当我提出第三个请求时,它会打印 3 次并继续!我曾经转发过的调度程序中是否缺少某些内容?我到处都试过了,没有任何地方报告过类似甚至接近这个的问题。
【问题讨论】: