﻿<?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>BlogJava-虎年打老虎-随笔分类-4-JSP/SERVLET</title><link>http://www.blogjava.net/ywj-316/category/42907.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 22 Jun 2010 17:12:38 GMT</lastBuildDate><pubDate>Tue, 22 Jun 2010 17:12:38 GMT</pubDate><ttl>60</ttl><item><title>防止页面多次刷新提交表单（转）</title><link>http://www.blogjava.net/ywj-316/archive/2010/06/21/324077.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Mon, 21 Jun 2010 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2010/06/21/324077.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/324077.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2010/06/21/324077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/324077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/324077.html</trackback:ping><description><![CDATA[<div id="BlogArticleDetail" style="font-size: 14px">
<p>当用户从表单处完成递交，如无问题已将注册信息写入数据库，但有问题的是，如何防止用户刷新页面，这相当于将原有的信息再次写入数据库，在网络上寻找解决方法，试用后将本人认为最管用的方法记下。</p>
<p>网络中给出如下解决方式：</p>
<p><font color="#ff6600">第一种：禁用提交按钮</font></p>
<p>当用户提交表单后，使用JAVASCRIPT脚本语言，将提交钮禁用。</p>
<p>分析：如客户端没有开启脚本功能就出现问题；这也仅是在表单处理前有用，防止用户多次点击提交钮；现在很多网站都启用验证码解决此问题了。</p>
<p><font color="#ff6600">第二种：使用 Session</font></p>
<p>在第一次写入数据库代码后，将Session标记；在数据库代码前判断Session是否曾经标记过并与刚才的标记是否相等。</p>
<p><font color="#808000">代码：</font></p>
<p>Session("User") = True</p>
<p>&nbsp;&nbsp; Response.write "您刚才已经注册过了&#8230;&#8230;"<br />
Else</p>
<p>&nbsp;&nbsp; ...... '省略写入数据库部分</p>
<p>&nbsp;&nbsp; Session("User") = True</p>
<p>End if</p>
<p>分析：比较管用的；但Session默认时效为20分钟，虽然可以设置时效长度，但由于网站服务器设置不同，也许达不到理想效果。</p>
<p><font color="#ff6600">第三种：重新定向</font></p>
<p>注册完毕后直接将网页重新定向到其他页面。</p>
<p><font color="#808000">代码：</font>Response.Redirect "Index.html"</p>
<p>分析：使用此方法，需要配合客户端脚本清除历史(history)才行，没有试用，因为用户可以使用后退按钮，继续刷新。</p>
<p><font color="#ff6600">第四种：禁止缓存</font></p>
<p>在写入数据一页最下边添加下面的代码，然后导向新页，可以使用户点击后退按钮后，页面提示网页过期。</p>
<p><font color="#808000">代码：</font></p>
<p>ASP：<br />
Response.Buffer = True&nbsp;&nbsp;&nbsp; <br />
Response.ExpiresAbsolute = Now() - 1&nbsp;&nbsp;&nbsp; <br />
Response.Expires = 0&nbsp;&nbsp;&nbsp; <br />
Response.CacheControl = "no-cache"</p>
<p>ASP.NET：<br />
Response.Buffer=true;<br />
Response.ExpiresAbsolute=DateTime.Now.AddSeconds(-1);<br />
Response.Expires=0;<br />
Response.CacheControl="no-cache";</p>
<p>分析：试用后，发现一个问题，虽然表面看到网页过期字样，但在过期网页上刷新，仍可以再次刷新多次注册。</p>
<p><font color="#ff6600">第五种：用弹出窗口</font></p>
<p>提交表单的时候弹出新窗口（在新窗口页面完成数据库的写入），关闭本窗口。对于window.open()打开的窗口是无法用后退按钮的。</p>
<p><font color="#ff6600">第六种：调数据库进行对比</font></p>
<p>这一种是得不偿失的方法，因为会加重服务器的负担，如果在表单没有进行AJAX方式的验证，这也算是一种必要的方法。</p>
<p><font color="#808000">代码：（假设已连接数据库）</font></p>
<p>Dim Rs,SQL,UserId</p>
<p>UserId = Request("Userid") '从表单从取数据内容</p>
<p>If UserId &lt;&gt; "" then '不为空的时候<br />
Set Rs=Server.CreateObject("Adodb.Recordset")<br />
&nbsp;&nbsp; SQL = "Select Userid From 表 Where Userid='"&amp; UserId &amp;"'"<br />
&nbsp;&nbsp; Rs.Open Sql, Conn, 2, 2<br />
&nbsp;&nbsp;<br />
If Rs.Eof And Rs.Bof Then<br />
&nbsp;&nbsp; Response.Write "没有相同数据！"<br />
Else<br />
&nbsp;&nbsp; Response.Write "有相同数据！"<br />
End If<br />
<br />
&nbsp;&nbsp; Rs.Close<br />
&nbsp;&nbsp; Set Rs = Nothing<br />
&nbsp;&nbsp; Response.End<br />
End If</p>
<p>&nbsp;</p>
<p>经过测试，如果不想太费事，直接用第六种方法，用户刷一次就对数据库检索一次，这种方式最大的弊端就是有可能把服务器累死；</p>
<p>由于，我采用了第二种方法，结合了第四种（效果不大），在代码最前端加入了验证由何处来本站的函数，这样可以防止用户自己在本机模仿网站表单提交数据（<a href="http://hi.baidu.com/76512/blog/item/b8d9be8f168d3aedf01f3680.html" target="_blank">hi.baidu.com/76512/blog/item/b8d9be8f168d3aedf01f3680.html</a>），也可以防止用户在本站直接在网址末端加变量值刷新数据。</p>
<p>由于在表单处已加入随机验证码，并已写入Session中，在处理数据前，可以先检测Session是否为空，空为已提交过了，不为空是第一次提交，在第一次提交后将该Session清空。</p>
<p><font color="#808000">代码：</font></p>
<p>If Session("RndNum") = ""<br />
&nbsp;&nbsp; Response.Write "已提交过数据了呀！"<br />
Else</p>
<p>...... '省略写入数据库代码</p>
<p>&nbsp;&nbsp; Session("RndNum") = ""<br />
End if</p>
<p>分析：只要是从正常的途径递交的表单，Session("RndNum")的数值不会为空的，从非正常途径（比如说，直接打开网址，或在本机模拟表单递交，或在网址后添加变量值，是无法写入数据库的。Session默认的20分钟，清空后仍然符合逻辑。也不怕用户打开几个注册页面，来回刷新注册。<br />
<br />
<br />
<br />
<br />
禁用页面缓存的几种方法（静态和动态）<br />
1、在Asp页面首部&lt;head&gt;加入&nbsp;&nbsp;&nbsp;<br />
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            &nbsp;&nbsp;Response.Buffer&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;True&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;Response.ExpiresAbsolute&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;Now()&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;Response.Expires&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;Response.CacheControl&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;"no-cache"&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;Response.AddHeader&nbsp;&nbsp;&nbsp;"Pragma",&nbsp;&nbsp;&nbsp;"No-Cache"&nbsp;&nbsp;</td>
        </tr>
    </tbody>
</table>
<br />
　　2、在HtML代码中加入&nbsp;&nbsp;&nbsp;<br />
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            &nbsp;&nbsp;&lt;HEAD&gt;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&lt;META&nbsp;&nbsp;&nbsp;HTTP-EQUIV="Pragma"&nbsp;&nbsp;&nbsp;CONTENT="no-cache"&gt;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&lt;META&nbsp;&nbsp;&nbsp;HTTP-EQUIV="Cache-Control"&nbsp;&nbsp;&nbsp;CONTENT="no-cache"&gt;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&lt;META&nbsp;&nbsp;&nbsp;HTTP-EQUIV="Expires"&nbsp;&nbsp;&nbsp;CONTENT="0"&gt;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&lt;/HEAD&gt;&nbsp;&nbsp;</td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
　　3、在重新调用原页面的时候在给页面传一个参数&nbsp;&nbsp;&nbsp;Href="****.asp?random()"&nbsp; </p>
<p>　　前两个方法据说有时会失效，而第三种则是在跳转时传一个随机的参数！ 因为aspx的缓存是与参数相关的，如果参数不同就不会使用缓存，而会重新生成页面，每次都传一个随机的参数就可以避免使用缓存。这个仅适用于asp&amp;asp.net</p>
<p>　　4、在jsp页面中可使用如下代码实现无缓存：</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            response.setHeader("Cache-Control","no-cache");&nbsp;//HTTP&nbsp;1.1 <br />
            response.setHeader("Pragma","no-cache");&nbsp;//HTTP&nbsp;1.0 <br />
            response.setDateHeader&nbsp;("Expires",&nbsp;0);&nbsp;//prevents&nbsp;caching&nbsp;at&nbsp;the&nbsp;proxy&nbsp;server</td>
        </tr>
    </tbody>
</table>
</p>
<p>　　这些代码加在&lt;head&gt; &lt;/head&gt;中间具体如下</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            &lt;head&gt; <br />
            &lt;% <br />
            response.setHeader("Cache-Control","no-cache");&nbsp;//HTTP&nbsp;1.1 <br />
            response.setHeader("Pragma","no-cache");&nbsp;//HTTP&nbsp;1.0 <br />
            response.setDateHeader&nbsp;("Expires",&nbsp;0);&nbsp;//prevents&nbsp;caching&nbsp;at&nbsp;the&nbsp;proxy&nbsp;server <br />
            %&gt; <br />
            &lt;/head&gt;</td>
        </tr>
    </tbody>
</table>
</p>
<p>　　5、window.location.replace("WebForm1.aspx");&nbsp;&nbsp; <br />
　　参数就是你要覆盖的页面，replace的原理就是用当前页面替换掉replace参数指定的页面。&nbsp;&nbsp;&nbsp;<br />
这样可以防止用户点击back键。使用的是<a href="http://www.devdao.com/article.asp?typeid=36">javascript</a>脚本，举例如下：</p>
<p>　　a.html</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            &lt;html&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&lt;head&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;a&lt;/title&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;language="javascript"&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;jump(){ <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location.replace("b.html"); <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href="javascript:jump()"&gt;b&lt;/a&gt; <br />
            &nbsp;&nbsp;&nbsp;&lt;/body&gt; <br />
            &lt;/html&gt;&nbsp;&nbsp;</td>
        </tr>
    </tbody>
</table>
</p>
<p>　　b.html</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            &lt;html&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&lt;head&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;b&lt;/title&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;language="javascript"&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;jump(){ <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location.replace("a.html"); <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href="javascript:jump()"&gt;a&lt;/a&gt; <br />
            &nbsp;&nbsp;&nbsp;&lt;/body&gt; <br />
            &lt;/html&gt;&nbsp;&nbsp;</td>
        </tr>
    </tbody>
</table>
</p>
<p>　　前4种只是清空了cache，即存储在Temporary Internet Files文件夹中的临时文件，而第五种则是使用跳转页面文件替换当前页面文件，并没有清空cache，也就是说Temporary Internet Files产生了相关的临时文件，两者搭配使用真是清空缓存，必备良药。</p>
<p><br />
&nbsp;</p>
</div>
<img src ="http://www.blogjava.net/ywj-316/aggbug/324077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2010-06-21 17:33 <a href="http://www.blogjava.net/ywj-316/archive/2010/06/21/324077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>request.getRequestURI() 、request.getRequestURL() 、request.getContextPath()、request.getServletPath()区别</title><link>http://www.blogjava.net/ywj-316/archive/2010/06/09/323190.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Wed, 09 Jun 2010 12:31:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2010/06/09/323190.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/323190.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2010/06/09/323190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/323190.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/323190.html</trackback:ping><description><![CDATA[request.getRequestURI() /jqueryWeb/resources/request.jsp<br />
request.getRequestURL() http://localhost:8080/jqueryWeb/resources/request.jsp<br />
request.getContextPath()/jqueryWeb<br />
request.getServletPath()/resources/request.jsp<br />
<br />
<br />
注： resources为WebContext下的目录名<br />
jqueryWeb 为工程名 <br />
<br />
-----------------------------------------------------<br />
&lt;%=request.getRequestURI() %&gt;&lt;br/&gt;<br />
&lt;%=request.getRequestURL() %&gt;&lt;br/&gt;<br />
&lt;%=request.getContextPath()%&gt;&lt;br/&gt;<br />
&lt;%=request.getServletPath() %&gt;&lt;br/&gt;<br />
&lt;%=request.getPathInfo() %&gt;&lt;br/&gt;<br />
结果：<br />
/test-struts.jsp<br />
http://127.0.0.1:8080/test-struts.jsp<br />
<br />
/test-struts.jsp<br />
null<br />
<br />
配置：<br />
&lt;action name="test" class="testStrutsAction" method="test"&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;result&gt;/test-struts.jsp&lt;/result&gt;<br />
&lt;/action&gt;<br />
<br />
<img src ="http://www.blogjava.net/ywj-316/aggbug/323190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2010-06-09 20:31 <a href="http://www.blogjava.net/ywj-316/archive/2010/06/09/323190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生命周期</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304178.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:50:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304178.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304178.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304178.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304178.html</trackback:ping><description><![CDATA[1 实例化：servlet容器创建servlet实例，构造方法<br />
2 初始化：该容器调用init()方法<br />
&nbsp; init()<br />
&nbsp; init(ServletConfig config){<br />
&nbsp; &nbsp;&nbsp;config.getParamter("aaa");<br />
&nbsp; }<br />
&nbsp; web.xml<br />
&nbsp; &lt;servlet&gt;<br />
&nbsp;&lt;param-name&gt;aaa&lt;/param-name&gt;<br />
&nbsp;&lt;param-value&gt;1&lt;/param-value&gt;<br />
&nbsp; &lt;/servlet&gt;<br />
3 服务：如果请求servlet,则容器调用service()方法<br />
4 销毁：销毁实例前调用destroy()方法
<img src ="http://www.blogjava.net/ywj-316/aggbug/304178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:50 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内置对象</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304177.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:49:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304177.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304177.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304177.html</trackback:ping><description><![CDATA[<p>一个java类，运行在服务器端的，处理web请求<br />
//客户端跳转<br />
response.sendRedirect()<br />
//服务器端跳转<br />
RequsetDispatcher dispatcher=request.getRequestDispatcher("/...");<br />
dispatcher.forward(request,response);<br />
dispatcher.include()<br />
1 out<br />
struts中用PrintWriter out=request.getWriter()得到<br />
2 request<br />
(1)String getParameter(String name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据页面表单组件名称获取页面提交数据<br />
(2)String[] getParameterValues(String name) 获取一个页面表单组件对应多个值时的用户的请求数据<br />
(3)void setCharacterEncoding(String name)&nbsp;&nbsp; 指定每个请求的编码，在调用request.getParameter()方法之前进行设置，可以用于解决中文乱码<br />
(4)request.getRequestDispatcher(String path)返回一个javax.servlet.RequestDispatcher对象，该对象的forward方法用于转发请求<br />
&nbsp;&nbsp; javax.servlet.RequestDispatcher dispatcher=request.getRequestDispatcher("/a.jsp(目标页面)");<br />
&nbsp;&nbsp; dispatcher.forward(request,response);<br />
3 response<br />
response.sendRedirect(String location)重定向一个URL</p>
<p>4 session<br />
(1)void setAttribute(String key,Object value)<br />
(2)Object getAttribute(String key)<br />
(3)HttpSession request.getSession()<br />
(4)HttpSession request.getSession(boolean true)<br />
(5)void session.setMaxInactiveInterval(2)//设置会话过期时间<br />
(6)void invalidate()//销毁session,删除HttpSession对象及数据<br />
(7)void remove(String key)<br />
(8)boolean isNew()//是否是最新会话<br />
在web.xml中配置session默认过期时间<br />
&nbsp;&lt;session-config&gt;<br />
&nbsp;&nbsp;&lt;session-timeout&gt;5&lt;/session-timeout&gt;//单位为分钟<br />
&nbsp;&lt;/session-config&gt;<br />
5 applicate-&gt;servletContext<br />
(1)void setAttribute(String key,Object value)<br />
(2)Object getAttribute(String key)<br />
6 pageContext<br />
6 service方法</p>
<img src ="http://www.blogjava.net/ywj-316/aggbug/304177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:49 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web服务（web Service）</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304176.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304176.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304176.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304176.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304176.html</trackback:ping><description><![CDATA[<p>web Service<br />
xml数据格式<br />
SOAP（简单对象访问）<br />
WSDL<br />
-----------<br />
开发步骤<br />
1 建立服务并发布<br />
&nbsp; XFire<br />
&nbsp; &#215; 导入jar包<br />
&nbsp; * service.xml<br />
&nbsp; * web.xml<br />
&nbsp; <br />
&nbsp; 创建接口<br />
&nbsp; public interface IProcessCredit{<br />
&nbsp;&nbsp;&nbsp;&nbsp; public String sayHello(String username);<br />
&nbsp; }<br />
&nbsp; 和实现类<br />
&nbsp; public class ProcessCreditImpt implement IProcessCredit{<br />
&nbsp;&nbsp;&nbsp;&nbsp; public String sayHello(String username){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "你好"+username;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp; }<br />
&nbsp; 编写配置文件<br />
&nbsp; services.xml<br />
&nbsp; &lt;service&gt;<br />
&nbsp; &lt;name&gt;CreditCard&lt;/name&gt;<br />
&nbsp; &lt;namespace&gt;http://www.CreditCard.com&lt;/namespace&gt;<br />
&nbsp; &lt;serviceClass&gt;<br />
&nbsp; org.com.IProcessCredit<br />
&nbsp; &lt;/serviceClass&gt;<br />
&nbsp; &lt;implementationClass&gt;<br />
&nbsp; org.com.ProcessCreditImpt<br />
&nbsp; &lt;/implementationClass&gt;<br />
&nbsp; <br />
2 客户端servlet调用服务<br />
&nbsp; 1 导入Service的jar<br />
&nbsp; 2 导入XFire的jar<br />
&nbsp; 3 Service <br />
&nbsp; Service service=new ObjectServiceFactory().create(IProcessCredit.class);<br />
&nbsp; XFire xfire=XfireFactory.newInstance().getXFire();<br />
&nbsp; XFireProxyFactory factory=new XFireProxyFactory(xfire);<br />
&nbsp; String url="";<br />
&nbsp; IProcessCredit c=(IProcessCredit)factor.create(service,url);<br />
&nbsp; c.sayHello("ddddddddddd");</p>
<p><br />
-----------------------------------------------------------------<br />
步骤：<br />
1 建立接口<br />
public interface IBookService {<br />
&nbsp;public int addBook(Book book);<br />
}</p>
<p>2 实现接口<br />
public class ProessBookService implements IBookService {<br />
&nbsp;public int addBook(Book book) {<br />
&nbsp;&nbsp;BookDao bookDao=new BookDao();<br />
&nbsp;&nbsp;return bookDao.addBook(book);<br />
&nbsp;}<br />
}</p>
<p>3 在src下创建META-INF文件夹，在META-INF下创建xfire文件夹，在xfire下创建services.xml<br />
&nbsp; (src--&gt;META-INF--&gt;xfire--&gt;services.xml)<br />
&lt;service&gt;<br />
&lt;name&gt;BookService&lt;/name&gt;<br />
&lt;namespace&gt;http://www.book.com&lt;/namespace&gt;<br />
&lt;serviceClass&gt;org.book.IBookService &lt;/serviceClass&gt;<br />
&lt;implementationClass&gt;org.book.ProessBookService &lt;/implementationClass&gt;<br />
&lt;/service&gt;<br />
4 编写web.xml<br />
&nbsp; &lt;servlet&gt;<br />
&nbsp; &lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt;<br />
&nbsp; &lt;servlet-class&gt;org.codehaus.xfire.transport.http.XFireConfigurableServlet&lt;/servlet-class&gt;<br />
&nbsp; &lt;/servlet&gt;<br />
&nbsp; &lt;servlet-mapping&gt;<br />
&nbsp; &lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt;<br />
&nbsp; &lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;<br />
&nbsp; &lt;/servlet-mapping&gt;<br />
5 编写调用方法<br />
Service serviceModle=new ObjectServiceFactory().create(IBookService.class);<br />
XFire xFire=XFireFactory.newInstance().getXFire();<br />
XFireProxyFactory factory=new XFireProxyFactory(xFire);<br />
String urlString="http://localhost:8080/ownhome/services/ProessBookService";<br />
IBookService bookService=(IBookService) factory.create(serviceModle, urlString);</p>
<img src ="http://www.blogjava.net/ywj-316/aggbug/304176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:48 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>servlet边滤器</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304174.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:47:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304174.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304174.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304174.html</trackback:ping><description><![CDATA[servlet边滤器<br />
1 编写实现javax.servlet.Filter接口的类<br />
public class MyFilter implements Filter {<br />
&nbsp;private FilterConfig config;<br />
&nbsp;private String encoding="IS0-8859-1";<br />
&nbsp;public void destroy() {//过滤器当前类被消灭时调用的方法<br />
&nbsp;}<br />
&nbsp;public void doFilter(ServletRequest request, ServletResponse response,//过滤器主方法<br />
&nbsp;&nbsp;&nbsp;FilterChain chain) throws IOException, ServletException {<br />
&nbsp;&nbsp;request.setCharacterEncoding(encoding);<br />
&nbsp;&nbsp;chain.doFilter(request, response);//设置其可被下个过滤器继续调用<br />
&nbsp;}<br />
&nbsp;public void init(FilterConfig config) throws ServletException {//过滤器当前类初始化时调用此方法<br />
&nbsp;&nbsp;this.config=config;<br />
&nbsp;&nbsp;String s=config.getInitParameter("encoding");//得到相应参数<br />
&nbsp;&nbsp;if(s!=null){<br />
&nbsp;&nbsp;&nbsp;encoding=s;<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
}<br />
FilterConfig类用于获得初始化的参数的包装类<br />
FilterChain类是过滤器的链，可以多重过滤<br />
2 配置Servlet过滤器<br />
&lt;filter&gt;<br />
&nbsp; &nbsp;&lt;filter-name&gt;EncodingFilter&lt;/filter-name&gt;过滤器名称<br />
&nbsp; &nbsp;&lt;filter-class&gt;com.webs.MyFilter&lt;/filter-class&gt;对应类<br />
&nbsp; &nbsp;&lt;init-param&gt;参数<br />
&nbsp; &nbsp;&nbsp;&lt;param-name&gt;encoding&lt;/param-name&gt;参数名<br />
&nbsp; &nbsp;&nbsp;&lt;param-value&gt;UTF-8&lt;/param-value&gt;参数值<br />
&nbsp; &nbsp;&lt;/init-param&gt;<br />
&lt;/filter&gt;<br />
&lt;filter-mapping&gt;映射特定资源<br />
&nbsp; &lt;filter-name&gt;EncodingFilter&lt;/filter-name&gt;过滤器名称<br />
&nbsp; &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
&lt;/filter-mapping&gt;<br />
3 页面<br />
4 注意：服务器端跳转是不过滤的
<img src ="http://www.blogjava.net/ywj-316/aggbug/304174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:47 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>servlet监听器</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304175.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:47:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304175.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304175.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304175.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304175.html</trackback:ping><description><![CDATA[<p>servlet监听器<br />
在WEB应用中响应特定对象的特定事件<br />
好处:更方便的控制application,session,request对象的发生的特定事件<br />
&nbsp;&nbsp;&nbsp;&nbsp; 可以集中处理特定的事件<br />
-------------------------------------------------------------------<br />
HttpSession监听器接口<br />
1 HttpSessionListener(需要配web.xml)<br />
2 HttpSessionAttributeListener(需要配web.xml)<br />
3 HttpSessionBindingListener<br />
4 HttpSessionActivationListener(需要配web.xml)<br />
-------------------------------------------------------------------<br />
HttpSessionListener<br />
1 sessionCreated()//当session对象产生的时候调用的方法<br />
2 sessionDestroyed()//当session对象消灭的时候调用的方法<br />
web.xml配置<br />
&lt;listener&gt;<br />
&nbsp;&lt;listener-class&gt;webbook.chapter14.CounterListener(对应的实现类)<br />
&nbsp;&lt;/listener-class&gt;<br />
&lt;/listener&gt;<br />
---------------------------------------------------------------------<br />
HttpSessionAttributeListener<br />
1 attributeAdded()//添加时调用<br />
2 attributeReplaced()//替换时调用<br />
3 attributeRemoved()//删除时调用<br />
产生事件的代码<br />
session.setAttribute("username","wangwu");<br />
session.setAttribute("username","lisi");<br />
session.removeAttribute("username");<br />
-----------------------------------------------------------------<br />
HttpSessionBindingListener<br />
1 valueBound();<br />
2 vaoueUnbound();<br />
调用机制<br />
如果一个类实现了HttpSessionBindingListener接口,则当这个类的对象通过session.setAttribute()被绑定到Session对象中时,<br />
则该对象的valueBound()方法被自动调用,当这个对象从Session中删除时(调用session.invalidate()和session.removeAtrribute()<br />
方法,或Session对象过期)valueUnbound()方法将被自动调用.<br />
--------------------------------------------------------------------------------------------------------<br />
HttpSessionActivationListener<br />
1 sessionDidActivate();<br />
2 sessionWillPassivate();<br />
---------------------------------------------------------------------------------<br />
例子:<br />
1 建立CounterListener处理类<br />
import javax.servlet.http.HttpSessionEvent;<br />
import javax.servlet.http.HttpSessionListener;<br />
public class CounterListener implements HttpSessionListener {</p>
<p>&nbsp;private static long onlineNumber=0;<br />
&nbsp;public void sessionCreated(HttpSessionEvent se) {<br />
&nbsp;&nbsp;onlineNumber++;<br />
&nbsp;}</p>
<p>&nbsp;public void sessionDestroyed(HttpSessionEvent se) {<br />
&nbsp;&nbsp;onlineNumber--;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public static long getOnlineNumber(){<br />
&nbsp;&nbsp;return onlineNumber;<br />
&nbsp;}<br />
}<br />
2 配置web.xml<br />
&lt;listener&gt;<br />
&nbsp; &nbsp;&nbsp;&lt;listener-class&gt;com.tags.CounterListener&lt;/listener-class&gt;<br />
&lt;/listener&gt;<br />
3 JSP页面<br />
&lt;%@page import="com.tags.CounterListener;"%&gt;<br />
&lt;body&gt;<br />
&nbsp;&nbsp;&nbsp; 当前的在线人数：&lt;%=CounterListener.getOnlineNumber() %&gt; &lt;br&gt;<br />
&lt;/body&gt;<br />
----------------------------------------------------------------------------<br />
ServletContext监听器接口<br />
ServletContextListener<br />
1 contextInitialized()<br />
2 contextDestroyed()<br />
调用机制<br />
当在web应用中部署了实现该接口的实现类后,在WEB容器加载WEB应用时(如:启动服务器)就会自动调用contextInitialized()方法,<br />
而当WEB容器销毁WEB应用时(如:关闭服务器),会自动调用contextDestroyed()方法.<br />
-----------------------------------------------------------------------------------<br />
ServletContextAttributeListener<br />
1 attributeAdded()<br />
2 attributeReplaced()<br />
3 attributeRemoved()<br />
触发事件的代码<br />
context.setAttribute("counter",new Integer(0));<br />
context.setAttribute("counter",new Integer(100));<br />
context.removeAttribute("counter");<br />
-----------------------------------------------------------<br />
HttpServletRequest监听器<br />
ServletRequestListener<br />
1 requestInitialized();<br />
2 requestDestroyed()<br />
调用机制<br />
与ServletContextListener接口类似,在web应用中部署实现该接口的实现类扣,在HttpServletRequest对象(JSP中的request对象)建立<br />
或者被销毁时,由web容器自动调用requestInitialized()或者requestDestroyed()方法.<br />
--------------------------------------------------------------------------------------<br />
ServletRequestAttributeListener<br />
1 attributeAdded();<br />
2 attributeReplaced();<br />
3 attributeRemoved();<br />
触发事件的代码<br />
request.setAttribute("username","lisi");<br />
request.setAttribute("username","wangwu");<br />
request.removeAttribute("username");</p>
<p>******************************************************************<br />
public class ListenerOnline implements HttpSessionLinstener,ServletContext{<br />
&nbsp; private&nbsp; application;<br />
&nbsp; public void sessionCreated(HttpSessionEvent event){<br />
&nbsp;&nbsp;&nbsp; Integer n=(Integer)application.getAttrabute("z",1000);<br />
&nbsp;&nbsp;&nbsp; application.setAttrabute("z",n.IntValue()+1);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; }<br />
&nbsp;&nbsp; public void sessionDestroyed(HttpSessionEvent event){<br />
&nbsp; }<br />
&nbsp; public void contextInitialized(ServletContextEvent event){<br />
&nbsp;&nbsp;&nbsp; application=event.getServletContext();<br />
&nbsp;&nbsp;&nbsp; application.setAttrabute("z",1000);<br />
&nbsp; }<br />
&nbsp;&nbsp; public void contextDestroyed(ServletContextEvent event){<br />
&nbsp; }<br />
}</p>
<p>&lt;listener&gt;<br />
&nbsp; &nbsp;&nbsp;&lt;listener-class&gt;com.tags.ListenerOnline&lt;/listener-class&gt;<br />
&lt;/listener&gt;</p>
<p>&lt;meta http-equiv="refresh" content="3"/&gt;</p>
<img src ="http://www.blogjava.net/ywj-316/aggbug/304175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:47 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>servlet基础</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304173.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:46:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304173.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304173.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304173.html</trackback:ping><description><![CDATA[<p>-HttpServletRequest request对象</p>
<p>request.getParameter("param");</p>
<p>request.setAttribute("loginname",object);</p>
<p>request.setCharacterEncoding("gb2312");<br />
输入内容转成中文<br />
-HttpServletResponse response对象</p>
<p>response.setContentType("text/html;charset=gb2312");<br />
设置输出为中文<br />
response.sendRediredt("url");</p>
<p>-RequsetDispatcher dispatcher=request.getRequestDispatcher(url);<br />
定义转发器<br />
dispatcher.forward(request,response);</p>
<p>-HttpSession session对象<br />
创建对象的两种方法<br />
HttpSession session = request.getSession(boolean value);<br />
HttpSession session = request.getSession();<br />
方法一：true时，返回该当前请求相关的会话，如果不存在创建一个新的会话，并返回。<br />
&nbsp; &nbsp;&nbsp;&nbsp;false时，返回该当前请求相关的会话，如果不存在返回null，不创建会话。<br />
方法二：等同于方法一为true时。<br />
HttpSession接口的方法<br />
session.setAttribute(String name,Object value);<br />
session.getAttribute(String name);//返回Object<br />
session.removeAttribute(String name);//删除<br />
session.invalidate()//当前会话关闭<br />
*/</p>
<p>/*<br />
读取xml文件中的参数值<br />
web.xml<br />
&lt;servlet&gt;<br />
&nbsp;&nbsp;&lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;repeat&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;10&lt;/param-value&gt;<br />
&nbsp;&nbsp;&lt;/init-param&gt;<br />
&lt;/servlet&gt;<br />
servlet.java<br />
int repeat=Integer.parseInt(this.getInitParameter("repeat"));<br />
*/</p>
<p>/*<br />
得到当前servlet相当信息的方法<br />
request.getServerName()//得到当前请求的服务器名子<br />
request.getRemoteAddr()得到当前请求服务器的IP地址<br />
request.getServerPort()得到当前请求服务器的端口号<br />
request.getProtlcol()得到当前请求的协议版本<br />
request.getContextPath()得到当前请求的上下文地址<br />
request.getScheme()得到当前请求的协议类型<br />
request.getMethod()得到当前请求的提交方式GET<br />
request.getRequestURI()得到当前服务器servlet的映射路径，带上下文<br />
request.getServletPath()得到当前服务器servlet的映射路径</p>
<p>servlet的头信息<br />
Enumeration e=request.getHeaderNames();得到包含header名子的Enumeration类形对象<br />
request.getHeader()得到header名子对应的值<br />
例子：<br />
Enumeration e=request.getHeaderNames();<br />
String name="";<br />
while(e.hasMoreElements)<br />
{<br />
&nbsp;&nbsp;name=(String)e.nextElement();<br />
&nbsp;&nbsp;System.out.println(name);<br />
&nbsp;&nbsp;System.out.println(request.getHeader(name));<br />
}</p>
<p>JSValidation验证框架<br />
url:http://cosoft.org.cn/projects/jsvalidateion<br />
修改validation-framwork.js<br />
var ValidationRoot="/webproject2/js/"<br />
配置validation-config.xml</p>
<p>FCKeditor文本编辑组件<br />
http://www.fckeditor.net/download</p>
<img src ="http://www.blogjava.net/ywj-316/aggbug/304173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:46 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>properties配置文件</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304172.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:45:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304172.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304172.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304172.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304172.html</trackback:ping><description><![CDATA[<p>1 在src下建config.properties文件<br />
config.properties<br />
uname=aaa<br />
pwd=123<br />
2 <br />
&nbsp;InputStream in=this.getClass().getResourceAsStream("/config.properties");<br />
&nbsp;//in=new FileInputStream("D:/config.properties");<br />
&nbsp;Properties pro=new Properties();<br />
&nbsp;try{<br />
&nbsp; pro.load(in);<br />
&nbsp; pro.loadFromXML();<br />
&nbsp; pro.getProperty("uname");<br />
&nbsp; //(String)pro.get("uname");<br />
&nbsp; pro.put(key,"value");<br />
&nbsp;}</p>
<p>class<br />
class.forName(String className)<br />
运行中的对象都是class的一个实例，相关技术-反射<br />
class.getResourceAsStream(String fileName)<br />
查找具有给定名称的资源</p>
<p>Result类在java.servlet.jsp.jstl.sql.Result包中,可以在关闭连接的状态下使用<br />
stmt=conn.createStatement();<br />
rs=stmt.executeQuery(sql);<br />
Result result=ResultSupport.toResult(rs);<br />
if(result==null){<br />
&nbsp;System.out.println("无数据");<br />
}<br />
for(int i=0;i&lt;result.getRowCount();i++){<br />
&nbsp;Map map=result.getRows()[i];<br />
&nbsp;map.get("username");<br />
}</p>
<p>作业，连接池，配置文件<br />
&lt;embed src=""/&gt;<br />
歌手表，gid,sex,name,love<br />
歌曲表,id,name,gid,typeid,歌词<br />
类型表,typeid,name<br />
url<br />
controls.play()<br />
controls.stop()</p>
<img src ="http://www.blogjava.net/ywj-316/aggbug/304172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:45 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字符转换</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304161.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304161.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304161.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304161.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304161.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304161.html</trackback:ping><description><![CDATA[<p>request.setCharacterEncoding("gbk");<br />
response.setCharacterEncoding("text/html;charset=gbk");<br />
String name=request.getParameter("username");</p>
<p>name=new String (name.getBytes("iso-8859-1"),"gbk");</p>
<p>1 过滤器<br />
HttpServletRequest req=(HttpServletRequest)request;<br />
request.setCharacterEncoding("gbk");<br />
china.do();<br />
2 子控制器<br />
public class ToChinese extends RequestProcessor{<br />
&nbsp;public boolean processProcess(HttpServletRequest req,HttpServletRespone rep){<br />
&nbsp;&nbsp;request.setCharacterEncoding("gb2312");<br />
&nbsp;&nbsp;return true;<br />
&nbsp;}<br />
}<br />
struts-config.xml<br />
&lt;controller processorClass="com.org.ToChinese"/&gt;</p>
 <img src ="http://www.blogjava.net/ywj-316/aggbug/304161.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:30 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304161.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP-自定义函数库</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304162.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304162.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304162.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304162.html</trackback:ping><description><![CDATA[自定义函数库<br />
1 定义类和方法(方法必须是public static)<br />
package com.bjsxt.struts;<br />
public class MyFunctios{<br />
&nbsp;&nbsp;public static String sayHello(String name){<br />
&nbsp;&nbsp;&nbsp;&nbsp;return "Hello "+name;<br />
&nbsp;&nbsp;}<br />
}<br />
2 编写自定义tld文件，并且将此文件放在WEB-INF或WEB-INF的任意子目录下<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;taglib xmlns="http://java.sun.com/xml/ns/j2ee"&nbsp; <br />
&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&nbsp; <br />
&nbsp;&nbsp;&nbsp; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"&nbsp; <br />
&nbsp;&nbsp;&nbsp; version="2.0"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;description&gt;my functions library&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;display-name&gt;my functions&lt;/display-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;tlib-version&gt;1.0&lt;/tlib-version&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;short-name&gt;my&lt;/short-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;uri&gt;http://www.bjsxt.com/functions&lt;/uri&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;function&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;name&gt;say&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;function-class&gt;com.bjsxt.struts.MyFunctions&lt;/function-class&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;function-signature&gt;java.lang.String sayHello(java.lang.String)&lt;/function-signature&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/function&gt;<br />
&lt;/taglib&gt;<br />
3 在web.xml中注册（建意，可以不注册）<br />
&nbsp; &lt;jsp-config&gt;<br />
&nbsp; &nbsp;&lt;taglib&gt;<br />
&nbsp; &nbsp;&nbsp;&lt;taglib-uri&gt;http://www.bjsxt.com/functions&lt;/taglib-uri&gt;<br />
&nbsp; &nbsp;&nbsp;&lt;taglib-location&gt;/WEB-INF/my.tld&lt;/taglib-location&gt;<br />
&nbsp; &nbsp;&lt;/taglib&gt;<br />
&nbsp; &lt;/jsp-config&gt;<br />
4 在JSP中采用taglib指令引入自定义函数库<br />
&lt;%@ taglib prefix="my" uri="com.bjsxt.struts.MyFunctions"%&gt;<br />
5 调用<br />
${my:say("jack")}
 <img src ="http://www.blogjava.net/ywj-316/aggbug/304162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:30 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tag Library-定制标记库</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304160.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:29:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304160.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304160.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304160.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304160.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304160.html</trackback:ping><description><![CDATA[<p>定制标记库<br />
1 编写标记处理类<br />
public class TimerTag extends TagSupport{<br />
&nbsp;private long start;<br />
&nbsp;private long end;<br />
&nbsp;public int doStartTag(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //doStartTag标记开始方法<br />
&nbsp;&nbsp;start=System.currentTimeMillis();<br />
&nbsp;&nbsp;return EVAL_BODY_INCLUDE;//<br />
&nbsp;}<br />
&nbsp;public int doEndTag() throws JspTagException {//doEndTag标记结束方法<br />
&nbsp;&nbsp;end=System.currentTimeMillis();<br />
&nbsp;&nbsp;long elapsed=end-start;<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;JspWriter out=pageContext.getOut();<br />
&nbsp;&nbsp;&nbsp;out.println("running time:"+elapsed+"ms.");<br />
&nbsp;&nbsp;}catch(IOException e){<br />
&nbsp;&nbsp;&nbsp;throw new JspTagException(e);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return EVAL_PAGE;//<br />
&nbsp;}<br />
}<br />
2 编写.tld文件<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;taglib xmlns="http://java.sun.com/xml/ns/j2ee"&nbsp; <br />
&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&nbsp; <br />
&nbsp;&nbsp;&nbsp; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"&nbsp; <br />
&nbsp;&nbsp;&nbsp; version="2.0"&gt;&nbsp; <br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;description&gt;custion web utility tags&lt;/description&gt; //对当前标记库的描述&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;tlib-version&gt;1.0&lt;/tlib-version&gt;&nbsp;&nbsp; //当前标记库的版本&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;short-name&gt;util&lt;/short-name&gt;&nbsp; //对当前标记库使用时的前缀名称&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;uri&gt;http://163.com&lt;/uri&gt; //可任意<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;tag&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;calc code running time&lt;/description&gt;&nbsp; //对当前标记的描述&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;timer&lt;/name&gt;&nbsp; //标记我名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tag-class&gt;com.tags.TimerTag&lt;/tag-class&gt; 当前标记对应的处理类的具体名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;body-content&gt;JSP&lt;/body-content&gt;&nbsp; //可有empty,JSP&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tag&gt;&nbsp; <br />
&nbsp;&lt;/taglib&gt;&nbsp; <br />
3 使用格式<br />
jsp页面<br />
&lt;%@ taglib prefix="util" uri="http://163.com" %&gt; 添加指令<br />
&lt;util:timer&gt;&lt;/util:timer&gt;</p>
<p>总结：<br />
TLD是一个XML文件，在WEB-INF目录下<br />
&lt;taglib&gt;根元素<br />
&nbsp;&lt;tlib-version&gt;version&lt;/tlib-version&gt;标记库的版本<br />
&nbsp;&lt;short-name&gt;prefix&lt;/short-name&gt;前缀名称<br />
&nbsp;&lt;uri&gt;uri&lt;/uri&gt;引用的地址<br />
&nbsp;...<br />
&nbsp;&lt;tag&gt;<br />
&nbsp;&nbsp;&lt;name&gt;tagname&lt;/name&gt;标记名称<br />
&nbsp;&nbsp;&lt;tag-class&gt;classname&lt;/tag-class&gt;标记对应的处理类<br />
&nbsp;&nbsp;&lt;tei-class&gt;classname&lt;/tei-class&gt;标记处理类的辅助处理类<br />
&nbsp;&nbsp;&lt;body-content&gt;[JSP,empty,scriptless,tagdependent]&lt;/body-content&gt;<br />
&nbsp;&nbsp;//jsp表示标记中可以包含html,java代码，这些代码可以被运行<br />
&nbsp;&nbsp;//empty表示标记中不包含内容<br />
&nbsp;&nbsp;//scriptless表示标记中可以包含EL,jsp的动作代码，不可以包括JAVA脚本代码<br />
&nbsp;&nbsp;//tagdependent表示标记中可以包含<br />
&nbsp;&nbsp;&lt;attribute&gt;标记的属性<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;name&gt;pattern&lt;/name&gt;属性的名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;required&gt;false&lt;/required&gt;表示该属性是否是必须的<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;rtexprvalue&gt;false&lt;/rtexprvalue&gt;该属性是否可以是JSP的表达式<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;&nbsp;&nbsp; <br />
&nbsp;&lt;/tag&gt;<br />
&lt;/taglib&gt;</p>
<p>TagSupport运行原理（不能对标记所包含的内容进行二次加工）<br />
&nbsp;<img height="264" alt="" src="http://www.blogjava.net/images/blogjava_net/ywj-316/5.jpg" width="584" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
BodyTagSupport运行原理(可以对开始和结束标记所包含的内容进行处理)<br />
<img height="270" alt="" src="http://www.blogjava.net/images/blogjava_net/ywj-316/4.jpg" width="749" border="0" />&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;public int doAfterBody()throws JspTagException{<br />
&nbsp;&nbsp;BodyContent bc=getBodyContent();取内容<br />
&nbsp;&nbsp;String input=bc.getString();取内容<br />
&nbsp;&nbsp;JspWriter out=bc.getEnclosingWriter();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;String newContent=input;<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;out.println(newContent);<br />
&nbsp;&nbsp;}catch(IOException e){<br />
&nbsp;&nbsp;&nbsp;throw new JspTagException(e);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return 1;<br />
&nbsp;}</p>
 <img src ="http://www.blogjava.net/ywj-316/aggbug/304160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:29 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304160.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tag Library-标记打包</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304159.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304159.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304159.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304159.html</trackback:ping><description><![CDATA[<p>Tag Library JAR<br />
标记库打包<br />
1 前建一个临时文件temp<br />
2 把当前工作空间下的classes文件夹下的文件复制到temp文件夹下<br />
3 在temp文件夹下新建WEB-INF文件夹<br />
4 把当前项目下的WEB-INF目录下的.tld文件复到到temp中WEB-INF文件夹下<br />
5 启用DOS，进入temp目录下<br />
6 运行命令：jar -cvf mytags.jar *<br />
mytags为要生成的jar文件名<br />
*代表temp文件下的所有文件<br />
7 其他项目要用时将该jar文件复制到项目的lib目录下就可以了</p>
<p>开源定制标记库<br />
JSTL<br />
Jakarta Taglibs http://jakarta.apache.org/taglibs/index.html<br />
Display tag http://displaytag.sf.net</p>
 <img src ="http://www.blogjava.net/ywj-316/aggbug/304159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:20 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSTL</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304158.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:19:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304158.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304158.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304158.html</trackback:ping><description><![CDATA[<p>JSTL<br />
------------------------------------------------------------------------------<br />
功能领域&nbsp;&nbsp; URI&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;&nbsp;&nbsp; 前缀&nbsp;&nbsp; 描述<br />
Core&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://java.sun.com/jsp/jstl/core&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c&nbsp;&nbsp;&nbsp;&nbsp; 核心标记库<br />
format&nbsp;&nbsp;&nbsp;&nbsp; http://java.sun.com/jsp/jstl/fmt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fmt&nbsp;&nbsp; 格式化标记库-进间、日期、国际化<br />
SQL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://java.sun.com/jsp/jstl/sql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql&nbsp;&nbsp; 对数据库的操作<br />
XML&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://java.sun.com/jsp/jstl/xml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml&nbsp;&nbsp; 对XML的操作<br />
Functions&nbsp; http://java.sun.com/jsp/jstl/functions&nbsp; fn&nbsp;&nbsp;&nbsp; 函数标记库，主要是字符串<br />
用在视图层的技术<br />
--------------------------------------------------------------------------------<br />
用使：<br />
1 引用标记库<br />
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
用户名：&lt;c:out value="${username}" /&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
-----------------------------------------------------------------------------------<br />
Core核心标记库<br />
操作变量&nbsp;&nbsp;&nbsp;&nbsp; 条件操作&nbsp;&nbsp;&nbsp;&nbsp; 循环操作&nbsp;&nbsp;&nbsp;&nbsp; URI操作<br />
out&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forEach&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import<br />
set&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; choose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forTokens&nbsp;&nbsp;&nbsp; url<br />
remove&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redirect转向<br />
catch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; otherwise&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param<br />
--------------------------------------------------------------------------------------<br />
&lt;c:out&gt;标记<br />
使用语法<br />
1 &lt;c:out value="vlaue" [escapeXml="{true|false}"]<br />
&nbsp;&nbsp; [default="defaultValue"] /&gt;<br />
2 &lt;c:out value="vlaue" [escapeXml="{true|false}"]&gt;<br />
&nbsp;&nbsp; default value<br />
&nbsp; &lt;/c:out&gt;<br />
属性<br />
------------------------------------------------------------------------<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;&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; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; | 缺省值<br />
value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 需要输出的值，可以是EL表达式或常量&nbsp; | 可以&nbsp; | 是&nbsp;&nbsp;&nbsp; | 无<br />
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | value值为空时所输出的内容&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; | 无<br />
escapeXml | 为true对输出内容中的&lt;、&gt;、'、"和&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| 可以&nbsp; | 否&nbsp;&nbsp;&nbsp; | true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 字符进行转义，分别转成都市&amp;lt,&amp;gt,&nbsp;&nbsp;&nbsp; &nbsp; |&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;&nbsp; &nbsp;&nbsp; | &#039,&#034和&amp;amp.为false不进行转义 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
------------------------------------------------------------------------<br />
&lt;c:set&gt;标记<br />
使用语法<br />
1 &lt;c:set value="value" var="name" [scope="{page|request|session|application}"] /&gt;<br />
2 &lt;c:set var="name" [scope="{page|request|session|application}"]&gt;<br />
&nbsp;&nbsp;value<br />
&nbsp; &lt;/c:set&gt;<br />
3 &lt;c:set var="name" target="target" property="propertName"&gt;<br />
4 &lt;c:set target="target" propert="propertyName"&gt;<br />
&nbsp;&nbsp;value<br />
&nbsp; &lt;/c:set&gt; <br />
3和4是给已有的对象属性赋值<br />
属性<br />
-----------------------------------------------------------------------------<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;&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;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;| EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; | 缺省值<br />
value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 要保存的内容,可以是EL表达式或常量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | 可以&nbsp; | 是&nbsp;&nbsp;&nbsp; | 无<br />
target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 要修改属性的对象名,一般为javaBeans对象名 | 可以&nbsp; | 否&nbsp;&nbsp;&nbsp; | 无<br />
property&nbsp; | 要修改的javaBeans的属性&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;&nbsp;&nbsp; | 可以&nbsp; | 否&nbsp;&nbsp;&nbsp; | 无<br />
var&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 否&nbsp;&nbsp; | 是&nbsp;&nbsp;&nbsp; | 无<br />
scope&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;&nbsp;&nbsp; &nbsp;|&nbsp; 否&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | page<br />
-----------------------------------------------------------------------------<br />
&lt;c:remove&gt;标记<br />
使用语法<br />
&lt;c:remove var="name" [scope="{page|request|session|application}"] /&gt;<br />
属性<br />
------------------------------------------------------------------------------------------------<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | EL&nbsp; | 必选&nbsp; | 缺省值<br />
var&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; | 无<br />
scope&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 被删除的变量的作用范围&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp; | 否&nbsp;&nbsp;&nbsp; | page,request,session,application<br />
------------------------------------------------------------------------------------------------<br />
&lt;c:catch&gt;标记<br />
使用语法<br />
&lt;c:catch [var="name"]&gt;<br />
&nbsp;body content<br />
&lt;/c:catch&gt;<br />
属性<br />
------------------------------------------------------------------------<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | EL&nbsp; | 必选&nbsp; | 缺省值<br />
var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 用来保存违例信息的变量名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp; | 否&nbsp;&nbsp;&nbsp; | 无<br />
------------------------------------------------------------------------<br />
例子:<br />
&lt;c:catch var="ex"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;%<br />
&nbsp;&nbsp;&nbsp; &nbsp;String number="none";<br />
&nbsp;&nbsp;&nbsp; &nbsp;int i=Integer.parseInt(number);<br />
&nbsp;&nbsp;&nbsp; %&gt;<br />
&lt;/c:catch&gt;<br />
${ex}<br />
将违例信息保存在ex变量中,如没有发生违例,则什么也不作</p>
<p>&lt;c:if&gt;标记<br />
使用语法<br />
1 &lt;c:if test="condition" var="name" [scope="{page|request|session|application}"] /&gt;<br />
2 &lt;c:if test="condition" [var="name"] [scope="{page|request|session|application}"]&gt;<br />
&nbsp;body content<br />
&lt;/c:if&gt;<br />
属性<br />
-----------------------------------------------------------------------------<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;&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; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; | 缺省值<br />
test&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 可以&nbsp; | 是&nbsp;&nbsp;&nbsp; | 无<br />
var&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;&nbsp; | 无<br />
scope&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 保存条件结果的变量的作用范围&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | page<br />
-----------------------------------------------------------------------------<br />
&lt;c:choose&gt;标记<br />
使用语法<br />
&lt;c:choose&gt;<br />
&nbsp;body content(&lt;when&gt;and&lt;otherwise&gt;)<br />
&lt;/c:choose&gt;</p>
<p>&lt;c:when&gt;标记<br />
使用语法<br />
&lt;c:when test="condition"&gt;<br />
&nbsp;body content<br />
&lt;/c:when&gt;<br />
属性<br />
-----------------------------------------------------------------------------<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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| 动态&nbsp; | 必选&nbsp; | 缺省值<br />
test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 如果它的结果为true,执行&lt;c:when&gt;所包含的&nbsp; | 可以&nbsp; | 是&nbsp;&nbsp;&nbsp; | 无<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 内容,false则不执行&lt;c:when&gt;所包含的内容&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
-----------------------------------------------------------------------------<br />
&lt;c:otherwise&gt;标记<br />
使用语法<br />
&lt;c:otherwise&gt;<br />
&nbsp;body content<br />
&lt;/c:otherwise&gt;<br />
---------------------------------------------------------------------------<br />
例子:<br />
&lt;c:choose&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;c:when test="${param.age&gt;=70}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 70以上<br />
&nbsp;&nbsp;&nbsp; &lt;/c:when&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;c:when test="${param.age&gt;35 and param.age&lt;70}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 35-70<br />
&nbsp;&nbsp;&nbsp; &lt;/c:when&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 35以下<br />
&nbsp;&nbsp;&nbsp; &lt;/c:otherwise&gt;<br />
&lt;/c:choose&gt;<br />
--------------------------------------------------------------------------------------------<br />
&lt;c:forEach&gt;标记<br />
使用语法<br />
1 &lt;c:forEach [var="name"] items="collection" [varStatus="varStatusName"]<br />
&nbsp;&nbsp; [begin="begin"] [end="end"] [step="step"]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; body content<br />
&nbsp; &lt;/c:forEach&gt;<br />
2 &lt;c:forEach [var="name"] items="collection" [varStatus="varStatusName"]<br />
&nbsp;&nbsp; begin="begin" end="end" [step="step"]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; body content<br />
&nbsp; &lt;/c:forEach&gt;<br />
属性<br />
------------------------------------------------------------------------------------------------------------------------------<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; &nbsp;| EL&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |缺省值<br />
begin&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; | int&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; |0<br />
end&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;&nbsp;&nbsp; | int&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|集合中最后一个成员的索引<br />
step&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 可以&nbsp; | 否&nbsp;&nbsp;&nbsp; | int&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; |1<br />
var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 代表当前成员的变量名 |&nbsp; 否&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | String&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; |无<br />
items&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 进得循环的集合&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; |&nbsp; 否&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | String,数组,Map,Collection,Iterator,Enumeration |无<br />
varStatus | 显示循环状态的变量&nbsp;&nbsp;&nbsp;&nbsp; | 可以&nbsp; | 否&nbsp;&nbsp;&nbsp; | String&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |无<br />
-------------------------------------------------------------------------------------------------------------------------------<br />
varStatus属性<br />
----------------------------------------------------------<br />
名称&nbsp;&nbsp;&nbsp; | 类型&nbsp;&nbsp;&nbsp;&nbsp; | 描述&nbsp;&nbsp;&nbsp; <br />
index&nbsp;&nbsp; | int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 现在所操作的成员的索引&nbsp; <br />
count&nbsp;&nbsp; | int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 现在所操作的成员的总数&nbsp; <br />
first&nbsp;&nbsp; | boolean&nbsp; | 现在所操作的成员,是否为第一个成员&nbsp;&nbsp;&nbsp; <br />
last&nbsp;&nbsp;&nbsp; | boolean&nbsp; | 现在所操作的成员,是否为最后一个成员&nbsp;&nbsp; <br />
----------------------------------------------------------<br />
&lt;%<br />
&nbsp;&nbsp;&nbsp; String names[]=new String[4];<br />
&nbsp;&nbsp;&nbsp; names[0]="afdsaf";<br />
&nbsp;&nbsp;&nbsp; names[1]="dggh";<br />
&nbsp;&nbsp;&nbsp; names[2]="bcbncn";<br />
&nbsp;&nbsp;&nbsp; names[3]="434535";<br />
&nbsp;&nbsp;&nbsp; pageContext.setAttribute("names",names);<br />
&nbsp;&nbsp;&nbsp; Map map=new HashMap();<br />
&nbsp;&nbsp;&nbsp; map.put("k1","v1");<br />
&nbsp;&nbsp;&nbsp; map.put("k2","v2");<br />
&nbsp;&nbsp;&nbsp; request.setAtrribute("map1",map);<br />
%&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;c:forEach items="${names}" var="name" begin="1" end="2" step="1" varStatus="i"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;${name } ${i.index } ${i.count } ${i.first } ${i.last }&lt;br/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/c:forEach&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;c:forEach items="${map1}"&nbsp; var="v"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;${v.key } = ${v.value }&lt;br/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/c:forEach&gt;</p>
<p>&lt;c:forTokens&gt;标记 将一个字符串进行分隔<br />
使用语法<br />
&lt;c:forTokens items="stringOfTokens" delims="delimiters" [var="name"]<br />
&nbsp;&nbsp; [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; body content<br />
&lt;/c:forTokens&gt;<br />
属性<br />
------------------------------------------------------------------------------------------<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;&nbsp;&nbsp; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; | 类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |缺省值<br />
items&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | 进行迭代处理的变量&nbsp;&nbsp;&nbsp;&nbsp; | 可以&nbsp; | 是&nbsp;&nbsp;&nbsp; | String&nbsp;&nbsp;&nbsp; |无<br />
delims&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; | char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |无<br />
begin&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; | int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |0<br />
end&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;&nbsp;&nbsp; | int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |集合中最后一个成员的索引<br />
step&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 可以&nbsp; | 否&nbsp;&nbsp;&nbsp; | int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |1<br />
var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 代表当前成员的变量名&nbsp;&nbsp; |&nbsp; 否&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | String&nbsp;&nbsp;&nbsp; |无<br />
varStatus | 显示循环状态的变量&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 否&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | String&nbsp;&nbsp;&nbsp; |无<br />
-------------------------------------------------------------------------------------------<br />
&lt;c:forTokens items="dsf:dsafsa:dsffs,dfdfs" var="name" delims=":,"&gt;<br />
&nbsp;&nbsp;&nbsp; ${name }&lt;br/&gt;<br />
&lt;/c:forTokens&gt;<br />
-------------------------------------------------------------------------------------------<br />
&lt;c:import&gt;标记 相当于include将另外一个页面的内容引入到当前页面来<br />
使用语法<br />
1 &lt;c:import url="url" [context="context"] [var="name"] [scope="{page|request|session|application}"]<br />
&nbsp;&nbsp; [charEncoding="charEncoding"]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:param&gt;//可传参数<br />
&nbsp; &lt;/c:import&gt;<br />
2 &lt;c:import url="url" [context="context"] varReader="varReaderName"<br />
&nbsp;&nbsp; [charEncoding="charEncoding"]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; body content//内容<br />
&nbsp; &lt;/c:import&gt;<br />
属性<br />
------------------------------------------------------------------------------------------<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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; |缺省值<br />
url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 需要导入页面url地址&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;&nbsp;&nbsp;&nbsp; &nbsp; | 是&nbsp;&nbsp;&nbsp; | 是&nbsp;&nbsp;&nbsp; |无<br />
context&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | 本地web应用的名字&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;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 是&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |当前应用的名子<br />
charEncoding&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;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |ISO-8859-1<br />
var&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |无<br />
scope&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; |page<br />
varReader&nbsp;&nbsp;&nbsp;&nbsp; | 用于接受导入文本的java.io.Reader变量的名称 | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |无<br />
-------------------------------------------------------------------------------------------</p>
<p>&lt;c:url&gt;标记 创建链接<br />
使用语法<br />
1 &lt;c:url value="value" [context="context"] [var="name"] [scope="{page|request|session|application}"] /&gt;<br />
2 &lt;c:url value="value" [context="context"] [var="name"] [scope="{page|request|session|application}"] /&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;c:param /&gt;<br />
&nbsp; &lt;/c:url&gt;<br />
属性<br />
------------------------------------------------------------------------------------------<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; |缺省值<br />
value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | url地址&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;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | 是&nbsp;&nbsp;&nbsp; | 是&nbsp;&nbsp;&nbsp; |无<br />
context&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | web应用的名字&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; |当前web应用的名子<br />
var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 保存url地址的变量的名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |输出到当前页面<br />
scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 存储url地址的变量的作用范围&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |page<br />
-------------------------------------------------------------------------------------------<br />
&lt;c:url var="website" value="http://localhost:8080/webproject/out.jsp"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;c:param name="p" value="hello" /&gt;<br />
&lt;/c:url&gt;<br />
${website }&lt;br&gt;<br />
&lt;a href=" ${website }"&gt;dddd&lt;/a&gt;<br />
--------------------------------------------------------------------------------<br />
&lt;c:redirect&gt;标记 页面跳转<br />
使用语法<br />
1 &lt;c:redirect url="value" [context="context"] /&gt;<br />
2 &lt;c:redirect url="value" [context="context"]&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;c:param /&gt;<br />
&nbsp; &lt;/c:redirect&gt;<br />
属性<br />
------------------------------------------------------------------------------------------<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 必选&nbsp; |缺省值<br />
url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | url地址&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 是&nbsp;&nbsp;&nbsp; |无<br />
context&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 要转向到的web应用的名字&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |当前web应用的名子<br />
-------------------------------------------------------------------------------------------<br />
&lt;c:redirect url="LoopTag.jsp"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:param name="p" value="aa" /&gt;<br />
&lt;/c:redirect&gt;<br />
-------------------------------------------------------------------------------</p>
<p><br />
Format标记库<br />
-----------------------------------------<br />
国际化有关&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 时间日期有关(一般不在页面作处理)<br />
setLocale&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | formatNumber<br />
requestEncoding&nbsp;&nbsp; | formatDate<br />
bundle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | parseDate<br />
message&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | parseNumber<br />
param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | setTimeZone<br />
setBundle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | timeZone<br />
-----------------------------------------<br />
&lt;fmt:setLocale&gt;标记&nbsp; 设置国际化语言<br />
使用语法<br />
&lt;fmt:setLocale value="locale" [variant="variant"] [scope="{page|request|session|application}"] /&gt;<br />
属性<br />
---------------------------------------------------------------------------------------------------------------------------<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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; |缺省值<br />
value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 表示该语言环境的一个字符串，或者是java.util.Locale类的对象&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; |无<br />
scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 指定这个对象的作用范围，有效值为page,requset,session,applicattion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |page<br />
variant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 进一步针对特定的平台或供应商定制语言环境。如,MAC和WIN分别对应Macintosh和Windows平台 | 可以&nbsp; | 否&nbsp;&nbsp;&nbsp; |无<br />
---------------------------------------------------------------------------------------------------------------------------<br />
&lt;fmt:setBundle&gt;标记&nbsp; 设定国际化资源束的位置<br />
使用语法<br />
&lt;fmt:setBundle basename="basename" [var="name"] [scope="{page|request|session|application}"] /&gt;<br />
属性<br />
---------------------------------------------------------------------------------------------------------------------------<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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; |缺省值<br />
basename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 设置使用的资源文件束文件的路径与名称，不应当包含任保本地化后缀或文件扩展名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 可以&nbsp; | 是&nbsp;&nbsp;&nbsp; |无<br />
var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 设置了该属性，那么将把basename属性所标识的资源束赋给该属性值所命名的变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |无<br />
scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 指明缺省资源束设置所应用的JSP作用域&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |page<br />
---------------------------------------------------------------------------------------------------------------------------<br />
束文件名resources_zh_CN.properties(basename属性)<br />
&lt;fmt:setBundle basename="com.v512.examples.resources" /&gt;</p>
<p>&lt;fmt:bundle&gt;标记&nbsp; 设定某个页面或某几行国际化资源束的位置<br />
使用语法<br />
&lt;fmt:bundle basename="basename" [prefix="prefix"]&gt;<br />
&nbsp; body content<br />
&lt;fmt:bundle&gt;<br />
属性<br />
---------------------------------------------------------------------------------------------------------------------------<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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; |缺省值<br />
basename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 设置使用的资源文件束文件的路径与名称，不应当包含任保本地化后缀或文件扩展名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 可以&nbsp; | 是&nbsp;&nbsp;&nbsp; |无<br />
prefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 为所嵌套的&lt;fmt:message&gt;标记的key值指定缺省前缀&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;&nbsp;&nbsp;&nbsp;&nbsp; | 可以&nbsp; | 否&nbsp;&nbsp;&nbsp; |无<br />
---------------------------------------------------------------------------------------------------------------------------</p>
<p>&lt;fmt:message&gt;标记&nbsp; (核心)设置资料束文件中的KEY和对应的内容<br />
使用语法<br />
1 &lt;fmt:message key="messageKey" [bundle="resourceBundle"] [var="varName"] [scope="{page|request|session|application}"] /&gt;<br />
2 &lt;fmt:message [bundle="resourceBundle"] [var="varName"] [scope="{page|request|session|application}"]&gt;<br />
&nbsp;&nbsp;key<br />
&nbsp;&nbsp;[&lt;fmt:param&gt;]<br />
&nbsp; &lt;/fmt:message&gt;<br />
属性<br />
-----------------------------------------------------------------------------------------------------------------------------------------------<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;&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;&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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | EL&nbsp;&nbsp;&nbsp; | 必选&nbsp; |缺省值<br />
key&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;&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;&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;&nbsp;&nbsp; &nbsp;&nbsp; | 可以&nbsp; | 是&nbsp;&nbsp;&nbsp; |无<br />
bundle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 用来指定一个显式的资源束,用来查找由key属性标识的消息.请注意,该属性的值必须是实际的资源束.&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| 如当指定&lt;fmt:setBundle&gt;操作的var属性时同该标记所赋予的资源束.&lt;fmt:message&gt;的bundle属性不支持字符串值&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;&nbsp;&nbsp;&nbsp; <br />
var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | 该标记所生成的文本消息赋给指定的变量,而不是输出到JSP页面中&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; | 否&nbsp;&nbsp;&nbsp; |无<br />
scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 由来指定的var属性指定的变量的作用域,有效值:page,request,session,application&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;&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; |page<br />
-----------------------------------------------------------------------------------------------------------------------------------------------</p>
<p>&lt;fmt:requestEncoding&gt;标记&nbsp; 设置编码方式<br />
使用语法<br />
&lt;fmt:requestEncoding [value="charsetName"] /&gt;<br />
作用等同于<br />
request.setCharacterEncoding()<br />
--------------------------------------------------------------------------------<br />
&lt;fmt:param&gt;标记&nbsp; 设置编码方式<br />
使用语法<br />
1 &lt;fmt:param value="messageParameter" /&gt;<br />
2 &lt;fmt:param&gt;<br />
&nbsp;&nbsp;body content<br />
&nbsp; &lt;/fmt:param&gt;<br />
-----------------------------------------------------------------<br />
&lt;fmt:formatDate&gt; 标记<br />
使用方法:<br />
&lt;fmt:formatDate value="${today}" type="date" /&gt;<br />
&lt;fmt:formatDate value="${today}" dateStyle="full" /&gt;<br />
&lt;fmt:formatDate value="${today}" pattern="yyyy/MM/dd HH:mm:ss" /&gt;<br />
&lt;fmt:formatDate value="${today}" pattern="yyyy/MM/dd HH:mm:ss" var="d"/&gt;<br />
----------------------------------------------------------------------------<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |结果<br />
value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 要格式化的日期值 | default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |2008-8-1<br />
type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 显现的日期格式&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |2008-8-1<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |14:47:59<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | both&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |2008-8-1 14:47:59<br />
dateStyle&nbsp;&nbsp; | 显现的日期格式&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |08-8-1<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | medium&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |2008-8-1<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |2008年8月1日<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| full&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |2008年8月1日 星期一<br />
pattern&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 定义日期格式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |yyy/MM/dd HH:mm:ss |2008/08/01 14:47:59<br />
var&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 保存变量的scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
-----------------------------------------------------------------------------<br />
&lt;fmt:formatNumber&gt; 标记<br />
&lt;fmt:formatNumber value="${n}" pattern="###,###.##"/&gt;<br />
&lt;fmt:formatNumber value="${n}" pattern="###,###.0000"/&gt;<br />
----------------------------------------------------------------------------<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |结果<br />
value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 要格式化的日期值 | default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |123,456.123<br />
type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 显现的数据格式&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| number(数字)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |123,456.123<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | currency(货币)&nbsp;&nbsp;&nbsp; |￥123,456.123<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| percent(百分比)&nbsp;&nbsp; |23.33%<br />
groupingUsed| 是否分组显示&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| true/false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
pattern&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; |123,456.123<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|###,###.0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |123,456.1230<br />
var&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;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 保存变量的scope&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
-----------------------------------------------------------------------------<br />
&lt;format&gt;标记例子<br />
1 建立resources.properties文件(英文)<br />
&nbsp; 内容:guestbook.display.welcome=welcome to my website<br />
2 建立resources.properties_zh_CN.properties文件(中文)<br />
&nbsp; 方法:<br />
&nbsp; (1)在临时目录下建立一个临时文件resources_t.properties<br />
&nbsp;&nbsp;&nbsp;&nbsp; 内容:guestbook.display.welcome=欢迎大家访问网站<br />
&nbsp; (2)在DOS下进行该临时目录,执行DOS命今<br />
&nbsp;&nbsp;&nbsp;&nbsp; c:\temp&gt;native2ascii -encoding uft-8 resources_t.properties resources_zh_CN.properties<br />
&nbsp; (3)将转换好的文件复制到项目目录下<br />
3 建立JSP页面<br />
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"&nbsp; %&gt;<br />
fmt:bundle basename="com.tags.resources"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;fmt:message key="guestbook.display.welcome"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/fmt:message&gt;<br />
&lt;/fmt:bundle&gt;</p>
<p>-----------------------------------------------------------------------------------------------------------<br />
&lt;sql&gt;标签 <br />
&lt;setDatasource&gt;<br />
&lt;update&gt;<br />
&lt;query&gt;<br />
&lt;param&gt;<br />
1 导入sql的jar包<br />
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"&nbsp; %&gt;<br />
&lt;sql:setDataSource driver="" url="" user="" password="" var="" scope=""/&gt;<br />
&lt;sql:update var="oerder" dataSource="${conn}"&gt;<br />
&nbsp;insert into BookOrder(username,zipcode,phone,creditcard,total)<br />
&nbsp;values(?,?,'88888833333','123432432423',50.00)<br />
&nbsp;&lt;sql:param value="accp"/&gt;<br />
&nbsp;&lt;sql:param value="1111"/&gt;<br />
&lt;/sql:update&gt;<br />
&lt;sql:query var="rs" dataSource="${conn}"&gt;<br />
&nbsp;&nbsp; select * from aa<br />
&lt;/sql:query&gt;<br />
&lt;C:forEach var="row" items="${rs.rows}"&gt;<br />
&nbsp;&nbsp; ${row.username}&nbsp;&nbsp;&nbsp;&nbsp; ${row.password}<br />
&lt;/c:forEach&gt;</p>
 <img src ="http://www.blogjava.net/ywj-316/aggbug/304158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:19 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp动作</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304156.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:04:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304156.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304156.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304156.html</trackback:ping><description><![CDATA[jsp:include<br />
&lt;jsp:include page="/include.jsp"&gt;&lt;/jsp:include&gt;动作<br />
&lt;%@ include file="/footer.html"%&gt;//指今<br />
jsp:forward<br />
&nbsp;1 &lt;jsp:forward page="/include.jsp" /&gt;<br />
&nbsp;2 &lt;%<br />
&nbsp;&nbsp;&nbsp; RequestDispatcher rd=request.getRequestDispatcher("/imclude.jsp");<br />
&nbsp;&nbsp;&nbsp; rd.forward(request,response);<br />
&nbsp;&nbsp; %&gt;<br />
&nbsp;1和2结果相同
 <img src ="http://www.blogjava.net/ywj-316/aggbug/304156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:04 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javaBean</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304154.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:03:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304154.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304154.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304154.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304154.html</trackback:ping><description><![CDATA[javaBean<br />
* 封装数据<br />
* 封装业务方法<br />
&lt;jsp:useBean/&gt;<br />
&lt;jsp:useBean id="" class="" scope=""/&gt;<br />
class属性必须打包,scope默认为page<br />
&lt;jsp:setProperty/&gt;<br />
&lt;jsp:setProperty name="user" property="*"/&gt;<br />
多个form属性自动匹配<br />
&lt;jsp:getProperty/&gt;<br />
&lt;jsp:forward/&gt;<br />
&lt;jsp:forward page="b.jsp"/&gt;//相当于request.getRequestDispatcher<br />
&lt;jsp:include/&gt;<br />
区分大小写<br />
 <img src ="http://www.blogjava.net/ywj-316/aggbug/304154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:03 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EL</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304153.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304153.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304153.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304153.html</trackback:ping><description><![CDATA[<p>//EL&nbsp; 的基本用法<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; &nbsp; | 对应的调用方法<br />
javaBeans&nbsp;&nbsp;&nbsp; | ${user.username}*&nbsp;&nbsp;&nbsp; | user.getUsername()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| ${user["username"]}&nbsp; |<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | ${user['username']} &nbsp; | sport[1]<br />
数组&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | ${sport[1]}*&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | ${sport['1']}&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | ${sport["1"]}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; |<br />
List&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | ${address[2]}*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | address.get(2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | ${address['2']}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; |<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | ${address["2"]}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; |<br />
Map&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | ${phone["home"]}&nbsp;&nbsp;&nbsp;&nbsp; | phone.get("home")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | ${phone['home']}&nbsp;&nbsp;&nbsp; &nbsp; |<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | ${phone.home}*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
//EL的内置对象（与JSP有区加别，只能在EL中使用，不能用在JSP中,名称不同但指同一个内容）<br />
pageContext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对应JSP中当前页面上下文的对象<br />
pageScope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对应JSP中page对象<br />
requestScope&nbsp;&nbsp;&nbsp;&nbsp; 对应JSP中request对象<br />
sessionScope&nbsp;&nbsp;&nbsp;&nbsp; 对应JSP中session对象<br />
applicationScope 对应JSP中application对象<br />
param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对应页面传值的对象<br />
paramValues&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对应页面传来一组值的对象<br />
header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对应页面头信息的值对象<br />
headerValues&nbsp;&nbsp;&nbsp;&nbsp; 对应页面头信息的数组对象<br />
&lt;%= session.getAttribute("phone")%&gt;<br />
等价于:<br />
${sessionScope.phone}<br />
cookie对应cookie对象的值<br />
initParam对应设定的初始参数的值</p>
<p>//设定JSP不使用JSP EL<br />
当前面页不使用<br />
&lt;%@page isELIgnored="true"%&gt;<br />
整个WEB应用不使用JSP EL<br />
修改web.xml<br />
&lt;web-app...&gt;<br />
&nbsp;&nbsp;&lt;jsp-config&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;jsp-property-group&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;el-ignored&gt;true&lt;/el-ignored&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/jsp-property-group&gt;<br />
&nbsp;&nbsp;&lt;/jsp-config&gt;<br />
&lt;/web-app&gt;<br />
----------------------------------------------------<br />
pageContext.setAttribute("username",null)//false<br />
pageContext.setAttribute("username","")//false</p>
<p>${empty username}//判断username是否为空<br />
---------------------------------------------------<br />
pageContext.setAttribute("username","janly")<br />
request.setAttribute("username","janly")<br />
session.setAttribute("username","janly")<br />
application.setAttribute("username","janly")</p>
<p>${pageScope.username}<br />
${requestScope.username}<br />
${sessionScope.username}<br />
${applicationScope.username}<br />
${username}按作用域范围找查<br />
-----------------------------------------<br />
web.xml<br />
&lt;context-param&gt;<br />
&lt;param-name&gt;repeat&lt;/param-name&gt;<br />
&lt;param-value&gt;100&lt;/param-value&gt;<br />
&lt;/context-param&gt;</p>
<p>${initParam.repeat}<br />
${param.username}<br />
---------------------------------<br />
</p>
 <img src ="http://www.blogjava.net/ywj-316/aggbug/304153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:02 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>