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

  • 相关阅读:
    css浮动
    css各种元素最原始的表现
    css3 unset属性
    js类式继承
    javascript编写Tab选项卡
    javaScript事件冒泡
    javascript中的&&与||的用法
    比较好的前端网站
    原生js开发tab选项卡之闭包
    冒泡排序(中级版)
  • 原文地址:https://www.cnblogs.com/davidwang456/p/3164217.html
Copyright © 2020-2023  润新知