﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-jokes000-随笔分类-J2EE 学习笔记</title><link>http://www.cppblog.com/jokes000/category/17907.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 13 Oct 2011 17:01:37 GMT</lastBuildDate><pubDate>Thu, 13 Oct 2011 17:01:37 GMT</pubDate><ttl>60</ttl><item><title>JDBC连接数据库</title><link>http://www.cppblog.com/jokes000/archive/2011/10/13/158226.html</link><dc:creator>Voices.</dc:creator><author>Voices.</author><pubDate>Thu, 13 Oct 2011 07:50:00 GMT</pubDate><guid>http://www.cppblog.com/jokes000/archive/2011/10/13/158226.html</guid><wfw:comment>http://www.cppblog.com/jokes000/comments/158226.html</wfw:comment><comments>http://www.cppblog.com/jokes000/archive/2011/10/13/158226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jokes000/comments/commentRss/158226.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jokes000/services/trackbacks/158226.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;连接数据库步骤：(以MySql为例)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.注册驱动：Class.forName("com.mysql.jdbc.Driver");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.建立连接：Connection conn = DriverManager.getConnection( url , user , password );<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url格式： jdbc:子协议:子名称://主机名:端口/数据库名?属性名=属性值&amp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String url = "jdbc:mysql://localhost:3306/jdbc";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 若主机名及端口号均为缺省值，则可省略掉，如String url = "jdbc:mysql:///jdbc";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.创建语句：PreparedStatement<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.执行语句：executeQuery(), executeUpdate()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.返回结果：ResultSet<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.释放资源：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreparedStatement相对于Statement的优势：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.没有SQL注入的问题<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.Statement会使数据库频繁编译SQL，可能造成数据库缓冲区溢出<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.数据库和驱动可以对PreparedStatement进行优化(只有在相关联的数据库连接没有关闭的情况下有效)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据库连接池概念：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据库连接是一种关键的有限的昂贵的资源，这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性，影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接，它允许应用程序重复使用一个现有的数据库连接，而再不是重新建立一个；释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用数据源和JNDI API：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.Java EE 应用程序服务器提供了命名空间，可以使用 JNDI API 来访问命名空间。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.Java EE 应用程序服务器必须支持在 JNDI 命名空间中存储数据源资源。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.数据源是封装连接数据库的所需信息的对象：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A.数据库 URL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B.驱动程序<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C.用户名和密码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.大部分服务器提供了使用数据源访问的数据库连接池。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img height="374" alt="" src="http://www.cppblog.com/images/cppblog_com/jokes000/JNDI.jpg" width="674" border="0" longdesc="" /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在tomcat中配置JNDI步骤：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.找到tomcat中server.xml文件，在其中加入以下代码 
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Code_Closed_Image_160651" onclick="this.style.display='none'; Code_Closed_Text_160651.style.display='none'; Code_Open_Image_160651.style.display='inline'; Code_Open_Text_160651.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_160651" style="display: none" onclick="this.style.display='none'; Code_Open_Text_160651.style.display='none'; Code_Closed_Image_160651.style.display='inline'; Code_Closed_Text_160651.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_160651" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Server.xml</span><span id="Code_Open_Text_160651" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Context&nbsp;</span><span style="color: #ff0000">path</span><span style="color: #0000ff">="/ViewDemo"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jdbc/leagueDB"</span><span style="color: #ff0000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #ff0000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: #0000ff">="org.gjt.mm.mysql.Driver"</span><span style="color: #ff0000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxIdle</span><span style="color: #0000ff">="2"</span><span style="color: #ff0000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxWait</span><span style="color: #0000ff">="5000"</span><span style="color: #ff0000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: #0000ff">="root"</span><span style="color: #ff0000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: #0000ff">="root123"</span><span style="color: #ff0000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff">="jdbc:mysql://localhost/league"</span><span style="color: #ff0000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #0000ff">="4"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Context</span><span style="color: #0000ff">&gt;</span></span></div><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.在项目的web.xml文件中，加入以下代码:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Code_Closed_Image_160836" onclick="this.style.display='none'; Code_Closed_Text_160836.style.display='none'; Code_Open_Image_160836.style.display='inline'; Code_Open_Text_160836.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_160836" style="display: none" onclick="this.style.display='none'; Code_Open_Text_160836.style.display='none'; Code_Closed_Image_160836.style.display='inline'; Code_Closed_Text_160836.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_160836" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">web.xml</span><span id="Code_Open_Text_160836" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">resource-ref</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;defines&nbsp;a&nbsp;JNDI&nbsp;resource&nbsp;reference&nbsp;for<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java:comp/env/jdbc/leagueDB&nbsp;DataSource&nbsp;which<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;formally&nbsp;declared&nbsp;in&nbsp;the&nbsp;domain.xml.<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-ref-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc/leagueDB</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-ref-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-type</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">javax.sql.DataSource</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-type</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-auth</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Container</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-auth</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">resource-ref</span><span style="color: #0000ff">&gt;</span></span></div><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.将JDBC驱动放入tomcat/lib目录当中<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有连接池的情况下，connection.close()不是关闭连接，而是将连接设置为available状态。<br /><img src ="http://www.cppblog.com/jokes000/aggbug/158226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jokes000/" target="_blank">Voices.</a> 2011-10-13 15:50 <a href="http://www.cppblog.com/jokes000/archive/2011/10/13/158226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Developing a Web Application Using Struts</title><link>http://www.cppblog.com/jokes000/archive/2011/10/12/158133.html</link><dc:creator>Voices.</dc:creator><author>Voices.</author><pubDate>Wed, 12 Oct 2011 07:24:00 GMT</pubDate><guid>http://www.cppblog.com/jokes000/archive/2011/10/12/158133.html</guid><wfw:comment>http://www.cppblog.com/jokes000/comments/158133.html</wfw:comment><comments>http://www.cppblog.com/jokes000/archive/2011/10/12/158133.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jokes000/comments/commentRss/158133.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jokes000/services/trackbacks/158133.html</trackback:ping><description><![CDATA[1.在/WEB-INF/web.xml文件中加入如下代码：<br /><div style="display: inline-block; "><div></div></div><font class="Apple-style-span" size="2"><br /></font><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_152524" onclick="this.style.display='none'; Code_Closed_Text_152524.style.display='none'; Code_Open_Image_152524.style.display='inline'; Code_Open_Text_152524.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_152524" style="display: none" onclick="this.style.display='none'; Code_Open_Text_152524.style.display='none'; Code_Closed_Image_152524.style.display='inline'; Code_Closed_Text_152524.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_152524" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">web.xml</span><span id="Code_Open_Text_152524" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">Action</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">org.apache.struts.action.ActionServlet</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">init</span><span style="color: #000000; ">-</span><span style="color: #000000; ">param</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">param</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">config</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">param</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">param</span><span style="color: #000000; ">-</span><span style="color: #000000; ">value</span><span style="color: #000000; ">&gt;/</span><span style="color: #000000; ">WEB</span><span style="color: #000000; ">-</span><span style="color: #000000; ">INF</span><span style="color: #000000; ">/</span><span style="color: #000000; ">struts</span><span style="color: #000000; ">-</span><span style="color: #000000; ">config.xml</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">param</span><span style="color: #000000; ">-</span><span style="color: #000000; ">value</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">init</span><span style="color: #000000; ">-</span><span style="color: #000000; ">param</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #000000; ">mapping</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">Action</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">url</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pattern</span><span style="color: #000000; ">&gt;*</span><span style="color: #000000; ">.</span><span style="color: #0000FF; ">do</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">url</span><span style="color: #000000; ">-</span><span style="color: #000000; ">pattern</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #000000; ">mapping</span><span style="color: #000000; "></span></span></div><br />2.在/WEB-INF/中添加struts-config.xml文件<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_152550" onclick="this.style.display='none'; Code_Closed_Text_152550.style.display='none'; Code_Open_Image_152550.style.display='inline'; Code_Open_Text_152550.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_152550" style="display: none" onclick="this.style.display='none'; Code_Open_Text_152550.style.display='none'; Code_Closed_Image_152550.style.display='inline'; Code_Closed_Text_152550.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_152550" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">struts-config.xml</span><span id="Code_Open_Text_152550" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&lt;?</span><span style="color: #000000; ">xml&nbsp;version</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">1.0</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;encoding</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ISO-8859-1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #000000; ">&lt;!</span><span style="color: #000000; ">DOCTYPE&nbsp;struts</span><span style="color: #000000; ">-</span><span style="color: #000000; ">config&nbsp;PUBLIC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;1.1//EN</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">struts</span><span style="color: #000000; ">-</span><span style="color: #000000; ">config</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">action</span><span style="color: #000000; ">-</span><span style="color: #000000; ">mappings</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">action&nbsp;path</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/add_DVD</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">controller.AddDVDAction</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">forward&nbsp;name</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">success</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;path</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/success.view</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">forward&nbsp;name</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">error</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;path</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/add_DVD.view</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">action</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">action&nbsp;path</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/set_prefs</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">controller.SetPreferencesAction</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">forward&nbsp;name</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">success</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;path</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/index.html</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">action</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">action</span><span style="color: #000000; ">-</span><span style="color: #000000; ">mappings</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">struts</span><span style="color: #000000; ">-</span><span style="color: #000000; ">config</span><span style="color: #000000; "></span></span></div><br />3.根据需求添加相应的Action<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_152614" onclick="this.style.display='none'; Code_Closed_Text_152614.style.display='none'; Code_Open_Image_152614.style.display='inline'; Code_Open_Text_152614.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_152614" style="display: none" onclick="this.style.display='none'; Code_Open_Text_152614.style.display='none'; Code_Closed_Image_152614.style.display='inline'; Code_Closed_Text_152614.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_152614" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Action</span><span id="Code_Open_Text_152614" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">package&nbsp;controller;<br /><br />import&nbsp;javax.servlet.http.HttpServletRequest;<br />import&nbsp;javax.servlet.http.HttpServletResponse;<br />import&nbsp;javax.servlet.http.HttpSession;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Struts&nbsp;classes</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">import&nbsp;org.apache.struts.action.Action;<br />import&nbsp;org.apache.struts.action.ActionForward;<br />import&nbsp;org.apache.struts.action.ActionMapping;<br />import&nbsp;org.apache.struts.action.ActionForm;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;SetPreferencesAction&nbsp;extends&nbsp;Action&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;ActionForward&nbsp;execute(ActionMapping&nbsp;mapping,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActionForm&nbsp;form,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;request,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; "><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span></span></div><br />4.修改相应struts-config.xml中配置。<img src ="http://www.cppblog.com/jokes000/aggbug/158133.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jokes000/" target="_blank">Voices.</a> 2011-10-12 15:24 <a href="http://www.cppblog.com/jokes000/archive/2011/10/12/158133.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Coockie &amp; Session &amp; ServletContext</title><link>http://www.cppblog.com/jokes000/archive/2011/10/12/158132.html</link><dc:creator>Voices.</dc:creator><author>Voices.</author><pubDate>Wed, 12 Oct 2011 07:12:00 GMT</pubDate><guid>http://www.cppblog.com/jokes000/archive/2011/10/12/158132.html</guid><wfw:comment>http://www.cppblog.com/jokes000/comments/158132.html</wfw:comment><comments>http://www.cppblog.com/jokes000/archive/2011/10/12/158132.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jokes000/comments/commentRss/158132.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jokes000/services/trackbacks/158132.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: #625b49; font-family: Arial; line-height: 20px; background-color: #ffffff; "><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">Session: &nbsp; &nbsp; &nbsp;&nbsp;</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;当用户打开浏览器，访问某个网站时，服务器就会在服务器内存为该浏览器分配一个空间，该空间被该浏览器独占。</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;这个空间就是Session，Session默认保存时间为30min。</span></p><p style="line-height: normal; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Session可以用来做什么：</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1.网上商城购物车</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.用户登录信息</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.将某些数据放入Session中，供同一用户不同页面使用</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4.防止用户非法登录到某个页面</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#8230;&#8230;&amp;&#8230;&#8230;</span></p><p style="line-height: normal; ">&nbsp;</p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;可这样理解Session: 一个名字（</span><span style="line-height: normal; color: #ff0000; font-family: Arial; font-size: 10pt; ">String</span><span style="font-family: Arial; font-size: 10pt; ">）对应一个值（</span><span style="line-height: normal; color: #ff0000; font-family: Arial; font-size: 10pt; ">Object</span><span style="font-family: Arial; font-size: 10pt; ">），Session就是其中的一张由无数个名字和值对应的表。&nbsp;&nbsp;&nbsp;</span></p><p style="line-height: normal; ">&nbsp;</p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Session的使用：</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1.得到Session： HttpSession hs = request.getSession(true);</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.添加属性： &nbsp;setAttribute(java.lang.String&nbsp;name, java.lang.Object&nbsp;value)&nbsp;</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.&#8230;&#8230;&#8230;&#8230; 见API</span></p><p style="line-height: normal; ">&nbsp;</p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">Cookie:</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;存在于客户端，有相应时间限制</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;用途：</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1.保存用户名和密码，一段时间内不用重新登录。</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.记录用户访问网站的喜好。</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.网站的个性化（如google的一些网站定制）</span></p><p style="line-height: normal; ">&nbsp;</p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;可这样理解Session: 一个名字（</span><span style="line-height: normal; color: #ff0000; font-family: Arial; font-size: 10pt; ">String</span><span style="font-family: Arial; font-size: 10pt; ">）对应一个值（</span><span style="line-height: normal; color: #ff0000; font-family: Arial; font-size: 10pt; ">String</span><span style="font-family: Arial; font-size: 10pt; ">），Session就是其中的一张由无数个名字和值对应的表。</span></p><p style="line-height: normal; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">ServletContext:</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ServletContext生命周期从创建开始，到服务器关闭时结束。</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;用途：</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1.网站计数器</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.网站在线用户的显示</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.简单的聊天系统</span></p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#8230;&#8230; &amp; &#8230;&#8230;</span></p><p style="line-height: normal; ">&nbsp;</p><p style="line-height: normal; "><span style="font-family: Arial; font-size: 10pt; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;总之，涉及到不同用户共享数据，而这些数据量不大，且不希望写入到数据库中，就可以考虑使用ServletContext</span></p></span><img src ="http://www.cppblog.com/jokes000/aggbug/158132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jokes000/" target="_blank">Voices.</a> 2011-10-12 15:12 <a href="http://www.cppblog.com/jokes000/archive/2011/10/12/158132.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>