這裏是一段代碼,我寫道:寫從Servlet的文件
public class ServletCounter extends HttpServlet {
private final Object lock = new Object();
private int serviceCounter = 0;
private FileOutputStream out;
private boolean shuttingDown;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
}
@Override
protected void service(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
enteringServiceMethod();
try {
super.service(httpServletRequest, httpServletResponse);
out = new FileOutputStream("C:\\xampp\\tomcat\\webapps\\myapp\\WEB-INF\\lib\\counter.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
if (!shuttingDown) {
writeToFile("number of servlet access = " + serviceCounter);
}
}
@Override
public void destroy() {
...
}
private void enteringServiceMethod() {
synchronized (lock) {
serviceCounter++;
writeToFile("method enteringServiceMethod serviceCounter = " + serviceCounter);
}
}
private int getNumServices() {
synchronized (lock) {
return serviceCounter;
}
}
private void writeToFile(String text) {
System.out.println(text);
text += "\r\n";
try {
out.write(text.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
我需要的是每一個有人打開我的servlet,它應該打開「counter.txt」文件和存儲多個時間Servlet被打開了多少次。例如,如果文件保存號碼8,然後在某人訪問該servlet之後,它應該存儲數字9並刪除數字8.這有意義嗎?任何人都可以幫我重寫writeToFile方法。我寫的代碼是不完整的,但我卡住了,嘗試了幾件事情,似乎沒有任何工作。
我不認爲這是一個很好的想法直接寫,因爲你將不得不處理併發執行(在最好的情況下延遲你的回答時間,最壞的情況下導致無效值)。發生這種情況時,請將消息放入隊列中,讓單個實例處理消息並更新值。 – SJuan76