读书人

转: 俯瞰Struts2整体流程(6)下

发布时间: 2012-09-13 09:51:52 作者: rapoo

转: 俯瞰Struts2整体流程(6)上

3.1??Struts 2工作流程

public?class?FilterDispatcher?implements?StrutsStatics,?Filter?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????/**
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?定义一个Log实例
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*/
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下private?static?final?Log?LOG?=?LogFactory.getLog(FilterDispatcher.class);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下…?...
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????/**
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?存放属性文件中的.STRUTS_I18N_ENCODING值
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*/
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????private?static?String?encoding;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????/**
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?定义ActionMapper实例
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*/
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????private?static?ActionMapper?actionMapper;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????/**
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?定义FilterConfig实例
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*/
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????private?FilterConfig?filterConfig;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????protected?Dispatcher?dispatcher;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????/**
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?创建一个默认的dispatcher,初始化filter
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?设置默认的packages?????*
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*/
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????public?void?init(FilterConfig?filterConfig)?throws?ServletException?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????this.filterConfig?=?filterConfig;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下???????dispatcher?=?createDispatcher(filterConfig);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????dispatcher.init();
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????String?param?=?filterConfig.getInitParameter("packages");
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????String?packages?=?"org.apache.struts2.static?template?org.apache.struts2.interceptor.debugging";
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????if?(param?!=?null)?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????packages?=?param?+?"?"?+?packages;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????this.pathPrefixes?=?parse(packages);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????//销毁filter方法
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下???public?void?destroy()?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????if?(dispatcher?==?null)?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????LOG.warn("something?is?seriously?wrong,?Dispatcher?is?not?initialized?(null)?");
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????}?else?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????dispatcher.cleanup();
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????/**
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?处理一个Action或者资源请求
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?<p/>
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?filter尝试将请求同action?mapping相匹配
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?如果找到,将执行dispatcher的serviceAction方法
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?如果Action处理失败,?doFilter将建立一个异常
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?<p/>
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?如果请求静态资源
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?资源将被直接复制给?response
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?<p/>
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????*?如果找不到匹配Action?或者静态资源,则直接跳出
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下?????public?void?doFilter(ServletRequest?req,?ServletResponse?res,?FilterChain?chain)?throws?IOException,?ServletException?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????HttpServletRequest?request?=?(HttpServletRequest)?req;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????HttpServletResponse?response?=?(HttpServletResponse)?res;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????ServletContext?servletContext?=?getServletContext();
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????String?timerKey?=?"FilterDispatcher_doFilter:?";
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????try?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????UtilTimerStack.push(timerKey);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????request?=?prepareDispatcherAndWrapRequest(request,?response);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????ActionMapping?mapping;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????try?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????mapping=actionMapper.getMapping(request,?dispatcher.getConfigurationManager());
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????}?catch?(Exception?ex)?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????LOG.error("error?getting?ActionMapping",?ex);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????dispatcher.sendError(request,?response,?servletContext,?HttpServletResponse.SC_INTERNAL_SERVER_ERROR,?ex);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????return;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????if?(mapping?==?null)?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????String?resourcePath?=?RequestUtils.getServletPath(request);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????if?("".equals(resourcePath)?&&?null?!=?request.getPathInfo())?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????????resourcePath?=?request.getPathInfo();
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????if?(serveStatic?&&?resourcePath.startsWith("/struts"))?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????????String?name?=?resourcePath.substring("/struts".length());
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????????findStaticResource(name,?request,?response);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????}?else?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????????//为一个普通的request,?则通过
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????????chain.doFilter(request,?response);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????return;
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下/**
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下*这个方法询问ActionMapper是否需要调用某个Action来处理这个(request)请求,
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下*如果ActionMapper决定需要调用某个Action,
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下*FilterDispatcher则把请求的处理交给ActionProxy
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????dispatcher.serviceAction(request,?response,?servletContext,?mapping);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????}?finally?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????try?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????ActionContextCleanUp.cleanUp(req);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????}?finally?{
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????????UtilTimerStack.pop(timerKey);
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下????????}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下…?…
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下}
转: 俯瞰Struts2整体流程(6)下
转: 俯瞰Struts2整体流程(6)下

?

?

读书人网 >软件架构设计

热点推荐