读书人

Struts2源码解析(一)

发布时间: 2012-11-03 10:57:43 作者: rapoo

Struts2源码解析(1)

?

StrutsPrepareAndExecuteFilter类 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;        HttpServletResponse response = (HttpServletResponse) res;        try {            //设置request的characterEncoding属性为struts.i18n.encoding的值           ?prepare.setEncodingAndLocale(request, response);            //创建ActionContext           ?prepare.createActionContext(request, response);             //通过ThreadLocal将Dispatcher对象绑定到当前线程            ?prepare.assignDispatcherToThread();             //以struts.action.excludePattern属性值为后缀的不处理             ?if ( excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) {chain.doFilter(request, response);} else {                                //如果上传文件,对request对象进行重新包装                               ?request = prepare.wrapRequest(request);                                 //解析url,将满足的值namespace,name,method的值放入ActionMapping                                ?ActionMapping mapping = prepare.findActionMapping(request, response, true);if (mapping == null) {// struts.serve.static属性配置为true,且在"/struts","/static"路径下资源增加浏览器缓存,设置Expires属性为一天                                        boolean handled = execute.executeStaticResourceRequest(request, response);if (!handled) {chain.doFilter(request, response);}} else {execute.executeAction(request, response, mapping);}}        } finally {            //回收资源            ?prepare.cleanupRequest(request);        }    }

读书人网 >编程

热点推荐