packagecom.wangyang.web;importjava.io.IOException;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.HashMap;importjava.util.Map;importjava.util.Properties;importjavax.servlet.ServletConfig;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.wangyang.model.ShopSc;importcom.wangyang.util.PropertiesUtil;
@WebServlet("/")public class BaseServlet extendsHttpServlet{private Map map = new HashMap();private static final long serialVersionUID = 1L;
@Overridepublic void init(ServletConfig config) throwsServletException {
Properties prop=PropertiesUtil.getMvcProp();for(String key : prop.stringPropertyNames()){
map.put(key, prop.getProperty(key));
}
System.out.println(map);
}
@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {
path(req, resp);
}/*** 基于路径的映射*/
public voidpath(HttpServletRequest req, HttpServletResponse resp){
String method= req.getRequestURI().replace(req.getServletContext().getContextPath()+"/", "");try{
String[] str= method.split("/");
String className;
String methodName;if(str.length<=1){
className=str[0];
methodName="execute";
}else{
className= str[0];
methodName= str[1];
}
System.out.println(className+"--"+methodName);
Class>clz;try{
clz=Class.forName(map.get(className));
}catch(NullPointerException e1) {
error("没有找到处理的类!!", req, resp);return;
}
Method m;try{
m= clz.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
}catch(NoSuchMethodException e) {
error("该类没有要执行的方法!!", req, resp);return;
}
String path=(String)m.invoke(clz.newInstance(), req,resp);
req.getRequestDispatcher("/WEB-INF/"+path).forward(req, resp);
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SecurityException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IllegalAccessException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IllegalArgumentException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(InvocationTargetException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(InstantiationException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(ServletException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}public void error(String msg,HttpServletRequest req,HttpServletResponse resp) throwsServletException, IOException{
req.setAttribute("error",msg);
req.getRequestDispatcher("/WEB-INF/error.jsp").forward(req, resp);
}
}