首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Struts2源码解析(一)

2012-11-03 
Struts2源码解析(1)?StrutsPrepareAndExecuteFilter类 public void doFilter(ServletRequest req, Servlet

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);        }    }

热点排行