百度不到JSP的流量监控脚本,自己写一个吧,1.0版本,后续更新会封装一下;功能:保存请求头和表单信息并打印
使用方法:
1 把web.xml配置为这个脚本的路径
2 把全局变量设置为你要保存的txt文件路径
效果:
代码如下:
import java.io.File;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class liu extends HttpServlet {
public static String path = "E:/Test/log.txt";
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");//设置将字符以"UTF-8"编码输出到客户端浏览器
//通过设置响应头控制浏览器以UTF-8的编码显示数据
response.setHeader("content-type", "text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
@SuppressWarnings("unchecked")
// 遍历获取表单值
Enumeration<String> em = request.getParameterNames();
while (em.hasMoreElements()) {
String postname = (String)em.nextElement();
String postvalue = request.getParameter(postname);
String postvalues = postname+":"+postvalue;
System.out.println(postvalues);
BufferedWriter out1 = null;
try {
out1 = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(path, true)));
out1.write(postvalues+"\r\n");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 在页面上回显数据
Enumeration<String> reqHeadInfos = request.getHeaderNames();//获取所有的请求头
out.write("获取到的客户端所有的请求头信息如下:");
out.write("<hr/>");
// 遍历获取请求头信息
while (reqHeadInfos.hasMoreElements()) {
String headName = (String) reqHeadInfos.nextElement();
//根据请求头的名字获取对应的请求头的值
String headValue = request.getHeader(headName);
out.write(headName+":"+headValue);
out.write("<br/>");
String string = headName+":"+headValue;
FileWriter fw = null;
try {
// 存入指定路径,如果文件存在,则追加内容;如果文件不存在,则创建文件
File f=new File("E:/Test/log.txt");
fw = new FileWriter(f, true);
} catch (IOException e1) {
e1.printStackTrace();
}
PrintWriter pw = new PrintWriter(fw);
pw.println(string);
pw.flush();
try {
fw.flush();
pw.close();
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
FileWriter fw = null;
try {
//如果文件存在,则追加内容;如果文件不存在,则创建文件
File f=new File("path");
fw = new FileWriter(f, true);
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(fw);
// 加上时间
Date date= new Date(System.currentTimeMillis());
String pattern="yyyy/MM/dd HH时mm分ss秒";
SimpleDateFormat sdf= new SimpleDateFormat(pattern);
String datestr=sdf.format(date);// format 为格式化方法
pw.write(datestr);
pw.flush();
try {
fw.flush();
pw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}