请看代码
@WebListener
//ServletRequestListener控制器请求监听
public class LoggingListneer implements ServletRequestListener {
//只要访问浏览器。就会执行这个方法
@Override
public void requestInitialized(ServletRequestEvent sre) {
//1、获取请求连接
ServletRequest servletRequest = sre.getServletRequest();
//2、根据请求的格式,设置响应的请求格式,因为现在获取的都是http的请求,所以设置成http请求格式
HttpServletRequest request = (HttpServletRequest) servletRequest;
//3\获取远程第地址
String remoteHost = request.getRemoteHost();
//4、获取远程访问的端口号
int remotePort = request.getRemotePort();
//5\客户访问的资源
String requestURI = request.getRequestURI();
//获取访问的时间
Date date = new Date();
//自动将时间转换成字符串
String string = date.toLocaleString();
String log = "时间:"+string+" 地址:"+remoteHost+" 端口号:"+remotePort +" 资源:"+requestURI;
System.out.println(log);
FileOutputStream fileOutputStream=null;
PrintWriter printWriter=null;
//持久化到本地
try {
//创建文件输出流
fileOutputStream = new FileOutputStream("F:\\login\\login.txt",true);
//往哪里写,往文件输出流里面写
printWriter= new PrintWriter(fileOutputStream);
//写什么?
printWriter.println(log);
//都需要释放
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
//无论执行成功没有,都要关闭流,否则会造成磁盘的阻塞
try {
fileOutputStream.close();
printWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
当访问项目的时候,控制台会打印
但是txt文档中就是没有,对比了其他人的代码。却发现没有问题,但就是无法将日志传入到本地,显示空白。
但如果我把login.txt文档删了,程序就会报错,也就是说程序它本身回去找我这个路径,但是就是不往文档里面写东西,请问这是怎么回事?