【Java开源代码栏目提醒】:网学会员鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“GdParseXmlFilter.java”一文,供大家参考学习
package com.gd.web.filter;
import java.io.File;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.gd.mvc.util.GdDate;
import com.gd.mvc.util.GdParseXml;
import com.gd.mvc.util.GdWebPath;
public class GdParseXmlFilter implements Filter {
protected FilterConfig config;
//设定上下文路径
private ServletContext context;
private String filterName;
/**
* 初始化Filter,取得上下文路径
*/
public void init(FilterConfig config) throws ServletException {
this.config = config;
context = config.getServletContext();
filterName = config.getFilterName();
}
/**
* 进行过滤
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
try {
long startTime = System.currentTimeMillis();
if (request instanceof HttpServletRequest) {
HttpServletRequest req = (HttpServletRequest)request;
String action = (String) req.getParameter("action");
//获取系统或项目名称,既http://localhost:8080/myApp/gd/login.do?action=insert时,获取systemName=gd
String systemName = "";
String path = "";
String ss = req.getServletPath();
systemName = ss.split("/")[1];
//获取访问路径,既login.do
path = ss.split("/")[2].substring(0, ss.split("/")[2].indexOf(".do"));
//String pathtemp = req.getRealPath(req.getContextPath());
//获取对应的配置文件的路径
String xmlPath = this.getXmlPath(systemName);
//开始对配置文件进行解析
GdParseXml parseXml = new GdParseXml();
//读取配置文件
parseXml.read(xmlPath);
//设定从页面传来的action
parseXml.setAction(action);
//设定从页面传来的path
parseXml.setPath(path);
//对配置文件进行解析
parseXml.parseXml();
request.setAttribute("parseXml", parseXml);
request.setAttribute("action", action);
request.setAttribute("systemName", systemName);
request.setAttribute("path", path);
request.setAttribute("xmlPath", xmlPath);
context.log("systemName为:" + systemName + " ,action为:" + action + " ,path为:" + path + " ,解析配置文件: " + xmlPath + " 共使用的时间:" + (System.currentTimeMillis() - startTime) + "ms" +
"(该日志由 " + filterName + " 报出)");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
chain.doFilter(request,response);
}
}
private String getXmlPath(String systemName) throws IOException {
// 获取Web环境的物理路径D:/eclipse/workspace/myApp
GdWebPath webPath = new GdWebPath();
webPath.getPath();
//Xml文件所在的路径为工程项目文件夹下的conf文件夹下,名称为系统名.xml
String xmlPath = webPath.getWebPhysicsPath() + "/conf/" + systemName + ".xml";
File file = new File(xmlPath);
if (!file.exists()) {//假如在指定的位置不存在Xml,则默认的Xml文件夹为工程项目文件夹下的/WEB-INF/config-servlet.xml
xmlPath = webPath.getWebPhysicsPath() + "/WEB-INF/config-servlet.xml";
}
return xmlPath;
}
/**
* 销毁
*/
public void destroy() {
}
}