进入dispatcherServlet
对modelAndView处理
这里view 的两种处理方式,同时调用了view的render方法,就这样结束了
如果view是String ,那么获取视图解析器返回view
最后调用view的render方法处理。
大概流程就是这样。由此我们发现,视图解析器就是返回一个可以解析视图的类,视图解析器不会做其它操作。这点我们看他的接口可以看出来
那么很明显,处理操作都是view来实现的,因为之后就没有其它操作了,查看接口
到这里你可以手写一个简单的视图解析器了。当然你需要抛弃 model 还有国际化了,也可以参考如下。
public class MyView implements View {
@Override
public String getContentType() {
return "text/html";
}
@Override
public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
//有用 ,但是又bug,不过这里我修改不了,可能是jspServlet的问题
// request.getRequestDispatcher("/jsp/index.jsp").forward(request,response);
//
response.getOutputStream().println("<h1>hello world</h1>");
}
}
public class MyViewResolver implements ViewResolver {
@Resource
MyView myView;
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
System.out.println(viewName);
return myView;
}
}