<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>科学观察/评测/NEW WORLD &#187; servlet</title>
	<atom:link href="http://www.live51.net/category/web/servlet/feed" rel="self" type="application/rss+xml" />
	<link>http://www.live51.net</link>
	<description>做对每件事，做好每件事</description>
	<lastBuildDate>Fri, 30 Oct 2009 15:00:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>连载servlet,dwr,spring相关内容</title>
		<link>http://www.live51.net/2006/11/30/48.htm</link>
		<comments>http://www.live51.net/2006/11/30/48.htm#comments</comments>
		<pubDate>Thu, 30 Nov 2006 06:47:32 +0000</pubDate>
		<dc:creator>summer</dc:creator>
				<category><![CDATA[servlet]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[东西南北]]></category>

		<guid isPermaLink="false">http://www.live51.net/2006/11/30/48.htm</guid>
		<description><![CDATA[正在连载中&#8230; 将循序渐进深入web开发。
]]></description>
			<content:encoded><![CDATA[<p>正在连载中&#8230; 将循序渐进深入web开发。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.live51.net/2006/11/30/48.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>继续“了解sevlet容器”</title>
		<link>http://www.live51.net/2006/11/20/39.htm</link>
		<comments>http://www.live51.net/2006/11/20/39.htm#comments</comments>
		<pubDate>Mon, 20 Nov 2006 15:30:58 +0000</pubDate>
		<dc:creator>summer</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[东西南北]]></category>

		<guid isPermaLink="false">http://www.live51.net/2006/11/20/39.htm</guid>
		<description><![CDATA[上一章里面讲到两个“高级”参数：init-param,load-on-startup


beanFactoryConfig
./services-config.xml

1

init-param在程序中的使用：

    public void init(ServletConfig servletConfig) throws ServletException {
        String beanFactoryConfig = servletConfig.getInitParameter("beanFactoryConfig");
        context = new ClassPathXmlApplicationContext(beanFactoryConfig);
    }

程序中我们得到的beanFactoryConfig的值为&#8221;./services-config.xml&#8221;，以上代码片断是用LiveServlet来初始化Spring的bean容器。
load-on-startup表明该servlet是在web启动时就加载的，其中&#8221;1&#8243;表明启动顺序，还可以有&#8221;2&#8243;等值，数值的大小表明了启动的优先级别。
]]></description>
			<content:encoded><![CDATA[<p>上一章里面讲到两个“高级”参数：init-param,load-on-startup<br />
<code><br />
<init-param></p>
<param-name>beanFactoryConfig</param-name>
<param-value>./services-config.xml</param-value>
</init-param><br />
<load-on-startup>1</load-on-startup><br />
</code><br />
init-param在程序中的使用：<br />
<code><br />
    public void init(ServletConfig servletConfig) throws ServletException {<br />
        String beanFactoryConfig = servletConfig.getInitParameter("beanFactoryConfig");<br />
        context = new ClassPathXmlApplicationContext(beanFactoryConfig);<br />
    }<br />
</code><br />
程序中我们得到的beanFactoryConfig的值为&#8221;./services-config.xml&#8221;，以上代码片断是用LiveServlet来初始化Spring的bean容器。<br />
load-on-startup表明该servlet是在web启动时就加载的，其中&#8221;1&#8243;表明启动顺序，还可以有&#8221;2&#8243;等值，数值的大小表明了启动的优先级别。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.live51.net/2006/11/20/39.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tomcat bootstrap</title>
		<link>http://www.live51.net/2006/11/19/37.htm</link>
		<comments>http://www.live51.net/2006/11/19/37.htm#comments</comments>
		<pubDate>Sun, 19 Nov 2006 14:18:16 +0000</pubDate>
		<dc:creator>summer</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.live51.net/2006/11/19/37.htm</guid>
		<description><![CDATA[下载apache-tomcat-6.0.2-src我们来分析一下tomcat的部分源码。
查看catalina.sh或者catalina.bat可以发现这一行：org.apache.catalina.startup.Bootstrap &#8220;$@&#8221; start
由此我们了解到调用Bootstrap来启动系统是tomcat启动的第一步。
下一步我们再来查看一下Bootstrap.java的源码，
A.main()
   里面逻辑很清晰也很简单：
  1.new一个Bootstrap对象，并调用init()来初始化系统。
  2.通过外部传入的参数来决定是start,stop,startd,stopd。
B.init()
   main()里面的init()所做的事情：
  1.设置CatalinaHome
   2.设置CatalinaBase
   3.初始化ClassLoaders
   4.使用初始化好的classLoader来做一些事情
B.1和B.2都是通过配置文件和当前环境所处绝对路径来设置实际的运行环境。
B.3创建了commonLoader，catalinaLoader，sharedLoader，它们之间的关系是:
commonLoader&#8212;->catalinaLoader，commonLoader&#8212;->sharedLoader
catalinaLoader与sharedLoader是位于同一层级，并且有共同的parent：commonLoader
B.4主要是调用catalinaLoader中的org.apache.catalina.startup.Catalina来启动系统。
]]></description>
			<content:encoded><![CDATA[<p>下载apache-tomcat-6.0.2-src我们来分析一下tomcat的部分源码。<br />
查看catalina.sh或者catalina.bat可以发现这一行：org.apache.catalina.startup.Bootstrap &#8220;$@&#8221; start<br />
由此我们了解到调用Bootstrap来启动系统是tomcat启动的第一步。<br />
下一步我们再来查看一下Bootstrap.java的源码，</p>
<p>A.main()<br />
   里面逻辑很清晰也很简单：<br />
  1.new一个Bootstrap对象，并调用init()来初始化系统。<br />
  2.通过外部传入的参数来决定是start,stop,startd,stopd。</p>
<p>B.init()<br />
   main()里面的init()所做的事情：<br />
  1.设置CatalinaHome<br />
   2.设置CatalinaBase<br />
   3.初始化ClassLoaders<br />
   4.使用初始化好的classLoader来做一些事情</p>
<p>B.1和B.2都是通过配置文件和当前环境所处绝对路径来设置实际的运行环境。</p>
<p>B.3创建了commonLoader，catalinaLoader，sharedLoader，它们之间的关系是:<br />
commonLoader&#8212;->catalinaLoader，commonLoader&#8212;->sharedLoader<br />
catalinaLoader与sharedLoader是位于同一层级，并且有共同的parent：commonLoader</p>
<p>B.4主要是调用catalinaLoader中的org.apache.catalina.startup.Catalina来启动系统。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.live51.net/2006/11/19/37.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何让servlet为我们干活</title>
		<link>http://www.live51.net/2006/11/15/30.htm</link>
		<comments>http://www.live51.net/2006/11/15/30.htm#comments</comments>
		<pubDate>Wed, 15 Nov 2006 15:38:29 +0000</pubDate>
		<dc:creator>summer</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.live51.net/2006/11/15/30.htm</guid>
		<description><![CDATA[同样我们需要在web.xml中做一些配置：

    
        liveServlet
        /live/*
    

这段配置的意思就是：该应用中/live/目录下所有请求都会交由liveServlet来处理，即访问/live/hello或者/live/hello.htm这样的请求都会交给liveServlet来处理。liveServlet就是之前我们在配置文件中定义的那个servlet。
我们可以配置多个servlet来处理不同类型的请求，由于url-pattern是支持统配符的，可以组装出很多种的URL，我们也可以使用一个serlvet，该servlet将接收到的请求根据不同的类型来进行分发给后面的程序去处理，这里的不同的类型即是通过url不同来区分的。
]]></description>
			<content:encoded><![CDATA[<p>同样我们需要在web.xml中做一些配置：<br />
<code><br />
    <servlet-mapping><br />
        <servlet-name>liveServlet</servlet-name><br />
        <url-pattern>/live/*</url-pattern><br />
    </servlet-mapping><br />
</code><br />
这段配置的意思就是：该应用中/live/目录下所有请求都会交由liveServlet来处理，即访问/live/hello或者/live/hello.htm这样的请求都会交给liveServlet来处理。liveServlet就是之前我们在配置文件中定义的那个servlet。</p>
<p>我们可以配置多个servlet来处理不同类型的请求，由于url-pattern是支持统配符的，可以组装出很多种的URL，我们也可以使用一个serlvet，该servlet将接收到的请求根据不同的类型来进行分发给后面的程序去处理，这里的不同的类型即是通过url不同来区分的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.live51.net/2006/11/15/30.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>了解servlet容器</title>
		<link>http://www.live51.net/2006/11/13/26.htm</link>
		<comments>http://www.live51.net/2006/11/13/26.htm#comments</comments>
		<pubDate>Mon, 13 Nov 2006 15:43:07 +0000</pubDate>
		<dc:creator>summer</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[dwr]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.live51.net/2006/11/13/26.htm</guid>
		<description><![CDATA[容器：容纳符合规格的东西器皿。servlet容器：能放置servlet的“器皿”，servlet必须符合servlet的一些规格。
HttpServlet是servlet容器中最基本的类型了，只要继承HttpServlet便可以被容器执行，当然首先你得在该容器的配置文件web.xml中做一些声明：


    liveServlet
    net.live51.LiveServlet
      
beanFactoryConfig
    
./services-config.xml
      
    1
 

以上片断是做了一个servlet-name为liveServlet的声明，指明了实际处理的类，当然net.live51.LiveServlet是继承了HttpServlet的，其中init-param和load-on-startup为高级用法，以后在讲到，将以上配置简化一下：


    liveServlet
    net.live51.LiveServlet


这样也是可行的。
定义好了如何使用呢？
 
]]></description>
			<content:encoded><![CDATA[<p>容器：容纳符合规格的东西器皿。servlet容器：能放置servlet的“器皿”，servlet必须符合servlet的一些规格。</p>
<p>HttpServlet是servlet容器中最基本的类型了，只要继承HttpServlet便可以被容器执行，当然首先你得在该容器的配置文件web.xml中做一些声明：</p>
<pre><code>
<servlet>
    <servlet-name>liveServlet</servlet-name>
    <servlet-class>net.live51.LiveServlet</servlet-class>
      <init-param>
<param-name>beanFactoryConfig</param-name>
    
<param-value>./services-config.xml</param-value>
      </init-param>
    <load-on-startup>1</load-on-startup>
</servlet> 
</code></pre>
<p>以上片断是做了一个servlet-name为liveServlet的声明，指明了实际处理的类，当然net.live51.LiveServlet是继承了HttpServlet的，其中init-param和load-on-startup为高级用法，以后在讲到，将以上配置简化一下：</p>
<pre><code>
<servlet>
    <servlet-name>liveServlet</servlet-name>
    <servlet-class>net.live51.LiveServlet</servlet-class>
</servlet>
</code></pre>
<p>这样也是可行的。</p>
<p>定义好了如何使用呢？<br />
 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.live51.net/2006/11/13/26.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
