⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 requestlogfilter.java

📁 J2EE & Tomcat books published by hope
💻 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 + -