亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? actionservlet.java

?? 和多的 struct例子 的學習 供初學者參考
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*
 * $Id: ActionServlet.java 264684 2005-08-30 03:08:01Z niallp $ 
 *
 * Copyright 2000-2005 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.struts.action;

import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.MissingResourceException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.beanutils.converters.BigDecimalConverter;
import org.apache.commons.beanutils.converters.BigIntegerConverter;
import org.apache.commons.beanutils.converters.BooleanConverter;
import org.apache.commons.beanutils.converters.ByteConverter;
import org.apache.commons.beanutils.converters.CharacterConverter;
import org.apache.commons.beanutils.converters.DoubleConverter;
import org.apache.commons.beanutils.converters.FloatConverter;
import org.apache.commons.beanutils.converters.IntegerConverter;
import org.apache.commons.beanutils.converters.LongConverter;
import org.apache.commons.beanutils.converters.ShortConverter;
import org.apache.commons.collections.FastHashMap;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.RuleSet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.Globals;
import org.apache.struts.config.ConfigRuleSet;
import org.apache.struts.config.DataSourceConfig;
import org.apache.struts.config.FormBeanConfig;
import org.apache.struts.config.MessageResourcesConfig;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.config.ModuleConfigFactory;
import org.apache.struts.config.PlugInConfig;
import org.apache.struts.util.MessageResources;
import org.apache.struts.util.MessageResourcesFactory;
import org.apache.struts.util.ModuleUtils;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.util.ServletContextWriter;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 * <p><strong>ActionServlet</strong> provides the "controller" in the
 * Model-View-Controller (MVC) design pattern for web applications that is
 * commonly known as "Model 2".  This nomenclature originated with a
 * description in the JavaServerPages Specification, version 0.92, and has
 * persisted ever since (in the absence of a better name).</p>
 *
 * <p>Generally, a "Model 2" application is architected as follows:</p>
 * <ul>
 * <li>The user interface will generally be created with server pages, which
 *     will not themselves contain any business logic. These pages represent
 *     the "view" component of an MVC architecture.</li>
 * <li>Forms and hyperlinks in the user interface that require business logic
 *     to be executed will be submitted to a request URI that is mapped to this
 *     servlet.</li>
 * <li>There can be <b>one</b> instance of this servlet class,
 *     which receives and processes all requests that change the state of
 *     a user's interaction with the application.  The servlet delegates the
 *     handling of a request to a {@link RequestProcessor} object. This component
 *     represents the "controller" component of an MVC architecture.</li>
 * <li>The <code>RequestProcessor</code> selects and invokes an {@link Action} class to perform
 *     the requested business logic, or delegates the response to another resource.</li>
 * <li>The <code>Action</code> classes can manipulate the state of the application's
 *     interaction with the user, typically by creating or modifying JavaBeans
 *     that are stored as request or session attributes (depending on how long
 *     they need to be available). Such JavaBeans represent the "model"
 *     component of an MVC architecture.</li>
 * <li>Instead of producing the next page of the user interface directly,
 *     <code>Action</code> classes generally return an {@link ActionForward} to indicate
 *     which resource should handle the response. If the <code>Action</code>
 *     does not return null, the <code>RequestProcessor</code> forwards or
 *     redirects to the specified resource (by utilizing
 *     <code>RequestDispatcher.forward</code> or <code>Response.sendRedirect</code>)
 *     so as to produce the next page of the user interface.</li>
 * </ul>
 *
 * <p>The standard version of <code>RequestsProcessor</code> implements the
 *    following logic for each incoming HTTP request. You can override
 *    some or all of this functionality by subclassing this object and
 *    implementing your own version of the processing.</p>
 * <ul>
 * <li>Identify, from the incoming request URI, the substring that will be
 *     used to select an action procedure.</li>
 * <li>Use this substring to map to the Java class name of the corresponding
 *     action class (an implementation of the <code>Action</code> interface).
 *     </li>
 * <li>If this is the first request for a particular <code>Action</code> class,
 *     instantiate an instance of that class and cache it for future use.</li>
 * <li>Optionally populate the properties of an <code>ActionForm</code> bean
 *     associated with this mapping.</li>
 * <li>Call the <code>execute</code> method of this <code>Action</code> class, passing
 *     on a reference to the mapping that was used, the relevant form-bean
 *     (if any), and the request and the response that were passed to the
 *     controller by the servlet container (thereby providing access to any
 *     specialized properties of the mapping itself as well as to the
 *     ServletContext).
 *     </li>
 * </ul>
 *
 * <p>The standard version of <code>ActionServlet</code> is configured based
 * on the following servlet initialization parameters, which you will specify
 * in the web application deployment descriptor (<code>/WEB-INF/web.xml</code>)
 * for your application.  Subclasses that specialize this servlet are free to
 * define additional initialization parameters. </p>
 * <ul>
 * <li><strong>config</strong> - Comma-separated list of context-relative
 *     path(s) to the XML resource(s) containing the configuration information
 *     for the default module.  (Multiple files support since Struts 1.1)
 *     [/WEB-INF/struts-config.xml].</li>
 * <li><strong>config/${module}</strong> - Comma-separated list of
 *     Context-relative path(s) to the XML resource(s)
 *     containing the configuration information for the module that
 *     will use the specified prefix (/${module}). This can be repeated as many
 *     times as required for multiple modules. (Since Struts 1.1)</li>
 * <li><strong>configFactory</strong> - The Java class name of the
 *     <code>ModuleConfigFactory</code> used to create the implementation of the
 *     <code>ModuleConfig</code> interface.
 *     [org.apache.struts.config.impl.DefaultModuleConfigFactory]
 * </li>
 * <li><strong>convertNull</strong> - Force simulation of the Struts 1.0 behavior
 *     when populating forms. If set to true, the numeric Java wrapper class types
 *     (like <code>java.lang.Integer</code>) will default to null (rather than 0).
 *     (Since Struts 1.1) [false] </li>
 * <li><strong>rulesets</strong> - Comma-delimited list of fully qualified
 *     classnames of additional <code>org.apache.commons.digester.RuleSet</code>
 *     instances that should be added to the <code>Digester</code> that will
 *     be processing <code>struts-config.xml</code> files.  By default, only
 *     the <code>RuleSet</code> for the standard configuration elements is
 *     loaded.  (Since Struts 1.1)</li>
 * <li><strong>validating</strong> - Should we use a validating XML parser to
 *     process the configuration file (strongly recommended)? [true]</li>
 * </ul>
 *
 * @version $Rev: 264684 $ $Date: 2005-08-30 04:08:01 +0100 (Tue, 30 Aug 2005) $
 */
public class ActionServlet extends HttpServlet {


    // ----------------------------------------------------- Instance Variables


    /**
     * <p>Comma-separated list of context-relative path(s) to our configuration
     * resource(s) for the default module.</p>
     */
    protected String config = "/WEB-INF/struts-config.xml";


    /**
     * <p>The Digester used to produce ModuleConfig objects from a
     * Struts configuration file.</p>
     *
     * @since Struts 1.1
     */
    protected Digester configDigester = null;


    /**
     * <p>The flag to request backwards-compatible conversions for form bean
     * properties of the Java wrapper class types.</p>
     *
     * @since Struts 1.1
     */
    protected boolean convertNull = false;


    /**
     * <p>The JDBC data sources that has been configured for this module,
     * if any, keyed by the servlet context attribute under which they are
     * stored.</p>
     */
    protected FastHashMap dataSources = new FastHashMap();


    /**
     * <p>The resources object for our internal resources.</p>
     */
    protected MessageResources internal = null;


    /**
     * <p>The Java base name of our internal resources.</p>
     * @since Struts 1.1
     */
    protected String internalName = "org.apache.struts.action.ActionResources";


    /**
     * <p>Commons Logging instance.</p>
     *
     * @since Struts 1.1
     */
    protected static Log log = LogFactory.getLog(ActionServlet.class);


    /**
     * <p>The <code>RequestProcessor</code> instance we will use to process
     * all incoming requests.</p>
     *
     * @since Struts 1.1
     */
    protected RequestProcessor processor = null;


    /**
     * <p>The set of public identifiers, and corresponding resource names, for
     * the versions of the configuration file DTDs that we know about.  There
     * <strong>MUST</strong> be an even number of Strings in this list!</p>
     */
    protected String registrations[] = {
        "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN",
        "/org/apache/struts/resources/struts-config_1_0.dtd",
        "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN",
        "/org/apache/struts/resources/struts-config_1_1.dtd",
        "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN",
        "/org/apache/struts/resources/struts-config_1_2.dtd",
        "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN",
        "/org/apache/struts/resources/web-app_2_2.dtd",
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN",
        "/org/apache/struts/resources/web-app_2_3.dtd"
    };


    /**
     * <p>The URL pattern to which we are mapped in our web application
     * deployment descriptor.</p>
     */
    protected String servletMapping = null; // :FIXME: - multiples?


    /**
     * <p>The servlet name under which we are registered in our web application
     * deployment descriptor.</p>
     */
    protected String servletName = null;


    // ---------------------------------------------------- HttpServlet Methods


    /**
     * <p>Gracefully shut down this controller servlet, releasing any resources
     * that were allocated at initialization.</p>
     */
    public void destroy() {

        if (log.isDebugEnabled()) {
            log.debug(internal.getMessage("finalizing"));
        }

        destroyModules();
        destroyInternal();
        getServletContext().removeAttribute(Globals.ACTION_SERVLET_KEY);

        // Release our LogFactory and Log instances (if any)
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        if (classLoader == null) {
            classLoader = ActionServlet.class.getClassLoader();
        }
        try {
            LogFactory.release(classLoader);
        } catch (Throwable t) {
            ; // Servlet container doesn't have the latest version
            ; // of commons-logging-api.jar installed

            // :FIXME: Why is this dependent on the container's version of commons-logging?
            // Shouldn't this depend on the version packaged with Struts?
            /*
              Reason: LogFactory.release(classLoader); was added as
              an attempt to investigate the OutOfMemory error reported on Bugzilla #14042.
              It was committed for version 1.136 by craigmcc
            */
        }

        PropertyUtils.clearDescriptors();

    }


    /**
     * <p>Initialize this servlet.  Most of the processing has been factored into
     * support methods so that you can override particular functionality at a
     * fairly granular level.</p>
     *
     * @exception ServletException if we cannot configure ourselves correctly
     */
    public void init() throws ServletException {

        // Wraps the entire initialization in a try/catch to better handle
        // unexpected exceptions and errors to provide better feedback
        // to the developer
        try {
            initInternal();
            initOther();
            initServlet();
    
            getServletContext().setAttribute(Globals.ACTION_SERVLET_KEY, this);
            initModuleConfigFactory();
            // Initialize modules as needed
            ModuleConfig moduleConfig = initModuleConfig("", config);
            initModuleMessageResources(moduleConfig);
            initModuleDataSources(moduleConfig);
            initModulePlugIns(moduleConfig);
            moduleConfig.freeze();
    
            Enumeration names = getServletConfig().getInitParameterNames();
            while (names.hasMoreElements()) {
                String name = (String) names.nextElement();
                if (!name.startsWith("config/")) {
                    continue;
                }
                String prefix = name.substring(6);
                moduleConfig = initModuleConfig
                    (prefix, getServletConfig().getInitParameter(name));
                initModuleMessageResources(moduleConfig);
                initModuleDataSources(moduleConfig);
                initModulePlugIns(moduleConfig);
                moduleConfig.freeze();
            }
    
            this.initModulePrefixes(this.getServletContext());
    
            this.destroyConfigDigester();
        } catch (UnavailableException ex) {
            throw ex;
        } catch (Throwable t) {

            // The follow error message is not retrieved from internal message
            // resources as they may not have been able to have been 
            // initialized
            log.error("Unable to initialize Struts ActionServlet due to an "
                + "unexpected exception or error thrown, so marking the "
                + "servlet as unavailable.  Most likely, this is due to an "
                + "incorrect or missing library dependency.", t);
            throw new UnavailableException(t.getMessage());
        }    
    }

    /**
     * <p>Saves a String[] of module prefixes in the ServletContext under
     * Globals.MODULE_PREFIXES_KEY.  <strong>NOTE</strong> -
     * the "" prefix for the default module is not included in this list.</p>
     *
     * @param context The servlet context.
     * @since Struts 1.2
     */
    protected void initModulePrefixes(ServletContext context) {
        ArrayList prefixList = new ArrayList();

        Enumeration names = context.getAttributeNames();
        while (names.hasMoreElements()) {
            String name = (String) names.nextElement();
            if (!name.startsWith(Globals.MODULE_KEY)) {
                continue;
            }

            String prefix = name.substring(Globals.MODULE_KEY.length());
            if (prefix.length() > 0) {
                prefixList.add(prefix);
            }
        }

        String[] prefixes = (String[]) prefixList.toArray(new String[prefixList.size()]);
        context.setAttribute(Globals.MODULE_PREFIXES_KEY, prefixes);
    }


    /**

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费观看一区二区三区| 亚洲老妇xxxxxx| 欧美午夜免费电影| 99久久亚洲一区二区三区青草| 国产真实乱偷精品视频免| 日韩精品亚洲一区二区三区免费| 亚洲成人免费在线观看| 亚洲一区在线观看视频| 亚洲主播在线播放| 亚洲国产你懂的| 日韩精品一区第一页| 蜜桃av一区二区在线观看| 秋霞影院一区二区| 麻豆精品一区二区三区| 精品亚洲国产成人av制服丝袜| 九九视频精品免费| 国产精品亚洲а∨天堂免在线| 国产精品综合视频| 色诱视频网站一区| 欧美日韩在线播放三区四区| 欧美卡1卡2卡| 精品国内二区三区| 国产色91在线| 亚洲猫色日本管| 亚洲h在线观看| 国内精品自线一区二区三区视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲午夜在线观看视频在线| 亚洲成人av中文| 精品无码三级在线观看视频| 丁香天五香天堂综合| 91行情网站电视在线观看高清版| 欧美女孩性生活视频| 久久理论电影网| 亚洲在线中文字幕| 精品一区二区三区在线播放 | 成人精品鲁一区一区二区| 99久久国产综合色|国产精品| 欧美日韩你懂得| 国产亚洲欧美一区在线观看| 国产日韩欧美在线一区| 亚洲欧洲成人精品av97| 日产欧产美韩系列久久99| 成人国产精品免费观看视频| 欧美无砖砖区免费| 久久久久久毛片| 日韩精品福利网| 色老汉一区二区三区| 久久久精品2019中文字幕之3| 亚洲自拍都市欧美小说| 国产suv精品一区二区6| 8x8x8国产精品| 亚洲精品国产无套在线观| 精品影视av免费| 91麻豆精品国产自产在线观看一区 | 国产精华液一区二区三区| 中文字幕日韩一区二区| 国产高清一区日本| 7777精品久久久大香线蕉| 亚洲欧洲精品一区二区精品久久久| 视频一区视频二区在线观看| 97精品国产97久久久久久久久久久久| 制服丝袜亚洲色图| 亚洲午夜一区二区| 99久久久无码国产精品| 国产女同互慰高潮91漫画| 免费成人av在线| 欧美放荡的少妇| 亚洲h精品动漫在线观看| 91女人视频在线观看| 国产精品嫩草99a| 国产黄人亚洲片| 日韩精品在线一区| 蜜臀a∨国产成人精品| 精品视频在线看| 亚洲第一电影网| 欧美午夜不卡在线观看免费| 成人三级伦理片| 欧美情侣在线播放| 亚洲欧美国产高清| www.日韩精品| 亚洲欧美激情小说另类| 91国偷自产一区二区三区观看| 亚洲欧美综合网| 91视频com| 亚洲一区影音先锋| 欧美日韩二区三区| 奇米亚洲午夜久久精品| 欧美一区二区三区人| 麻豆国产一区二区| 久久男人中文字幕资源站| 国产福利不卡视频| 国产精品久久久99| 欧美在线免费观看视频| 婷婷久久综合九色国产成人| 91麻豆精品国产91久久久资源速度 | 精品视频1区2区| 日本vs亚洲vs韩国一区三区二区| 日韩一区二区在线观看视频| 国产一区二区三区不卡在线观看 | 国产一区二区三区国产| 国产欧美一区二区三区沐欲 | 国产精品第四页| 欧美日韩国产在线观看| 另类小说视频一区二区| 国产调教视频一区| 欧美性色黄大片| 国内精品久久久久影院薰衣草| 国产精品你懂的| 欧美日韩一二三| 国产在线精品一区二区不卡了| 国产精品国产自产拍在线| 欧美日韩国产美女| 国产成人精品亚洲日本在线桃色 | 在线观看av一区| 久久国产精品免费| 亚洲女与黑人做爰| 日韩欧美国产综合| 91香蕉视频mp4| 麻豆久久久久久久| 亚洲欧美日韩在线| 欧美一级二级三级乱码| 国产在线精品不卡| 亚洲一区二区精品视频| 久久久久久久久一| 91麻豆精品国产91久久久久久| 国产精品一区二区三区四区| 亚洲一二三四在线| 国产精品家庭影院| 欧美精品一区二区三区四区 | 成人深夜在线观看| 亚洲国产毛片aaaaa无费看| 久久综合久久综合亚洲| 欧美在线一二三四区| 国产福利不卡视频| 美国av一区二区| 午夜精品久久久久久久久| 国产精品毛片高清在线完整版| 日韩美女在线视频| 欧美三级午夜理伦三级中视频| 成人免费看视频| 国产伦精品一区二区三区视频青涩 | 精品噜噜噜噜久久久久久久久试看| 91亚洲永久精品| 丰满亚洲少妇av| 亚洲高清在线精品| 亚洲欧洲色图综合| 久久精品一区二区三区四区| 欧美丝袜丝交足nylons图片| 成人精品小蝌蚪| 国产福利一区二区| 国产精品一级片在线观看| 麻豆精品国产91久久久久久| 五月天精品一区二区三区| 亚洲电影视频在线| 五月综合激情网| 亚洲国产你懂的| 性久久久久久久久| 日韩电影一区二区三区| 日韩精品亚洲一区二区三区免费| 性做久久久久久免费观看| 日韩黄色片在线观看| 日韩精品一二三四| 国内精品伊人久久久久av一坑| 久久不见久久见免费视频1| 久久成人18免费观看| 国产精品一区二区男女羞羞无遮挡| 国产一区二区在线看| 精品一区二区国语对白| 日本网站在线观看一区二区三区 | 欧美色图天堂网| 欧美日韩一级二级| 欧美老人xxxx18| 欧美大片在线观看| 国产欧美一区二区精品久导航 | 色系网站成人免费| 欧美日精品一区视频| 91麻豆精品国产91久久久久久 | 丁香激情综合国产| 99久久精品一区二区| 欧美性感一区二区三区| 欧美一二三区精品| 中文字幕国产一区二区| 国产精品传媒视频| 国产精品久久久久国产精品日日| 国产农村妇女毛片精品久久麻豆| 欧美电影免费观看高清完整版 | 一区二区三区资源| 亚洲成人精品影院| 国产九九视频一区二区三区| av成人老司机| 日韩欧美国产小视频| 中文字幕一区二区三区视频| 日韩中文字幕不卡| 99久久精品费精品国产一区二区| 欧美一区日韩一区| 亚洲人精品午夜| 精品一区二区三区免费毛片爱| 99re热这里只有精品免费视频| 欧美成人性福生活免费看|