zoukankan      html  css  js  c++  java
  • struts深入原理之RequestProcessor与xml

    和配置文件相对应的代码(struts1) 

    public void process(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
            // Wrap multipart requests with a special wrapper
            request = processMultipart(request);

            // Identify the path component we will use to select a mapping
            String path = processPath(request, response);

            if (path == null) {
                return;
            }

            if (log.isDebugEnabled()) {
                log.debug("Processing a '" + request.getMethod() + "' for path '"
                    + path + "'");
            }

            // Select a Locale for the current user if requested
            processLocale(request, response);

            // Set the content type and no-caching headers if requested
            processContent(request, response);
            processNoCache(request, response);

            // General purpose preprocessing hook
            if (!processPreprocess(request, response)) {
                return;
            }

            this.processCachedMessages(request, response);

            // Identify the mapping for this request
            ActionMapping mapping = processMapping(request, response, path);

            if (mapping == null) {
                return;
            }

            // Check for any role required to perform this action
            if (!processRoles(request, response, mapping)) {
                return;
            }

            // Process any ActionForm bean related to this request
            ActionForm form = processActionForm(request, response, mapping);

            processPopulate(request, response, form, mapping);

            // Validate any fields of the ActionForm bean, if applicable
            try {
                if (!processValidate(request, response, form, mapping)) {
                    return;
                }
            } catch (InvalidCancelException e) {
                ActionForward forward = processException(request, response, e, form, mapping);
                processForwardConfig(request, response, forward);
                return;
            } catch (IOException e) {
                throw e;
            } catch (ServletException e) {
                throw e;
            }

            // Process a forward or include specified by this mapping
            if (!processForward(request, response, mapping)) {
                return;
            }

            if (!processInclude(request, response, mapping)) {
                return;
            }

            // Create or acquire the Action instance to process this request
            Action action = processActionCreate(request, response, mapping);

            if (action == null) {
                return;
            }

            // Call the Action instance itself
            ActionForward forward =
                processActionPerform(request, response, action, form, mapping);

            // Process the returned ActionForward instance
            processForwardConfig(request, response, forward);
        }

  • 相关阅读:
    ubuntu安装iscsi
    函数模板的trick
    EF-Code First(5):二级缓存
    了解线程的属性及方法
    算法--中位数计算
    实习面试
    长轮询实现Chat并迁移到Azure测试
    非聚集索引及其性能优化
    架构设计方案
    大话数据结构-图
  • 原文地址:https://www.cnblogs.com/davidwang456/p/3164217.html
Copyright © 2011-2022 走看看