📄 requestlogfilter.java
字号:
package com.sun.j2ee.workflow.control.filters;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;import com.sun.j2ee.workflow.util.Debug;import com.sun.j2ee.workflow.util.WebKeys;import com.sun.j2ee.workflow.control.web.UserBean;/** * @author Jian (James) Cai */public class RequestLogFilter implements Filter { private ServletContext ctx; private String denyrole; private boolean logToFile=true; //private String logFile = "../webapps/workflow/static/requestlog.xml"; private File logFile = null; private FileOutputStream logFileOut=null; private int gdfileid = 0; public void init(javax.servlet.FilterConfig filterConfig) throws ServletException { ctx = filterConfig.getServletContext(); ctx.log("Filter " + filterConfig.getFilterName() + " initialized."); } public void doFilter(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse, javax.servlet.FilterChain filterChain) throws java.io.IOException, javax.servlet.ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; final HttpServletResponse response = (HttpServletResponse)servletResponse; OutputStream out = response.getOutputStream(); GenericResponseWrapper wrapper = new GenericResponseWrapper(response); //HttpResponseWrapper wrapper = new HttpResponseWrapper((HttpServletResponse)resp); //OutputStream out = resp.getOutputStream(); String method = ""; if (request.getMethod()!=null) { method = request.getMethod(); } String contextpath = ""; if (request.getContextPath()!=null) { contextpath = request.getContextPath(); } String servletpath = ""; if (request.getServletPath()!=null) { servletpath = request.getServletPath(); } String pathinfo = ""; if (request.getPathInfo()!=null) { pathinfo = request.getPathInfo(); } String querystring = ""; if (request.getQueryString()!=null) { querystring = "?" + request.getQueryString(); } StringBuffer requeststr = new StringBuffer(); //String gdFileName = "../webapps/workflow/static/goldenfile/"+ getCurrentTestName(request) +".html"; String gdFileName = getCurrentTestName(request) +".html"; requeststr.append("<gtest request=\""+ method+" "+ contextpath+ servletpath+ pathinfo+ querystring+" "+request.getProtocol()+"\"\n"); requeststr.append("debug=\"0\" host=\"${host}\" port=\"${port}\"\n"); //requeststr.append("goldenFile=\"${wgdir}/workflow"+request.getPathInfo()+"Resp2.html\"\n"); requeststr.append("goldenFile=\"${wgdir}/workflow"+ gdFileName +"\"\n"); requeststr.append("testSession=\"DetermineTestName\"\n"); requeststr.append("testCaseId=\"DetermineTestName\"\n"); requeststr.append("testCaseName=\"DetermineTestName\"\n"); requeststr.append("testCaseDescription=\"Enter Assertion Here\"\n"); requeststr.append("testStrategy=\" \""); requeststr.append("/>\n"); String requestentry = requeststr.toString(); File baseDir = (File)ctx.getAttribute("javax.servlet.context.tempdir"); logFile = new File(baseDir, "Requestlog.xml"); log(requestentry, logFile, logFileOut); //log(requestentry, logFile, logFileOut); //filterChain.doFilter(request, response); filterChain.doFilter(request, wrapper); //write response to two channels byte [] outbyte = wrapper.output(); if (contentIsHTML(wrapper)) { ByteArrayOutputStream responseStream = wrapper.getByteStream(); logFile = new File(baseDir, gdFileName); //log(responseStream.toString(), logFile, logFileOut); response.setContentLength(responseStream.size()); response.setContentType("text/html"); out.write(responseStream.toByteArray()); } else { out.write(wrapper.output()); } out.flush(); out.close(); } public void destroy() { } private void log(String message, File filename, FileOutputStream logFileOut) { try { if ( logToFile==true ) { if ( logFileOut == null ) { logFileOut = new FileOutputStream( filename.toString(), true ); } logFileOut.write( message.getBytes() ); logFileOut.write ( "\n".getBytes() ); } //System.out.println("Listenerset3: " + message); } catch (Exception e ) { System.out.println("Exception occured : " + e ); } } private String getCurrentTestName(HttpServletRequest request) { gdfileid++; String path = request.getPathInfo(); if (path == null) path = "/jsp"; return path + "_"+ String.valueOf(gdfileid); } protected boolean contentIsHTML(GenericResponseWrapper wrapper){ if(wrapper.getContentType()!=null) { if(wrapper.getContentType().startsWith("text/")) { if(wrapper.output().length>0){ return true; } } } return false; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -