﻿<?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-无涯-文章分类-tomcat</title><link>http://www.blogjava.net/koradji/category/47226.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 14 Dec 2010 13:53:52 GMT</lastBuildDate><pubDate>Tue, 14 Dec 2010 13:53:52 GMT</pubDate><ttl>60</ttl><item><title>Tomcat6安全管理中的几个标签</title><link>http://www.blogjava.net/koradji/articles/340643.html</link><dc:creator>koradji</dc:creator><author>koradji</author><pubDate>Tue, 14 Dec 2010 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/koradji/articles/340643.html</guid><wfw:comment>http://www.blogjava.net/koradji/comments/340643.html</wfw:comment><comments>http://www.blogjava.net/koradji/articles/340643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/koradji/comments/commentRss/340643.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/koradji/services/trackbacks/340643.html</trackback:ping><description><![CDATA[在web应用程序的配置文件web.xml里定义了以下几个标签，用于对受限资源访问的管理。<br />
<span style="background-color: #00ffff;">&lt;security-constraint&gt;</span><br />
- 用来指定受保护的web资源以及对其可以访问的角色。<br />
<table width="580" border="1" cellpadding="2" cellspacing="2">
    <tbody>
        <tr>
            <td width="120" align="center">&nbsp;<strong>子元素</strong></td>
            <td width="460" align="center">&nbsp;<strong>描述</strong></td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;web-resource-collection&gt;</td>
            <td align="left">&nbsp;声明受保护的web资源</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;web-resource-name&gt;</td>
            <td align="left">&nbsp;指定受保护资源的名字，是&lt;web-resource-collection&gt;的子元素</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;url-pattern&gt;</td>
            <td align="left">&nbsp;受保护的URL路径，是&lt;web-resource-collection&gt;的子元素</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;http-method&gt;</td>
            <td align="left">&nbsp;指定受保护的HTTP访问方法（包括DELETE,GET,POST和PUT），如果不定义，表示所有的方法都受保护，是&lt;web-resource-collection&gt;的子元素</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;auth-constraint&gt;</td>
            <td align="left">&nbsp;指定受保护资源安全限制</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;role-name&gt;</td>
            <td align="left">&nbsp;指定可以访问受保护资源的角色名，为&lt;auth-constraint&gt;的子元素</td>
        </tr>
    </tbody>
</table>
<br />
<span style="background-color: #00ffff;">&lt;login-config&gt;</span><br />
- 用来指定客户在访问受保护的web资源时，系统对客户进行验证的类型。<br />
<table width="610" border="1" cellpadding="2" cellspacing="2">
    <tbody>
        <tr>
            <td width="180" align="center">&nbsp;<strong>子元素</strong></td>
            <td width="430" align="center">&nbsp;<strong>描述</strong></td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;auth-method&gt;</td>
            <td align="left">&nbsp;系统对客户验证的类型，有BASIC,DIGEST,FORM3种</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;realm-name&gt;</td>
            <td align="left">&nbsp;设定使用的Realm名称</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;form-login-config&gt;</td>
            <td align="left">&nbsp;使用FORM验证时的配置信息</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;form-login-page&gt;</td>
            <td align="left">&nbsp;使用FORM验证时的登录页面，是&lt;form-login-config&gt;的子元素</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;form-error-page&gt;</td>
            <td align="left">&nbsp;使用FORM验证时的错误处理页面，是&lt;form-login-config&gt;的子元素</td>
        </tr>
    </tbody>
</table>
<br />
<span style="background-color: #00ffff;">&lt;security-role&gt;</span><br />
- 用来声明web应用的角色名称。<br />
<table width="610" border="1" cellpadding="2" cellspacing="2">
    <tbody>
        <tr>
            <td width="180" align="center">&nbsp;<strong>子元素</strong></td>
            <td width="430" align="center">&nbsp;<strong>描述</strong></td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;description&gt;</td>
            <td align="left">&nbsp;对当前的&lt;security-role&gt;元素进行描述</td>
        </tr>
        <tr>
            <td align="left">&nbsp;&lt;role-name&gt;</td>
            <td align="left">&nbsp;引用的角色名称</td>
        </tr>
    </tbody>
</table>
<br />
<br />
<img src ="http://www.blogjava.net/koradji/aggbug/340643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/koradji/" target="_blank">koradji</a> 2010-12-14 14:48 <a href="http://www.blogjava.net/koradji/articles/340643.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat6实现SSI</title><link>http://www.blogjava.net/koradji/articles/340552.html</link><dc:creator>koradji</dc:creator><author>koradji</author><pubDate>Mon, 13 Dec 2010 13:52:00 GMT</pubDate><guid>http://www.blogjava.net/koradji/articles/340552.html</guid><wfw:comment>http://www.blogjava.net/koradji/comments/340552.html</wfw:comment><comments>http://www.blogjava.net/koradji/articles/340552.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/koradji/comments/commentRss/340552.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/koradji/services/trackbacks/340552.html</trackback:ping><description><![CDATA[SSI-Server Side Include，中文叫服务器端嵌入。<br />
在默认状态下，tomcat不支持SSI。要让它支持，需做如下配置：<br />
打开tomcat安装目录下的conf/web.xml，<br />
1.找到SSI servlet部分，将注释去掉；<br />
2.找到SSI servlet-mapping部分，将注释去掉；<br />
一种替换方法是，可以将SSI的filter部分的注释去掉，但是不能两者都去掉注释；<br />
<br />
启动tomcat，这时可能会报如下错：<br />
<pre><span style="color: #000000;">java.lang.SecurityException: Servlet of </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> org.apache.catalina.ssi.SSIServlet is privileged and <br />
cannot be loaded by </span><span style="color: #0000ff;">this</span><span style="color: #000000;"> web application</span></pre>
解决方法是：<br />
打开tomcat安装目录下的conf/context.xml，将<span style="color: red;">&lt;context&gt;</span>改为<span style="color: red;">&lt;Context privileged="true"&gt;</span>。<br />
<br />
然后，再启动tomcat，就正常了。<br />
至于中文乱码的问题，我这里测试下来，好像在web.xml里的servlet下不用增加inputEncoding和outputEncoding参数也没问题。<br />
<br />
<img src ="http://www.blogjava.net/koradji/aggbug/340552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/koradji/" target="_blank">koradji</a> 2010-12-13 21:52 <a href="http://www.blogjava.net/koradji/articles/340552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转帖】用Tomcat实现SSO</title><link>http://www.blogjava.net/koradji/articles/339598.html</link><dc:creator>koradji</dc:creator><author>koradji</author><pubDate>Thu, 02 Dec 2010 05:06:00 GMT</pubDate><guid>http://www.blogjava.net/koradji/articles/339598.html</guid><wfw:comment>http://www.blogjava.net/koradji/comments/339598.html</wfw:comment><comments>http://www.blogjava.net/koradji/articles/339598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/koradji/comments/commentRss/339598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/koradji/services/trackbacks/339598.html</trackback:ping><description><![CDATA[文章来源：<a href="http://tech.ddvip.com/2009-05/1242796946120038.html">http://tech.ddvip.com/2009-05/1242796946120038.html</a><br />
<br />
目标:用户Login一次之后,可以访问同一Server上的不同Webapp, 具体实现上采用Tomcat的Single Sign-On实现. 主要分为下面几个步骤:<br />
<br />
修改Tomcat conf/server.xml，打开SSO支持<br />
<br />
&nbsp; &lt;Host&gt; <span style="color: #0010ff;">节点下增加一个Valve节点</span><br />
&nbsp;&nbsp;&nbsp; &lt;Valve className="org.apache.catalina.authenticator.SingleSignOn"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" requireReauthentication="false"/&gt;<br />
&nbsp; &lt;/Host&gt;<br />
<br />
container认证realm： user、role、server.xml的&lt;Realm...&gt;设置<br />
<br />
tomcat的认证机制有2个要素： user 和 role.<br />
user 是区别一个个用户的唯一识别了。<br />
role 就是一些抽象的权限级别，比如&#8220;admin&#8221;、&#8220;manager&#8221;、&#8220;member&#8221;、&#8220;guest&#8221;等等，都是可以自己定义的.一个user可以拥有多种role.<br />
<br />
&#8220;可是tomcat怎么去拿到我的user/role信息呢？我的这些数据都在数据库里阿？&#8221; <br />
可以在tomcat的server.xml里用 &lt;Realm&gt; tag来读取这些信息，并且tomcat提供了3、4种现成的Realm实现，其中有从文件里读的，有从JDBC读的，有从DataSource读的，也有从LDAP读的。具体Realm的写法，和提供的几种Realm的配置方法，可以参考tomcat自己的文档，在此不作细述。 (把tomcat自带的webapp: tomcat-docs.war 展开，看里面的 config/realm.html) 如果连这些现成的配置都不能满足你的要求的话，那也可以考虑自己写一个Realm的实现类来满足具体要求。<br />
下面举一个JDBC的Realm的配置例子看一下：<br />
<br />
&nbsp; &lt;Realm　 className="org.apache.catalina.realm.JDBCRealm"　 debug="99"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverName="your.jdbc.driver.here"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionURL="your.jdbc.url.here"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionName="test"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionPassword="test"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userTable="users"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userNameCol="user_name"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userCredCol="user_pass"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userRoleTable="user_roles"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; roleNameCol="role_name" /&gt;<br />
<br />
webapp使用SSO<br />
<br />
告诉tomcat这个webapp要通过container的认证。<br />
具体做法： 在web.xml里面加上如下的配置：<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;security-constraint&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;web-resource-collection&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;web-resource-name&gt;http://www.bt285.cn　 BT下载 &lt;/web-resource-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/web-resource-collection&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;auth-constraint&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- role name 指定哪个role可以访问,可以为多个role，如两个网站：http://www.5a520.cn http://www.feng123.com　 --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;intrauser&lt;/role-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/auth-constraint&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/security-constraint&gt;<br />
<br />
选择一种认证方法<br />
在web.xml里面加上如下的配置：<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;login-config&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;auth-method&gt;BASIC&lt;/auth-method&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;realm-name&gt;Intra Web Application&lt;/realm-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/login-config&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;security-role&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;The role that is required to access intrasites&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;intrauser&lt;/role-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/security-role&gt;<br />
<br />
这里有2个要点：<br />
<span style="color: #ff0000;">auth-method</span><br />
<br />
举例为了简单用了最基本的一种BASIC。若使用BASIC方式，当你去访问受保护认证的资源时，浏览器会弹出一个小窗口让你输入用户名和密码。（就像我们访问ioffice时，第一次弹出来的那个认证窗口）其他还有几种认证方式如：FORM、DIGEST、CLIENT-CERT。其中FORM是可以自己写login画面的，当然html的form内容有些规定（要符合j2ee和container的要求嘛）。 DIGEST是一种加密的传输，而CLIENT-CERT没有查过，有兴趣可以去查一下。<br />
<br />
<span style="color: #ff0000;">realm-name</span><br />
<br />
这个realm-name是这个webapp的认证realm名，注意几个处于同一SSO下的webapp，他们的realm-name要设成一样的值。 如果不设成一样，那么换一个webapp就要重新认证一次，达不到SSO的效果。<br />
<br />
如何取得当前的User信息<br />
<br />
原本都习惯在login以后，把一些login用户信息放到session里面的. 现在认证都交给container去做了，我们的webapp怎么拿到login用户信息啊？ 确实，现在我们的webapp能做的，只有从request里面拿到login用户的userid了。<br />
<br />
String userid = request.gerRemoteUser();<br />
<br />
以上是在一个Tomcat Container上的SSO实现.<br />
<br />
如果是不同的Container上的webapp要做SSO，这种时候一种可行的方案是，最前面架一个webserver（比如apache），在webserver这层承担SSO的认证任务，后面内部就可用挂多个container了. 具体都用到的时候再调查吧。
<img src ="http://www.blogjava.net/koradji/aggbug/339598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/koradji/" target="_blank">koradji</a> 2010-12-02 13:06 <a href="http://www.blogjava.net/koradji/articles/339598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat6下配置MySQL DBCP</title><link>http://www.blogjava.net/koradji/articles/339518.html</link><dc:creator>koradji</dc:creator><author>koradji</author><pubDate>Thu, 02 Dec 2010 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/koradji/articles/339518.html</guid><wfw:comment>http://www.blogjava.net/koradji/comments/339518.html</wfw:comment><comments>http://www.blogjava.net/koradji/articles/339518.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/koradji/comments/commentRss/339518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/koradji/services/trackbacks/339518.html</trackback:ping><description><![CDATA[以下根据<a href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html#MySQL_DBCP_Example">Tomcat User Guide - 9）JDBC DataSources中MySQL DBCP Example</a>的介绍在本机试验并通过。<br />
目标环境：<br />
<fieldset style="width: 220px;"><legend>Windows XP Professional</legend>Tomcat 6.0.29<br />
MySQL 5.1.50<br />
MySQL Connector/J 5.1.13<br />
</fieldset><br />
步骤：<br />
1.下载JDBC驱动：<a href="http://dev.mysql.com/downloads/connector/j/">http://dev.mysql.com/downloads/connector/j/</a>；<br />
2.解压缩后，将mysql-connector-java-5.1.13-bin.jar拷贝到Tomcat_Home/lib下；<br />
3.登录MySql，执行下列语句：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mysql&gt; GRANT ALL PRIVILEGES ON *.* TO javauser@localhost <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;   IDENTIFIED BY 'javadude' WITH GRANT OPTION;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mysql&gt; create database javatest;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mysql&gt; use javatest;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mysql&gt; create table testdata (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;   id int not null auto_increment primary key,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;   foo varchar(25), <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;   bar int);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
注意：执行完测试后要删除上述user-javauser，为了安全吧。<br />
4.往testdata表里插入一些测试数据；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; insert into testdata values(null, 'hello', 12345);<br />
5.Context配置：<br />
&nbsp; 在server.xml里的Host元素下，添加如下Context子元素<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Context path="/DBTest" docBase="<span style="color: red;">DBTest</span>" debug="5" reloadable="true" crossContext="true"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;maxActive="100" maxIdle="30" maxWait="10000"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;username="<span style="color: red;">javauser</span>" password="<span style="color: red;">javadude</span>" driverClassName="com.mysql.jdbc.Driver"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;url="<span style="color: red;">jdbc:mysql://localhost:3306/javatest</span>"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Context&gt;<br />
6.现在在webapps下创建子目录DBTest，再在DBTest下创建子目录WEB-INF，在这下面创建文件web.xml，如下<br />
&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br />
<br />
&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee"<br />
&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
&nbsp;&nbsp;&nbsp; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"<br />
&nbsp;&nbsp;&nbsp; version="2.4"&gt;<br />
&nbsp; &lt;description&gt;MySQL Test App&lt;/description&gt;<br />
&nbsp; &lt;resource-ref&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;DB Connection&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-ref-name&gt;jdbc/TestDB&lt;/res-ref-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-auth&gt;Container&lt;/res-auth&gt;<br />
&nbsp; &lt;/resource-ref&gt;<br />
&lt;/web-app&gt;<br />
7.创建简单的test.jsp做测试用，放在DBTest目录下；<br />
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;<br />
<br />
&lt;sql:query var="rs" dataSource="jdbc/TestDB"&gt;<br />
select id, foo, bar from testdata<br />
&lt;/sql:query&gt;<br />
<br />
&lt;html&gt;<br />
&nbsp; &lt;head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;DB Test&lt;/title&gt;<br />
&nbsp; &lt;/head&gt;<br />
&nbsp; &lt;body&gt;<br />
<br />
&nbsp; &lt;h2&gt;Results&lt;/h2&gt;<br />
&nbsp; <br />
&lt;c:forEach var="row" items="${rs.rows}"&gt;<br />
&nbsp;&nbsp;&nbsp; Foo ${row.foo}&lt;br/&gt;<br />
&nbsp;&nbsp;&nbsp; Bar ${row.bar}&lt;br/&gt;<br />
&lt;/c:forEach&gt;<br />
<br />
&nbsp; &lt;/body&gt;<br />
&lt;/html&gt;<br />
8.因为jsp里用到了JSTL的sql和core这两个taglibs，所以还要去下载对应的两个jar文件，<br />
下载地址：<a href="http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi">http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi</a><br />
9.下载完毕解压缩后，将jstl.jar和standard.jar拷贝到Tomcat_Home/lib下；<br />
10.最后，应用程序部署到Tomcat上后，启动Tomcat，在浏览器里输入：<br />
<code>http://localhost:8080/DBTest/test.jsp<br />
执行，结果如下：<br />
</code>
<h2>Results</h2>
Foo hello<br />
Bar 12345<br />
<br />
这样便完成了在Tomcat下连接MySQL DBCP的过程。<br />
<img src ="http://www.blogjava.net/koradji/aggbug/339518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/koradji/" target="_blank">koradji</a> 2010-12-02 12:16 <a href="http://www.blogjava.net/koradji/articles/339518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat配置基础验证</title><link>http://www.blogjava.net/koradji/articles/339500.html</link><dc:creator>koradji</dc:creator><author>koradji</author><pubDate>Wed, 01 Dec 2010 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/koradji/articles/339500.html</guid><wfw:comment>http://www.blogjava.net/koradji/comments/339500.html</wfw:comment><comments>http://www.blogjava.net/koradji/articles/339500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/koradji/comments/commentRss/339500.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/koradji/services/trackbacks/339500.html</trackback:ping><description><![CDATA[Tomcat中，<strong>容器管理验证方法</strong>控制着当用户访问受保护的web应用时如何进行用户的身份鉴别。<br />
可以使用<span style="color: red;">Basic Authentication验证</span>来访问受保护的web应用，具体实施方法为，<br />
在web应用的web.xml文件中，添加如下元素项：<br />
&lt;security-constraint&gt;<br />
&lt;login-config&gt;<br />
然后在conf/tomcat-users.xml里，添加适当的&lt;role&gt;和&lt;user&gt;，最后重新启动Tomcat即可。<br />
<br />
例子：<br />
&nbsp; &lt;!-- Define a Security Constraint on this Application --&gt;<br />
&nbsp; &lt;security-constraint&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;web-resource-collection&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;web-resource-name&gt;HTMLManager and Manager command&lt;/web-resource-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/jmxproxy/*&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/html/*&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/list&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/expire&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/sessions&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/start&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/stop&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/install&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/remove&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/deploy&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/undeploy&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/reload&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/save&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/serverinfo&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/status/*&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/roles&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/resources&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/findleaks&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/web-resource-collection&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;auth-constraint&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- NOTE:&nbsp; This role is not present in the default users file --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;manager&lt;/role-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/auth-constraint&gt;<br />
&nbsp; &lt;/security-constraint&gt;<br />
<br />
&nbsp; &lt;!-- Define the Login Configuration for this Application --&gt;<br />
&nbsp; &lt;login-config&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;auth-method&gt;BASIC&lt;/auth-method&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;realm-name&gt;Tomcat Manager Application&lt;/realm-name&gt;<br />
&nbsp; &lt;/login-config&gt;<br />
<br />
<br />
<img src ="http://www.blogjava.net/koradji/aggbug/339500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/koradji/" target="_blank">koradji</a> 2010-12-01 14:35 <a href="http://www.blogjava.net/koradji/articles/339500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>