﻿<?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-anchor110-文章分类-jsp，servlet相关</title><link>http://www.blogjava.net/anchor110/category/46767.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 09 Aug 2018 09:46:16 GMT</lastBuildDate><pubDate>Thu, 09 Aug 2018 09:46:16 GMT</pubDate><ttl>60</ttl><item><title>java.lang.NoClassDefFoundError踩坑经历</title><link>http://www.blogjava.net/anchor110/articles/433323.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Thu, 09 Aug 2018 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/433323.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/433323.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/433323.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/433323.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/433323.html</trackback:ping><description><![CDATA[<strong>经历如下：</strong><br />eclipse web本地工程，new一个java对象，编译时都没问题，但运行时就直接没反应，也没任何报错。查找了最少半天时间，原来以为是类之间相互依赖造成的，可能某些依赖类没加载进来或初始化的时候有问题。但最终定位确定不是，经过不断折磨和探索，最后在debug时，选择new ***()进行watch，发现报了java.lang.NoClassDefFoundError错误，这才开始有一点眉目。<br /><br /><strong>最终定位问题原因：</strong>java web工程build后的WEB-INF/lib下，没有引入依赖的lib包，导致运行时出现诡异现象。<br /><br /><img src ="http://www.blogjava.net/anchor110/aggbug/433323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2018-08-09 17:13 <a href="http://www.blogjava.net/anchor110/articles/433323.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat查看并发连接数</title><link>http://www.blogjava.net/anchor110/articles/404240.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Thu, 19 Sep 2013 17:28:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/404240.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/404240.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/404240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/404240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/404240.html</trackback:ping><description><![CDATA[<div>netstat -na | grep ESTAB | grep 8080 | wc -l</div><img src ="http://www.blogjava.net/anchor110/aggbug/404240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2013-09-20 01:28 <a href="http://www.blogjava.net/anchor110/articles/404240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何绑定域名和ip</title><link>http://www.blogjava.net/anchor110/articles/391435.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Fri, 16 Nov 2012 04:28:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/391435.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/391435.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/391435.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/391435.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/391435.html</trackback:ping><description><![CDATA[方法：<br />1、进入注册域名的服务网站，登录后台管理系统。<br />2、选择&#8220;设置域名解析&#8221;，选择要绑定的域名和要绑定的IP地址。<br />3、注：凡是.cn域名，没备案前，都不支持绑定。只有.com域名支持。<br /><br />过个30分钟左右，具体等待时间可能略有差异，ping域名，就能ping通了，此时，就已经绑定了。<br /><br />接下来，就可以用域名替换ip访问网站或自己的WEB程序了。<img src ="http://www.blogjava.net/anchor110/aggbug/391435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-11-16 12:28 <a href="http://www.blogjava.net/anchor110/articles/391435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何替换tomcat下的小猫咪图标</title><link>http://www.blogjava.net/anchor110/articles/391431.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Fri, 16 Nov 2012 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/391431.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/391431.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/391431.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/391431.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/391431.html</trackback:ping><description><![CDATA[在tomcat下部署应用程序，运行后，发现在地址栏中有个tomcat的小猫咪图标。<br />有时候，我们自己不想显示这个图标，想换成自己定义的的图标，那么按如下方法操作即可：<br />1、将$TOMCAT_HOME/webapps/ROOT/tomcat.svg改名。<br />2、将自定义的图标文件改名为favicon.ico，并覆盖$TOMCAT_HOME/webapps/ROOT/favicon.ico。<br /><br />清空浏览器缓存，刷新界面即可看到自定义效果的图标。<img src ="http://www.blogjava.net/anchor110/aggbug/391431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-11-16 11:19 <a href="http://www.blogjava.net/anchor110/articles/391431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Caused by: java.lang.NoClassDefFoundError: com/sun/xml/bind/CycleRecoverable</title><link>http://www.blogjava.net/anchor110/articles/391408.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Thu, 15 Nov 2012 20:53:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/391408.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/391408.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/391408.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/391408.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/391408.html</trackback:ping><description><![CDATA[解决步骤：<br />1、将jaxb-impl-2.1.12.jar和jaxb-api-2.1.jar放到jre/lib/endorsed/目录下，如果没有endorsed目录，则新建之，一般情况下是没有的。<br />2、将jaxb-impl-2.1.12.jar和jaxb-api-2.1.jar放到$TOMCAT_HOME/lib/endorsed/目录下，如果没有endorsed目录，则新建之，一般情况下是没有的。<img src ="http://www.blogjava.net/anchor110/aggbug/391408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-11-16 04:53 <a href="http://www.blogjava.net/anchor110/articles/391408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork文件上传中文文件名上传问题解决</title><link>http://www.blogjava.net/anchor110/articles/388236.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Fri, 21 Sep 2012 03:28:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/388236.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/388236.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/388236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/388236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/388236.html</trackback:ping><description><![CDATA[场景：<br />用webwork上传中文文件名的文件时，在action中接收到的文件名已经乱码。<br /><br />解决办法：<br />修改webwork.properties文件，将上传文件的解析器，修改成pell，如下：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#&nbsp;multipart&nbsp;parser<br />#弃用jakarta，解决中文上传文件时文件名乱码问题<br />webwork.multipart.parser</span><span style="color: #000000; ">=</span><span style="color: #000000; ">pell</span></div><img src ="http://www.blogjava.net/anchor110/aggbug/388236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2012-09-21 11:28 <a href="http://www.blogjava.net/anchor110/articles/388236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用java实现网络传输数据的压缩（来源网络）</title><link>http://www.blogjava.net/anchor110/articles/348441.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Sun, 17 Apr 2011 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/348441.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/348441.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/348441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/348441.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/348441.html</trackback:ping><description><![CDATA[import &nbsp; java.io.*; <br />
import &nbsp; java.util.zip.*; <br />
<br />
public &nbsp; class &nbsp; GZIProc &nbsp; { <br />
&nbsp;  &nbsp; public &nbsp; static &nbsp; void &nbsp; main(String[] &nbsp; args) &nbsp; { <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp; byte[] &nbsp; b1 &nbsp; ,b2 &nbsp; = &nbsp; null; <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp; try &nbsp; { <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; BufferedInputStream &nbsp; in &nbsp; = &nbsp; new &nbsp; BufferedInputStream( &nbsp; new &nbsp; FileInputStream(args[0])); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; ByteArrayOutputStream &nbsp; bout &nbsp; = &nbsp; new &nbsp; ByteArrayOutputStream(); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; GZIPOutputStream &nbsp; out &nbsp; = &nbsp; new &nbsp; GZIPOutputStream(bout); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; ObjectOutputStream &nbsp; oout &nbsp; = &nbsp; new &nbsp; ObjectOutputStream(out); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; // &nbsp; 读取源文件 <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; b1 &nbsp; = &nbsp; new &nbsp; byte[in.available()]; &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; in.read(b1,0,b1.length); &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; System.out.println( "压缩前:\n " &nbsp; + &nbsp; new &nbsp; String(b1)); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; // &nbsp; 压缩 <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; //out.write(b1,0, &nbsp; b1.length); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; oout.writeObject(new &nbsp; String(b1)); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; oout.flush(); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; oout.close(); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; // &nbsp; 读取压缩字节流 <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; b2 &nbsp; = &nbsp; bout.toByteArray(); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; System.out.println( "压缩后:\n " &nbsp; + &nbsp; new &nbsp; String(b2)); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; // &nbsp; 关闭数据流 <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; in.close(); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; // &nbsp; 解压 <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; ObjectInputStream &nbsp; in2 &nbsp; = &nbsp; new &nbsp;
ObjectInputStream(new &nbsp; GZIPInputStream(new &nbsp;
ByteArrayInputStream(b2))); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; byte[] &nbsp; b3 &nbsp; = &nbsp; ((String)in2.readObject()).getBytes(); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; in2.close(); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; // &nbsp; 输出 <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; System.out.println( &nbsp; new &nbsp; String(b3)); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp; } &nbsp; catch(Exception &nbsp; e) &nbsp; { <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; e.printStackTrace(); <br />
&nbsp;  &nbsp;  &nbsp;  &nbsp; } <br />
&nbsp;  &nbsp; } <br />
} <br />
<img src ="http://www.blogjava.net/anchor110/aggbug/348441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2011-04-17 15:59 <a href="http://www.blogjava.net/anchor110/articles/348441.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web工程中自定义异常处理页面</title><link>http://www.blogjava.net/anchor110/articles/341008.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Fri, 17 Dec 2010 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/341008.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/341008.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/341008.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/341008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/341008.html</trackback:ping><description><![CDATA[在JAVA WEB工程中可以自定义异常处理页面。<br />
具体操作步骤如下：<br />
1、在web.xml中，加上如下配置：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&lt;</span><span style="color: #000000">error</span><span style="color: #000000">-</span><span style="color: #000000">page</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">error</span><span style="color: #000000">-</span><span style="color: #000000">code</span><span style="color: #000000">&gt;</span><span style="color: #000000">500</span><span style="color: #000000">&lt;/</span><span style="color: #000000">error</span><span style="color: #000000">-</span><span style="color: #000000">code</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">location</span><span style="color: #000000">&gt;/</span><span style="color: #000000">error</span><span style="color: #000000">/</span><span style="color: #000000">500</span><span style="color: #000000">.jsp</span><span style="color: #000000">&lt;/</span><span style="color: #000000">location</span><span style="color: #000000">&gt;<br />
&lt;/</span><span style="color: #000000">error</span><span style="color: #000000">-</span><span style="color: #000000">page</span><span style="color: #000000">&gt;</span></div>
<br />
2、新建500.jsp，内容如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;encoding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;language</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;pageEncoding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;contentType</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/xml;&nbsp;charset=UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">wml</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;%=</span><span style="color: #000000">request.getAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">javax.servlet.error.message</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">wml</span><span style="color: #000000">&gt;</span></div>
注意，此页面跟JSP的异常页面不是一个意思，可以没有isErrorPage="true"这个头属性。同时也不需要设置：response.setStatus(HttpServletResponse.SC_OK);<br />
同时：request.getAttribute("javax.servlet.error.message")方法，获取抛出的异常信息。注意，在这不能通过exception.getMessage()获取。<br />
异常的其他属性还有：<font size="2"><font color="#808080">javax.servlet.error.status_code</font></font>，<font size="2"><font color="#808080">javax.servlet.error.exception_type。要获取全部的属性，请用request.getAttributeNames()遍历，查看。</font></font><br />
<br />
3、测试，在测试代码中写上：response.sendError(500,"ImgUrl config must not by empty!");<br />
经测试，结果返回如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">vmagid&nbsp;must&nbsp;not&nbsp;empty</span><span style="color: #000000">!</span><span style="color: #000000"><br />
</span></div>
<br />
<img src ="http://www.blogjava.net/anchor110/aggbug/341008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2010-12-17 17:25 <a href="http://www.blogjava.net/anchor110/articles/341008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP中include指令和include行为区别(注：转载于http://java.chinaitlab.com/ServletJsp/529740_2.html)</title><link>http://www.blogjava.net/anchor110/articles/336366.html</link><dc:creator>小一败涂地</dc:creator><author>小一败涂地</author><pubDate>Thu, 28 Oct 2010 04:30:00 GMT</pubDate><guid>http://www.blogjava.net/anchor110/articles/336366.html</guid><wfw:comment>http://www.blogjava.net/anchor110/comments/336366.html</wfw:comment><comments>http://www.blogjava.net/anchor110/articles/336366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/anchor110/comments/commentRss/336366.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/anchor110/services/trackbacks/336366.html</trackback:ping><description><![CDATA[我们都知道在jsp中include有两种形式,分别是<br />
&lt;%@&nbsp;include&nbsp;file=&#8221;&nbsp;&#8221;%&gt;<br />
&lt;jsp:include&nbsp;page=&#8221;&nbsp;&#8221;&nbsp;flush=&#8221;true&#8221;/&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; 前者是指令元素、后者是行为元素。具体它们将在何处用？如何用及它们有什么区别？这应该是很多人看到它都会想到的问题。下面一起来看看吧。<br />
<br />
&nbsp;&nbsp;&nbsp;
通常当应用程序中所有的页面的某些部分（例如标题、页脚和导航栏）都相同的时候，我们就可以考虑用include。具体在哪些时候
用&lt;%@&nbsp;include&nbsp;file=&#8221;&nbsp;&#8221;%&gt;，哪些时候用&lt;
jsp:include&nbsp;page=&#8221;&nbsp;&#8221;&nbsp;flush=&#8221;true&#8221;/&gt;.这种形式。首先要明白的是它们之间的区别。只有了解了它们用法的不同才
理解该在何时去用以及如何选择。<br />
&lt;%@&nbsp;include&nbsp;file=&#8221;&nbsp;&#8221;%&gt;,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。（这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。<br />
<br />
&nbsp;&nbsp;&nbsp; 这里对翻译阶段进行一下说明:我们知道，jsp页面不能原封不动地被传送给浏览器，所有的jsp元素都必须首先由<a href="http://server.chinaitlab.com/" target="_blank">服务器</a>进行处理。这是通过将jsp页面转达化成servlet，然后执行这个servlet来完成的。<a href="http://server.chinaitlab.com/" target="_blank">服务器</a>需要一个jsp容器来处理jsp页面。jsp容器通常以servlet的形式来实现，这个servlet经过配置，可以处理对jsp页面的所有请求。<br />
<br />
&nbsp;&nbsp;&nbsp; Jsp容器负责将jsp页面转化成servlet（称为jsp页面实现类?JSP&nbsp;Page&nbsp;implementation&nbsp;class）,并编译这个servlet。这两步就构成了翻译阶段.<br />
<br />
&nbsp;&nbsp;&nbsp; 由此我们就会知道：jsp页面是把include指令元素所指定的页面的实际内容（也就是代码段）加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个java文件。下面举个例子。<br />
<br />
&nbsp;&nbsp;&nbsp; 服务器用tomcat，引入页面的jsp文件叫test.jsp。被引入的页面叫date.jsp.这个jsp文件里存放的是一个有关时间的jsp代码,当前的上下文根设为test<br />
//======date.jsp的源文件=====//<br />
&lt;%@&nbsp;page&nbsp;language=&#8221;java&#8221;&nbsp;contentType="text/html;charset=gb2312"%&gt;<br />
&lt;%<br />
java.util.Date&nbsp;date=new&nbsp;java.util.Date();<br />
String&nbsp;date_cn&nbsp;="";<br />
String&nbsp;dateStr&nbsp;=&nbsp;"";<br />
switch(date.getDay())<br />
{<br />
case&nbsp;0:date_cn&nbsp;="日";&nbsp;break;<br />
case&nbsp;1:date_cn&nbsp;="一";&nbsp;break;<br />
case&nbsp;2:date_cn&nbsp;="二";&nbsp;break;<br />
case&nbsp;3:date_cn&nbsp;="三";&nbsp;break;<br />
case&nbsp;4:date_cn&nbsp;="四";&nbsp;break;<br />
case&nbsp;5:date_cn&nbsp;="五";&nbsp;break;<br />
case&nbsp;6:date_cn&nbsp;="六";&nbsp;break;<br />
}<br />
dateStr&nbsp;=&nbsp;(1900+date.getYear())&nbsp;+&nbsp;"年"&nbsp;+&nbsp;(date.getMonth()+1)&nbsp;+&nbsp;"月"&nbsp;+&nbsp;date.getDate()&nbsp;+&nbsp;"日(星期"&nbsp;+&nbsp;date_cn&nbsp;+&nbsp;")";<br />
%&gt;<br />
document.write("&lt;%=dateStr%&gt;");<br />
//======以下是test.jsp的源文件=============//<br />
&lt;%@&nbsp;page&nbsp;language=&#8221;java&#8221;&nbsp;contentType=&#8221;text/html;charset=gb2312&#8221;%&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;include的两种用法&lt;/title&gt;<br />
&lt;jsp:include&nbsp;page=&#8221;date.jsp&#8221;&nbsp;flush=&#8221;true&#8221;/&gt;<br />
&lt;%--@&nbsp;include&nbsp;file=&#8221;date.jsp&#8221;&nbsp;%--&gt;<br />
//我们在这里用include的两种不同形式来引入date.jsp这个文件.<br />
&lt;head&gt;<br />
&lt;body&gt;<br />
&lt;table&gt;&lt;tr&gt;&lt;td&gt;<br />
有关jsp中include的两种用法.敬请关注。<br />
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
在test.jsp&nbsp;文件中，我们只输出了一行文本&#8220;&nbsp;有关jsp中include的两种用法.敬请关注。&#8221;,现在让我们先
用&lt;%@&nbsp;include&nbsp;file=&#8221;date.jsp&#8221;&nbsp;%&gt;这种形式引入date.jsp这个文件。你想会出现什么问题了吗？此时出现
了错误提示：<br />
HTTP&nbsp;Status&nbsp;500&nbsp;?<br />
org.apache.jasper.JasperException:&nbsp;/date.jsp(0,0)&nbsp;Page&nbsp;directive:&nbsp;can't&nbsp;have&nbsp;multiple&nbsp;occurrences&nbsp;of&nbsp;contentType<br />
以下还有一堆错误，但我们只要看这里就知道问题的所在了。状态码为http&nbsp;500服务器内部错误。再看下面的提示。在date.jsp页面中不能指定多个contentType.<br />
<br />
&nbsp;&nbsp;&nbsp; 原因就在这里了。是因为在翻译阶段,date.jsp文件的代码被原封不动地加入到了test.jsp页面从而合成一个文件。合成后的文件中就会相同的：<br />
&lt;%@&nbsp;page&nbsp;language=&#8221;java&#8221;&nbsp;contentType=&#8221;text/html;charset=gb2312&#8221;%&gt;<br />
这句代码。解决的办法是把date.jsp文件中的这句删掉。刷新后再请求test.jsp页面<br />
<br />
请求test.jsp在页面显示如下<br />
2003年12月10日&nbsp;13:12:40<br />
有关jsp中include的两种用法.敬请关注。<br />
<br />
这时我们还不能发现什么。还是去查看tomcat下的临时文件吧。到那里去看看date.jsp文件的内容是否已被加入到了test.jsp文件中。<br />
&lt;注.此处的tomcat装在E盘根目录下&gt;<br />
目录<br />
E:"tomcat"work"Standalone"localhost"test.<br />
在这个目录下会看到<br />
test_jsp.java和test_jsp.class两个文件。<br />
<br />
&nbsp;&nbsp; 这里的java文件就是jsp容器将jsp转化成了servlet而得到的test_jsp.java这个文件。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;
相对应的test_jsp.class这个文件就是编译test_jsp.java这个servlet文件产生的类文件了。打开所产生的servlet文
件（test_jsp.java）。此时我们会发现，在test.jsp&nbsp;文件被转化成servlet文件时，在输出的&lt;haed&gt;之间加入
了一些不是test.jsp页面里面的代码,新加入的内容就是&nbsp;date.jsp里面的代码:&nbsp;新加入了哪些内容或是否真的加入了新的内容请自己<a href="http://softtest.chinaitlab.com/" target="_blank">测试</a>去看一下就会一目了然了.在这里不再详述.<br />
<br />
以上就是我们用&lt;%@&nbsp;include&nbsp;file=&#8221;date.jsp&#8221;%&gt;这种形式得到的结果.<br />
下面我们换用&lt;jsp:include&nbsp;page=&#8221;dae.jsp&#8221;&nbsp;flush=&#8221;true&#8221;/&gt;也就是将<br />
&lt;%@&nbsp;include&nbsp;file=&#8221;date.jsp&#8221;%&gt;换成&lt;jsp:include&nbsp;page=&#8221;dae.jsp&#8221;&nbsp;flush=&#8221;true&#8221;/&gt;,然后请求test.jsp.<br />
2003?&nbsp;&#234;&nbsp;12??10??&nbsp;13:30:13<br />
有关jsp中include的两种用法.敬请关注。<br />
<br />
&nbsp;&nbsp;&nbsp;
此时会在页面上看见.我们所引入date.jsp输出的日期中中文出现了乱码.什么原因?是因为include行为元素是在请求处理阶段执行的(此处要对
请求处理阶段进行说明一下.Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这
个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件)。<br />
<br />
&nbsp;&nbsp;
所以在我们作include行为元素引入页面时,实际只是引用了date.jsp这个文件被转化并被编译后产生的servlet类文件.既如
此,&nbsp;date.jsp就是作为一个单独的文件在执行后才被test.jsp文件运行时调用.由于date.jsp文件中没有指定字符编码.所以出现了乱
码.解决办法是在date.jsp文件中重新把刚才去掉的<br />
&lt;%@&nbsp;page&nbsp;language=&#8221;java&#8221;&nbsp;contentType=&#8221;text/html;charset=gb2312&#8221;%&gt;<br />
这
行语句加入后刷新重新运行.此时页面显示正确,并跟用include指令正常运行时一样.再查看tomcat下的临时文件会发现.此时多出了一
个&nbsp;date_jsp.java文件和一个date_jsp.class文件.这两个文件得来的方式跟test_jsp.java
和&nbsp;test_jsp.class文件得来的方式一样.再查看一下此时test_jsp.java文件的代码会发现.此时只新增加了一句代码:<br />
JspRuntimeLibrary.include(request,&nbsp;response,&nbsp;"date.jsp",&nbsp;out,&nbsp;true);<br />
<br />
它并没有把date.jsp文件的代码加入到test.jsp.<br />
<br />
&nbsp;&nbsp;
只是在运行时引入了date.jsp页面执行后所产生的应答.这意味着我们可以指定任何能够产生应答的Web资源,(例如一个servlet或一个jsp
页面),只要这些资源所产生的类型和jsp页面产生的内容类型相同.JSP容器将通过一个内部的函数调用来执行指定的资源.因此,这些被引入的资源可以帮
助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象.以及所有原来的请求参数.<br />
<br />
&nbsp;&nbsp;&nbsp; 由于在主页面被请求时,这些页面还没有被引入到主页面中,所以你可以对page属性使用一个请求时属性值,以便根据运行时的情况来决定要引入哪一个页面.还可以添加一些将被引入的页面读取的请求参数.<br />
&lt;jsp:include&nbsp;page=&#8221;&lt;%=pageSelectedAtRuntime%&gt;&#8221;&nbsp;flush=&#8221;true&#8221;&nbsp;&gt;<br />
&lt;jsp:param&nbsp;name=&#8221;fitstParamer&#8221;&nbsp;value=&#8221;firstValue&#8221;&gt;<br />
&lt;jsp:param&nbsp;name=&#8221;lastParamer&#8221;&nbsp;value=&#8221;lastValue&#8221;&gt;<br />
&lt;/jsp:include&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; 如果修改了被引入的jsp页面,那么可以立刻使用该页面的最新版本,这是因为对待被引入的页面的方式与对待由浏览器直接调用的jsp页面的方式完全相同.即容器检测页面的变化,并自动进入翻译阶段,以得到页面的最新版本.<br />
<br />
(注意,include行为元素同jsp其它元素一样,没有行为体时要以&#8221;/&#8221;结束.就像下面这样.<br />
&lt;jsp:include&nbsp;page=&#8221;&lt;%=pageSelectedAtRuntime%&gt;&#8221;&nbsp;flush=&#8221;true&#8221;&nbsp;/&gt;)<br />
<br />
以下是对include&nbsp;两种用法的区别<br />
主要有两个方面的不同;<br />
一:执行时间上:<br />
&lt;%@&nbsp;include&nbsp;file=&#8221;relativeURI&#8221;%&gt;&nbsp;是在翻译阶段执行<br />
&lt;jsp:include&nbsp;page=&#8221;relativeURI&#8221;&nbsp;flush=&#8221;true&#8221;&nbsp;/&gt;&nbsp;在请求处理阶段执行.<br />
二:引入内容的不同:<br />
&lt;%@&nbsp;include&nbsp;file=&#8221;relativeURI&#8221;%&gt;<br />
引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.<br />
&lt;jsp:include&nbsp;page=&#8221;relativeURI&#8221;&nbsp;flush=&#8221;true&#8221;&nbsp;/&gt;引入执行页面或servlet所生成的应答文本.<br />
另
外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀
进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.更多有关URL是如何解释的请参考相关资料或书
籍. <br />
<img src ="http://www.blogjava.net/anchor110/aggbug/336366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/anchor110/" target="_blank">小一败涂地</a> 2010-10-28 12:30 <a href="http://www.blogjava.net/anchor110/articles/336366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>