packagecom.qwserv.itm.pfl.log.svr;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjava.text.SimpleDateFormat;importjavax.servlet.http.HttpServletRequest;importcom.qwserv.itm.api.pfl.sm.vo.Person;import java.sql.*;importcom.qwserv.itm.api.ServiceAccess;importcom.qwserv.itm.util.toolkit.DebugUtil;public class ObserveFilter implementsFilter {protected static DebugUtil log = DebugUtil.getInstances("pfl-log", ObserveFilter.class);public voiddestroy() {
}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throwsIOException,
ServletException {//记录用户的访问操作
HttpServletRequest request1 =(HttpServletRequest)request;
StringBuffer url=request1.getRequestURL();//对url进行过滤,如果是js/css/image则不进行处理
if(judgeFile(url.toString())){
String operTime= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").
format(newjava.util.Date());
String hostIp=request.getRemoteAddr();
String sessionId=request1.getRequestedSessionId();
String userId= "";
Person person= (Person)request1.getSession().getAttribute("userObj");if (null != person && null !=person.getUser()){
userId=person.getUser().getId();
}
String queryString=request1.getQueryString();if (null !=queryString) {
url.append('?');
url.append(queryString);
}//保存到数据库中
saveToDb(userId,hostIp,sessionId,url.toString(),operTime,"");
}//Pass control on to the next filter
chain.doFilter(request, response);
}public void init(FilterConfig filterConfig) throwsServletException {
}public booleanjudgeFile(String url){if (url.endsWith(".gif") || url.endsWith(".jpg") || url.endsWith(".png")|| url.endsWith(".bmp") || url.endsWith(".css") || url.endsWith(".js")|| url.endsWith(".jsx")){return false;
}else{return true;
}
}public intsaveToDb(String userId, String hostIp,String sessionId,String url,
String operTime,String desc){//将报表任务数据保存到数据库中
Connection conn = null;
Statement st= null;try{//构造sql表达式,将数据插入数据库
conn =ServiceAccess.getSystemSupportService().getDefaultConnection();
st=conn.createStatement();
String sql= "insert into LOG_OBSERVE_HISTORY(USERID,URL,Detail,SessionID,HostName,StartDate) values('"+userId+ "','" + url + "','" + desc + "','" +sessionId+ "','" + hostIp + "','" + operTime + "')";if (ServiceAccess.getSystemSupportService().getConnectionType(conn)==ServiceAccess.getSystemSupportService().JCA_TYPE_ORACLE){
sql= "insert into LOG_OBSERVE_HISTORY(Id,USERID,URL,Detail,SessionID,HostName,StartDate) values(LOG_OBSERVE_SEQ.nextval,'"+userId+ "','" + url + "','" + desc + "','" +sessionId+ "','" + hostIp + "',TO_DATE('" +operTime+ "','YYYY-MM-DD HH24:MI:SS'))";
}
st.executeUpdate(sql);
}catch(Exception e) {
e.printStackTrace();
log.error("--------------------The url String is:" + url + "-------------------------------");return 1; //表示操作失败
} finally{if (null !=st)
{try{
st.close();
}catch(Exception e)
{
e.printStackTrace();
}
st= null;
}if (conn != null) {try{
conn.close();
}catch(Exception e) {
e.printStackTrace();
}
conn= null;
}
}return 0; //表示操作成功
}
}