package cn.jcenterhome.web.filter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
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 javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.jcenterhome.util.Common;
import cn.jcenterhome.util.JavaCenterHome;
import cn.jcenterhome.util.PropertiesHelper;
public class InitFilter implements Filter {
public void init(FilterConfig fc) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,
ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
request.setCharacterEncoding(JavaCenterHome.JCH_CHARSET);
response.setCharacterEncoding(JavaCenterHome.JCH_CHARSET);
try {
Map params = request.getParameterMap();
Method method = params.getClass().getMethod("setLocked",boolean.class);
method.invoke(params,false);
Common.sAddSlashes(params);
} catch (Exception e) {
}
if (JavaCenterHome.jchRoot == null) {
HttpSession session = request.getSession();
JavaCenterHome.jchRoot = session.getServletContext().getRealPath("/");
}
Map<String, String> jchConfig = JavaCenterHome.jchConfig;
if (jchConfig.isEmpty()) {
try {
initConfig(request, jchConfig);
} catch (IOException e) {
response.getWriter().write("��ȡ�����ļ�(./config.properties)����" + e.getMessage());
return;
}
}
chain.doFilter(req, res);
}
private synchronized void initConfig(HttpServletRequest request, Map<String, String> jchConfig)
throws IOException {
PropertiesHelper propHelper = new PropertiesHelper(JavaCenterHome.jchRoot + "config.properties");
Properties config = propHelper.getProperties();
Set<Object> keys = config.keySet();
for (Object key : keys) {
String k = (String) key;
String v = (String) config.get(key);
jchConfig.put(k, v);
}
String siteUrl = jchConfig.get("siteUrl");
if (Common.empty(siteUrl)) {
jchConfig.put("siteUrl", Common.getSiteUrl(request));
}
ServletContext servletContext=request.getSession().getServletContext();
servletContext.setAttribute("jchConfig", JavaCenterHome.jchConfig);
}
public void destroy() {
}
}