📄 dispatcherservlet.java
字号:
package pojo;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DispatcherServlet extends HttpServlet {
private ServletContext context;
private Map<String , Controller> controllers;
//用于存放核心处理器
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
context = config.getServletContext();
//将url和对应的Controller关联起来
controllers = new HashMap<String,Controller>();
controllers.put("/test.cmd", (Controller) new TestController());
controllers.put("/login.cmd", (Controller) new LoginController());
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String contextPath = request.getContextPath();
System.out.println(contextPath);
String uri = request.getRequestURI().
substring(contextPath.length());
System.out.println(uri);
Controller controller = controllers.get(uri);
if(controller == null){
response.sendError(404);
return;
//没找到合适的核心处理器就返回一个404错误
//结束方法
}
try{
//将请求交给testcontroller处理
ModelAndView mv = controller.handerRequest(request, response);
//将Model绑到request中
Map<String , Object> model = mv.getModel();
Set<String> keys = model.keySet();
for(String key:keys){
request.setAttribute(key, model.get(key));
}
String url = mv.getView();
context.getRequestDispatcher(url).forward(request, response);
}catch(Exception e){
response.sendError(500);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -