<?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>Marshal&#039;s Blog &#187; jsp</title>
	<atom:link href="http://marshal.easymorse.com/archives/tag/jsp/feed" rel="self" type="application/rss+xml" />
	<link>http://marshal.easymorse.com</link>
	<description>It&#039;s swap of marshal&#039;s memory.</description>
	<lastBuildDate>Mon, 30 Jan 2012 07:03:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>编写最简单的GAE应用</title>
		<link>http://marshal.easymorse.com/archives/3608?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%25bc%2596%25e5%2586%2599%25e6%259c%2580%25e7%25ae%2580%25e5%258d%2595%25e7%259a%2584gae%25e5%25ba%2594%25e7%2594%25a8</link>
		<comments>http://marshal.easymorse.com/archives/3608#comments</comments>
		<pubDate>Tue, 02 Nov 2010 04:33:44 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[servlet]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/3608</guid>
		<description><![CDATA[GAE，即：Google App Engine，网址： https://appengine.google.com/ GAE介绍 GAE是什么呢，可以认为它是一种虚拟主机环境，可以方便的部署自己的应用到这种虚拟主机环境中。比如我这个简单的示例： http://easymorse.appspot.com/ GAE会提供免费的二级域名支持，easymorse是我项目名称。这样开发一个java web应用很简单，只需部署到GAE上即可立即运行。 点击Easymorse链接，运行的是一个Helloworld servlet。 使用GAE必须要有Google帐号（可免费注册），免费用户最多可以有10个应用。GAE提供了应用的管理界面： easymorse项目的详细管理界面： GAE对免费应用有系统使用配额限制，比如请求数不能超过130万次，超过限制应用在当日就不可用了。如果你把GAE和Google Checkout绑定，那么Google将自动从Checkout对应的你的银行账户划账支付超额资源的费用。 GAE免费资源的上限定的还是挺高的，比如每日传入流量和传出流量上限是10G。我想一般的小应用是不会超过的吧。 如何编写简单的GAE JSP应用 首先要准备环境，这里使用Eclipse实现。需要安装安装GAE插件。GAE插件是Google开发插件，该插件也带Google另外一个框架GWT的开发功能。可参考以下页面链接安装： http://code.google.com/intl/zh-CN/eclipse/docs/download.html 安装好以后，就可以开发了，开发过程很简单。点击下面图标创建web项目： 因为不使用GWT，取消对GWT勾选项： 这样项目就生成了： 可以看到系统自动生成了： 一个Servlet文件，就是上面提到的那个Helloworld示例，其实我什么也没改动 appengine-web.xml文件，这是GAE需要的web项目描述配置文件 index.html文件，就是上面首页的静态文件 然后就可以部署了，部署前需要在GAE中创建一个应用。然后将这个应用的名字作为id设置给Eclipse中的项目。设置方法是： 选择App Engine Settings &#8230; 然后，设置Application id和version： 开始部署，选择下面提示的图标按钮： 在弹出对话框中输入你Google帐号对应的密码点击Deploy即可：]]></description>
			<content:encoded><![CDATA[<p>GAE，即：Google App Engine，网址：</p>
<blockquote><p><a title="https://appengine.google.com/" href="https://appengine.google.com/">https://appengine.google.com/</a></p>
</blockquote>
<h4>GAE介绍</h4>
<p>GAE是什么呢，可以认为它是一种虚拟主机环境，可以方便的部署自己的应用到这种虚拟主机环境中。比如我这个简单的示例：</p>
<blockquote><p><a title="http://easymorse.appspot.com/" href="http://easymorse.appspot.com/">http://easymorse.appspot.com/</a></p>
</blockquote>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb.png" width="244" height="130" /></a></p>
<p>GAE会提供免费的二级域名支持，easymorse是我项目名称。这样开发一个java web应用很简单，只需部署到GAE上即可立即运行。</p>
<p>点击Easymorse链接，运行的是一个Helloworld servlet。</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb1.png" width="244" height="111" /></a></p>
<p>  <span id="more-3608"></span>
<p>使用GAE必须要有Google帐号（可免费注册），免费用户最多可以有10个应用。GAE提供了应用的管理界面：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb2.png" width="506" height="109" /></a></p>
<p>easymorse项目的详细管理界面：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb3.png" width="513" height="362" /></a></p>
<p>GAE对免费应用有系统使用配额限制，比如请求数不能超过130万次，超过限制应用在当日就不可用了。如果你把GAE和Google Checkout绑定，那么Google将自动从Checkout对应的你的银行账户划账支付超额资源的费用。</p>
<p>GAE免费资源的上限定的还是挺高的，比如每日传入流量和传出流量上限是10G。我想一般的小应用是不会超过的吧。</p>
<h4>如何编写简单的GAE JSP应用</h4>
<p>首先要准备环境，这里使用Eclipse实现。需要安装安装GAE插件。GAE插件是Google开发插件，该插件也带Google另外一个框架GWT的开发功能。可参考以下页面链接安装：</p>
<blockquote><p><a title="http://code.google.com/intl/zh-CN/eclipse/docs/download.html" href="http://code.google.com/intl/zh-CN/eclipse/docs/download.html">http://code.google.com/intl/zh-CN/eclipse/docs/download.html</a></p>
</blockquote>
<p>安装好以后，就可以开发了，开发过程很简单。点击下面图标创建web项目：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb4.png" width="244" height="125" /></a></p>
<p>因为不使用GWT，取消对GWT勾选项：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb5.png" width="213" height="244" /></a></p>
<p>这样项目就生成了：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb6.png" width="235" height="244" /></a></p>
<p>可以看到系统自动生成了：</p>
<ul>
<li>一个Servlet文件，就是上面提到的那个Helloworld示例，其实我什么也没改动</li>
<li>appengine-web.xml文件，这是GAE需要的web项目描述配置文件</li>
<li>index.html文件，就是上面首页的静态文件</li>
</ul>
<p>然后就可以部署了，部署前需要在GAE中创建一个应用。然后将这个应用的名字作为id设置给Eclipse中的项目。设置方法是：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb7.png" width="324" height="268" /></a></p>
<p>选择App Engine Settings &#8230; 然后，设置Application id和version：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb8.png" width="244" height="136" /></a></p>
<p>开始部署，选择下面提示的图标按钮：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb9.png" width="244" height="133" /></a></p>
<p>在弹出对话框中输入你Google帐号对应的密码点击Deploy即可：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2010/11/image10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 4px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2010/11/image_thumb10.png" width="244" height="135" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/3608/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java对链接中的特殊字符编码</title>
		<link>http://marshal.easymorse.com/archives/164?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java%25e5%25af%25b9%25e9%2593%25be%25e6%258e%25a5%25e4%25b8%25ad%25e7%259a%2584%25e7%2589%25b9%25e6%25ae%258a%25e5%25ad%2597%25e7%25ac%25a6%25e7%25bc%2596%25e7%25a0%2581</link>
		<comments>http://marshal.easymorse.com/archives/164#comments</comments>
		<pubDate>Mon, 17 Dec 2007 17:45:38 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jsp]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/blog/?p=164</guid>
		<description><![CDATA[  在JSP/Servle开发中，比如出现这样的场景：在页面或者Servlet中显示的链接有特殊字符（比如%）或者中文。  JSP可以通过JSTL提供的c:url标签处理编码。  另外，JSP小脚本和Servlet还可以使用java.net.URLEncoder类的encode方法。  下面是在JSP中的代码示例，在Servlet中使用类似： &#60;% String value=”中文”; String url=”http://www.baidu.com/s?wd=”+URLEncoder.encode(value); %&#62; &#60;a href=&#8217;&#60;%=url %&#62;&#8217;&#62;点击&#60;/a&#62; 这个例子中的链接，是查询baidu中中文关键字的结果。 该encode方法在javadoc中提示已过时。  可以使用它的替代方法：  String url=”http://www.baidu.com/s?wd=”+URLEncoder.encode(value,”GBK”);]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>在JSP/Servle开发中，比如出现这样的场景：在页面或者Servlet中显示的链接有特殊字符（比如%）或者中文。 </p>
<p>JSP可以通过JSTL提供的c:url标签处理编码。 </p>
<p>另外，JSP小脚本和Servlet还可以使用java.net.URLEncoder类的encode方法。 </p>
<p><span id="more-164"></span></p>
<p>下面是在JSP中的代码示例，在Servlet中使用类似：</p>
<blockquote><p>&lt;%</p>
<p>String value=”中文”;</p>
<p>String url=”http://www.baidu.com/s?wd=”+URLEncoder.encode(value);</p>
<p>%&gt;</p>
<p>&lt;a href=&#8217;&lt;%=url %&gt;&#8217;&gt;点击&lt;/a&gt;</p></blockquote>
<p>这个例子中的链接，是查询baidu中中文关键字的结果。 该encode方法在javadoc中提示已过时。 </p>
<p>可以使用它的替代方法： </p>
<blockquote><p>String url=”http://www.baidu.com/s?wd=”+URLEncoder.encode(value,”GBK”);</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/164/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSP 2.1对JSP2.0的改动</title>
		<link>http://marshal.easymorse.com/archives/404?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jsp-21%25e5%25af%25b9jsp20%25e7%259a%2584%25e6%2594%25b9%25e5%258a%25a8</link>
		<comments>http://marshal.easymorse.com/archives/404#comments</comments>
		<pubDate>Thu, 18 Jan 2007 04:04:10 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jsp]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/blog/archives/404</guid>
		<description><![CDATA[见： http://jcp.org/aboutJava/communityprocess/maintenance/jsr245/245-MR1.html JSP2.1主要改动是，使EL可脱离JSP2.1规范并单独成为规范。下一个版本的JSP规范将删除有关EL的描述。并将推出单独的EL规范。 改动列表： 版本：作为JSP2.1一部分的EL定义为1.0，独立的EL定义为1.1。 在EL1.1中的新方法：为了EL可以独立执行，增加了两个工厂方法。javax.el.ExpressionFactory.newInstance()和javax.el.ExpressionFactory.newInstance(Properties)]]></description>
			<content:encoded><![CDATA[<p>见：</p>
<blockquote><p><a href="http://jcp.org/aboutJava/communityprocess/maintenance/jsr245/245-MR1.html">http://jcp.org/aboutJava/communityprocess/maintenance/jsr245/245-MR1.html</a></p></blockquote>
<p><span id="more-404"></span></p>
<p>JSP2.1主要改动是，使EL可脱离JSP2.1规范并单独成为规范。下一个版本的JSP规范将删除有关EL的描述。并将推出单独的EL规范。</p>
<p>改动列表：</p>
<ul>
<li>版本：作为JSP2.1一部分的EL定义为1.0，独立的EL定义为1.1。</li>
<li>在EL1.1中的新方法：为了EL可以独立执行，增加了两个工厂方法。<em>javax.el.ExpressionFactory.newInstance()</em>和<em>javax.el.ExpressionFactory.newInstance(Properties)</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/404/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSTL使用小结</title>
		<link>http://marshal.easymorse.com/archives/439?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jstl%25e4%25bd%25bf%25e7%2594%25a8%25e5%25b0%258f%25e7%25bb%2593</link>
		<comments>http://marshal.easymorse.com/archives/439#comments</comments>
		<pubDate>Sun, 11 Jul 2004 02:29:11 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[jstl]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/blog/archives/439</guid>
		<description><![CDATA[JSTL即JSP标准标签库标准，当前标准的版本是1.1。JSTL是JSP标签库的一种应用。 官方网址： http://java.sun.com/products/jsp/jstl/ JSTL标记库由以下标记组成： core：核心标签，流程控制, 处理作用域变量, 变量的显示, 异常的处理, url的处理； formatting：日期, 时间, 数字等的有关i18n的格式化处理； xml：解析xml和通过xsl转换文档格式的处理； sql：SQL数据库操作的处理。 比较常用的是core和formatting标签。xml标签用于特定场景的数据显示，sql标签用于敏捷开发（j2ee开发为了分工和关注分离，往往通过dao在java代码中封装sql操作） 安装JSTL 复制以下jar文件到WEB-INF/lib： jstl.jar standard.jar core标签 在需要核心标签支持的JSP页面中加入： &#60;%@ taglib prefix=&#34;c&#34; uri=&#34;http://java.sun.com/jsp/jstl/core&#34; %&#62; 设置和显示变量 国家:&#60;c:out value=&#34;${address.state}&#34; default=&#34;不详&#34;/&#62;&#60;br /&#62;&#60;c:set target=&#34;${address}&#34; property=&#34;state&#34; value=&#34;中国&#34;/&#62;国家:&#60;c:out value=&#34;${address.state}&#34; default=&#34;不详&#34;/&#62;&#60;br /&#62; out可以设置默认值，这是EL无法做到的。 创建变量（上面是赋值javabean属性）： &#60;c:set var=&#34;test&#34; value=&#34;变量测试&#34; scope=&#34;session&#34;/&#62;${test } 条件流程 类似java的if语句： &#60;c:if test=&#34;true&#34;&#62; 包含在&#38;lt;c:if&#62;中的内容.&#60;br/&#62;&#60;/c:if&#62; test属性中的是结果为bool型的表达式。 分支流程 类似java的if/else（虽然表面上看起来更像switch/case）： &#60;c:choose&#62; &#60;c:when test=&#34;${address.city==&#8217;北京&#8217;}&#34;&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>JSTL即JSP标准标签库标准，当前标准的版本是1.1。JSTL是JSP标签库的一种应用。</p>
<p>官方网址：</p>
<blockquote><p><a href="http://java.sun.com/products/jsp/jstl/">http://java.sun.com/products/jsp/jstl/</a></p>
</blockquote>
<p> <span id="more-439"></span>
<p>JSTL标记库由以下标记组成：</p>
<ul>
<li>core：核心标签，流程控制, 处理作用域变量, 变量的显示, 异常的处理, url的处理；</li>
<li>formatting：日期, 时间, 数字等的有关i18n的格式化处理；</li>
<li>xml：解析xml和通过xsl转换文档格式的处理；</li>
<li>sql：SQL数据库操作的处理。</li>
</ul>
<p>比较常用的是core和formatting标签。xml标签用于特定场景的数据显示，sql标签用于敏捷开发（<em>j2ee开发为了分工和关注分离，往往通过dao在java代码中封装sql操作</em>）</p>
<h3>安装JSTL</h3>
<p>复制以下jar文件到WEB-INF/lib：</p>
<blockquote><p>jstl.jar     <br />standard.jar</p>
</blockquote>
<h3>core标签</h3>
<p>在需要核心标签支持的JSP页面中加入：</p>
<blockquote><p>&lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %&gt;</p>
</blockquote>
<h4>设置和显示变量</h4>
<blockquote><p>国家:&lt;c:out value=&quot;${address.state}&quot; default=&quot;不详&quot;/&gt;&lt;br /&gt;&lt;c:set target=&quot;${address}&quot; property=&quot;state&quot; value=&quot;中国&quot;/&gt;国家:&lt;c:out value=&quot;${address.state}&quot; default=&quot;不详&quot;/&gt;&lt;br /&gt;</p>
</blockquote>
<p>out可以设置默认值，这是EL无法做到的。</p>
<p>创建变量（<em>上面是赋值javabean属性</em>）：</p>
<blockquote><p>&lt;c:set var=&quot;test&quot; value=&quot;变量测试&quot; scope=&quot;session&quot;/&gt;${test }</p>
</blockquote>
<h4>条件流程</h4>
<p>类似java的if语句：</p>
<blockquote><p>&lt;c:if test=&quot;true&quot;&gt; 包含在&amp;lt;c:if&gt;中的内容.&lt;br/&gt;&lt;/c:if&gt;</p>
</blockquote>
<p>test属性中的是结果为bool型的表达式。</p>
<h4>分支流程</h4>
<p>类似java的if/else（<em>虽然表面上看起来更像switch/case）</em>：</p>
<blockquote><p>&lt;c:choose&gt; &lt;c:when test=&quot;${address.city==&#8217;北京&#8217;}&quot;&gt; 地址.城市:北京 &lt;/c:when&gt; &lt;c:when test=&quot;${address.city==&#8217;上海&#8217;}&quot;&gt; 地址.城市:上海 &lt;/c:when&gt; &lt;c:otherwise&gt; 地址.城市:其他城市 &lt;/c:otherwise&gt; &lt;/c:choose&gt;</p>
</blockquote>
<h4>循环流程</h4>
<p>简单的循环, 类似for循环：</p>
<blockquote><p>&lt;c:forEach var=&quot;i&quot; begin=&quot;0&quot; step=&quot;1&quot; end=&quot;9&quot;&gt; 循环${i}次&lt;br/&gt; &lt;/c:forEach&gt;</p>
</blockquote>
<p>类似iterator的用法：</p>
<blockquote><p>&lt;%List list=new ArrayList();list.add(&quot;中国&quot;);list.add(&quot;美国&quot;);list.add(&quot;日本&quot;); request.setAttribute(&quot;countryInfos&quot;,list);%&gt;&lt;p /&gt;国家列表:&lt;br /&gt; &lt;c:forEach items=&quot;${countryInfos}&quot; var=&quot;country&quot;&gt;${country }&lt;br /&gt; &lt;/c:forEach&gt;</p>
</blockquote>
<h4>处理Java异常</h4>
<blockquote><p>&lt;c:catch var=&quot;e&quot;&gt; &lt;% if (true){ throw new Exception(&quot;测试异常的消息&quot;); } %&gt; &lt;/c:catch&gt;打印异常的消息:${e.message} &lt;br&gt;</p>
</blockquote>
<h4>处理URL</h4>
<p>在需要url重写或者url中包含特殊字符时，需要url标签：</p>
<p>定义url</p>
<blockquote><p>&lt;c:url value=&quot;&quot; var=&quot;localUrl&quot;&gt; &lt;c:param name=&quot;persent&quot; value=&quot;70%&quot; /&gt;&lt;/c:url&gt;</p>
</blockquote>
<p>在html链接中使用url类型变量：</p>
<blockquote><p>&lt;a href=&quot;${localUrl}&quot;&gt;本页面URL&lt;/a&gt;&lt;br /&gt;</p>
</blockquote>
<h3>格式化标签</h3>
<p>在需要格式化标记支持的JSP页面中加入：</p>
<blockquote><p>&lt;%@ taglib prefix=&quot;fmt&quot;      <br />uri=&quot;http://java.sun.com/jsp/jstl/fmt&quot; %&gt;</p>
</blockquote>
<h4>格式化数字</h4>
<blockquote><p>&lt;c:set var=&quot;aNumber&quot; value=&quot;100.1257000003&quot;&gt;&lt;/c:set&gt;显示为金额: &lt;fmt:formatNumber type=&quot;currency&quot; value=&quot;${aNumber}&quot; /&gt;&lt;br /&gt;显示为百分数: &lt;fmt:formatNumber type=&quot;percent&quot; value=&quot;${aNumber}&quot;/&gt;&lt;br /&gt;显示为指定格式: &lt;fmt:formatNumber value=&quot;${aNumber}&quot; pattern=&quot;.###&quot;/&gt;&lt;br /&gt;</p>
</blockquote>
<p>常用格式：</p>
<ol>
<li>type=&quot;currency&quot;, 使用本地货币；</li>
<li>type=&quot;percent&quot;, 使用百分数格式；</li>
<li>pattern=&quot;.###&quot;, 自定义格式, 小数点后保留3位。</li>
</ol>
<h4>格式化日期</h4>
<p>将字符串解析为日期对象：</p>
<blockquote><p>&lt;fmt:parseDate var=&quot;aDate&quot; pattern=&quot;yyyy-MM-dd&quot; value=&quot;1999-1-1&quot;/&gt;</p>
</blockquote>
<p>将日期对象格式化输出：</p>
<blockquote><p>&lt;fmt:formatDate value=&quot;${aDate}&quot; pattern=&quot;yyyy年MM月dd日&quot;/&gt;&lt;br /&gt;</p>
</blockquote>
<h4>国际化消息</h4>
<p>配置web.xml文件, 加入：</p>
<blockquote><p>&lt;context-param&gt; &lt;param-name&gt; javax.servlet.jsp.jstl.fmt.localizationContext &lt;/param-name&gt; &lt;param-value&gt;ApplicationResources&lt;/param-value&gt; &lt;/context-param&gt;</p>
</blockquote>
<p>在classpath根目录下编写ApplicationResources.properties：</p>
<blockquote><p>userName=User Name</p>
</blockquote>
<p>在JSP页面中使用：</p>
<blockquote><p>&lt;fmt:message key=&quot;userName&quot; /&gt;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/439/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSP EL语法小结</title>
		<link>http://marshal.easymorse.com/archives/420?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jsp-el%25e8%25af%25ad%25e6%25b3%2595%25e5%25b0%258f%25e7%25bb%2593</link>
		<comments>http://marshal.easymorse.com/archives/420#comments</comments>
		<pubDate>Sat, 05 Jun 2004 01:14:57 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[el]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jsp]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/blog/archives/420</guid>
		<description><![CDATA[EL和JSTL用来替代JSP小脚本，削弱页面编程的灵活度，简化和规范页面编程。 EL的作用 提供复杂表达式(Java对象) 访问一个任意Java对象的属性（比小脚本简化，提供更方便的机制，比如空值默认为空字符串等） EL的使用环境 EL只能在JSP2.0/Servlet2.4标准的容器内使用，JSTL却可以通过jar文件支持，在JSP1.2/Servlet2.3容器内使用。 基本语法 访问对象 ${user.email } 使user必须是放置在某个作用域（比如request）的对象，在作用域中的name为user，并具有email属性。 EL的限制 不能声明变量。需要JSTL或者标准JavaBean Action声明变量。 EL作用域和自动搜索机制 和JSP的4个作用域对应： pageScope requestScope sessionScope applicationScope 通过作用域和名称指定对象： ${pageScope.pageValue } 如果不指定作用域，EL自动按照由小到大次序查找： -&#62;page-&#62;request-&#62;session-&#62;application-&#62;null 访问HTTP参数 替代JSP类似的写法： &#60;%=request.getParameter(“name”)%&#62; EL的写法： ${param.name } 访问HTTP请求头部信息 可以通过EL的3个内置对象访问： header headerValues cookie   示例： Session Id: ${cookie.JSESSIONID.value} 访问初始化参数 访问web.xml中定义的初始化参数： &#60;context-param&#62; &#60;param-name&#62;siteName&#60;/param-name&#62; &#60;param-value&#62;Marshal&#8217;s Blog&#60;/param-value&#62;&#60;/context-param&#62; EL中调用： ${initParam.siteName } EL操作符 算术运算符: +,-,*,/ &#8230; 条件运算符： [...]]]></description>
			<content:encoded><![CDATA[<p>EL和JSTL用来替代JSP小脚本，削弱页面编程的灵活度，简化和规范页面编程。</p>
<p><span id="more-420"></span></p>
<h3>EL的作用</h3>
<ul>
<li>提供复杂表达式(Java对象)</li>
<li>访问一个任意Java对象的属性（<em>比小脚本简化，提供更方便的机制，比如空值默认为空字符串等</em>）</li>
</ul>
<h3><strong>EL的使用环境</strong></h3>
<p>EL只能在JSP2.0/Servlet2.4标准的容器内使用，JSTL却可以通过jar文件支持，在JSP1.2/Servlet2.3容器内使用。</p>
<h3>基本语法</h3>
<h4>访问对象</h4>
<blockquote><p>${user.email }</p></blockquote>
<p>使user必须是放置在某个作用域（比如request）的对象，在作用域中的<em>name</em>为<em>user</em>，并具有email属性。</p>
<h4>EL的限制</h4>
<p>不能声明变量。需要JSTL或者标准Java<tt></tt>Bean Action声明变量。</p>
<h4>EL作用域和自动搜索机制</h4>
<p>和JSP的4个作用域对应：</p>
<ol>
<li>pageScope</li>
<li>requestScope</li>
<li>sessionScope</li>
<li>applicationScope</li>
</ol>
<p>通过作用域和名称指定对象：</p>
<blockquote><p>${pageScope.pageValue }</p></blockquote>
<p>如果不指定作用域，EL自动按照由小到大次序查找：</p>
<blockquote><p>-&gt;page-&gt;request-&gt;session-&gt;application-&gt;null</p></blockquote>
<h4><span style="color: #000000;">访问HTTP参数</span></h4>
<p>替代JSP类似的写法：</p>
<blockquote><p>&lt;%=request.getParameter(“name”)%&gt;</p></blockquote>
<pre><span style="color: #000000;">EL的写法：</span></pre>
<blockquote><p>${param.name }</p></blockquote>
<h4><span style="color: #000000;">访问HTTP请求头部信息</span></h4>
<p>可以通过EL的3个内置对象访问：</p>
<ol>
<li>header</li>
<li>headerValues</li>
<li>cookie</li>
</ol>
<ul>
<li> </li>
<p>示例：</ul>
<blockquote><p>Session Id: ${cookie.JSESSIONID.value}</p></blockquote>
<h4>访问初始化参数</h4>
<p>访问web.xml中定义的初始化参数：</p>
<blockquote><p>&lt;context-param&gt; &lt;param-name&gt;siteName&lt;/param-name&gt; &lt;param-value&gt;Marshal&#8217;s Blog&lt;/param-value&gt;&lt;/context-param&gt;</p></blockquote>
<p>EL中调用：</p>
<blockquote><p>${initParam.siteName }</p></blockquote>
<h4>EL操作符</h4>
<p>算术运算符: +,-,*,/ &#8230;</p>
<p>条件运算符：</p>
<blockquote><p>${(user.male)?”男”:”女”}</p></blockquote>
<p>逻辑运算符: &amp;&amp;, ||&#8230;</p>
<p>比较运算符: &gt;,&lt;,== &#8230;</p>
<p>空操作符: empty</p>
<blockquote><p>${empty userName }</p></blockquote>
<h4>EL导航符</h4>
<pre>一般使用“.”符：</pre>
<blockquote><p>{user.email }</p></blockquote>
<p>也可以用“[]”符：</p>
<blockquote><p>${user["name"] }</p></blockquote>
<p>这在属性名称中包含“.”符号时非常有用。</p>
<h4>访问集合对象</h4>
<p>访问Map，比如Map中有个<em>key</em>为<em>email</em>：</p>
<blockquote><p>${userMap.email }</p></blockquote>
<p>访问List, 和数组类似, 只能使用”[]“操作符：</p>
<blockquote><p>${userList[0] }</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/420/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

