tomcat下配置jsp、servlet.JavaBean.数据库连接池.虚拟目录

来源:互联网 发布:中国银行业数据库 编辑:程序博客网 时间:2024/05/18 00:00
经常看到jsp的初学者问tomcat下如何配置jsp、servlet和bean,数据库连接池,虚拟目录等问题,于是总结了一下如何tomcat下配置jsp、servlet和bean,连接池,虚拟目录希望对那些初学者有所帮助。
  
  一、开发环境配置
  
  第一步:下载j2sdk和tomcat:到sun官方站(http://java.sun.com/j2se/1.5.0/download.jsp)下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.5.0 Documentation,然后到tomcat官方站点(http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi)下载tomcat(下载最新5.5.9版本的tomcat);
  
  第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,然后按默认设置进行安装即可。
  
  1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的j2sdk安装在c:/j2sdk1.5.0):
  
JAVA_HOME=c:/j2sdk1.5.0
classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%/bin
  接着可以写一个简单的java程序来测试J2SDK是否已安装成功:
  
public class Test{
 public static void main(String args[]){
  System.out.println("This is a test program.");
 }
}  
  将上面的这段程序保存为文件名为Test.java的文件。
  
  然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
  
javac Test.java
java Test 
  此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
  
  2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:/tomcat):
  
  CATALINA_HOME=c:/tomcat
  CATALINA_BASE=c:/tomcat
  
  然后修改环境变量中的classpath,把tomat安装目录下的common/lib下的(可以根据实际追加)servlet.jar追加到classpath中去,修改后的classpath如下:
  
classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;%CATALINA_HOME%/common/lib/servlet.jar;  
  接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
  
  第三步:建立自己的jsp app目录
  
  1.到Tomcat的安装目录的webapps目录,可以看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;
  2.在webapps目录下新建一个目录,起名叫myapp;
  3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
  4.WEB-INF下新建一个文件web.xml,内容如下:
  
<?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
 <web-app>
  <display-name>My Web Application</display-name>
  <description>
   A application for test.
  </description>
 </web-app>
  5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:

<html>
<body>
<center>
  Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
  6.重启Tomcat
  
  7.打开浏览器,输入http://localhost:8080/myapp/index.jsp 看到当前时间的话说明就成功了。
  
  第四步:建立自己的Servlet:
  
  1.用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个servlet程序,文件名为Test.java,文件内容如下:
  
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 public class Test extends HttpServlet {
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
   PrintWriter out=response.getWriter();
   out.println("<html><body><h1>This is a servlet test.</h1></body></html>");
   out.flush();
  }
 }
}
  2 .编译
  将Test.java放在c:/test下,使用如下命令编译:
  
  C:/Test>javac Test.java
  
  然后在c:/Test下会产生一个编译后的servlet文件:Test.class
  
  3 .将结构test/Test.class剪切到%CATALINA_HOME%/webapps/myapp/WEB-INF/classes下,也就是剪切那个test目录到classes目录下,如果classes目录不存在,就新建一个。 现在webapps/myapp/WEB-INF/classes下有test/Test.class的文件目录结构
  
  4 .修改webapps/myapp/WEB-INF/web.xml,添加servlet和servlet-mapping
  
  编辑后的web.xml如下所示,红色为添加的内容:
  
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My Web Application</display-name>
<description>
 A application for test.
</description>
<servlet>
 <servlet-name>Test</servlet-name>
 <display-name>Test</display-name>
 <description>A test Servlet</description>
 <servlet-class>test.Test</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>Test</servlet-name>
 <url-pattern>/Test</url-pattern>
</servlet-mapping>
</web-app>
  这段话中的servlet这一段声明了你要调用的Servlet,而servlet-mapping则是将声明的servlet"映射"到地址/Test上
  
  5 .好了,重启动Tomcat,启动浏览器,输入http://localhost:8080/myapp/Test 如果看到输出This is a servlet test.就说明编写的servlet成功了。
  
  注意:修改了web.xml以及新加了class,都要重启Tomcat
  
  第四步:建立自己的Bean:
  
  1.用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个java程序,文件名为TestBean.java,文件内容如下:
  
package test;
 public class TestBean{
  private String name = null;
  public TestBean(String strName_p){
   this.name=strName_p;
  }
  public void setName(String strName_p){
   this.name=strName_p;
  }
  public String getName(){
   return this.name;
 }
} 
  2 .编译
  
  将TestBean.java放在c:/test下,使用如下命令编译:
  
  C:/Test>javac TestBean.java
  
  然后在c:/Test下会产生一个编译后的bean文件:TestBean.class
  
  3 .将TestBean.class文件剪切到 %CATALINA_HOME%/webapps/myapp/WEB-INF/classes/test下,
  
  4 .新建一个TestBean.jsp文件,文件内容为:
  
<%@ page import="test.TestBean" %>
<html>
<body>
<center>
 <%
  TestBean testBean=new TestBean("This is a test java bean.");
 %>
 Java bean name is: <%=testBean.getName()%>
</center>
</body>
</html>
  5 .好了,重启Tomcat,启动浏览器,输入http://localhost:8080/myapp/TestBean.jsp 如果看到输出Java bean name is: This is a test java bean.就说明编写的Bean成功了。
  
  这样就完成了整个Tomcat下的jsp、servlet和javabean的配置。接下来需要做的事情就是多看书、多读别人的好代码,自己多动手写代码以增强自己在这方面开发的能力了。

 

 

配置TOMCAT5.5.X连接池(sqlserver版)

 

 

 
1.       进入tomcat目录下的conf文件夹目录里,找到Server.xml
在tomcat的Server.xml文件中在</Context>标签与</Host>标签里,定议连接语句,格式如下

<!—path定议你的应用程序的目录所 ,/DBTest表示在Tomcat Webapps目录下à

<!—docBase=”DBTest” 表示你执行止程序时路径名称,例如以下的执行路径就是http://localhost:8080/DBTest-->

<Context path="/DBTest" docBase="DBTest"
        debug="5" reloadable="true" crossContext="true">

    <!-- maxActive: 连接池的最大数量,要确保有足够的连接数-->

    <!-- maxIdle: 最大空闲连接数,设置为-1即表示不限制-->

    <!-- maxWait:最长等待连接时间(最大等待连接池反回可用的时间), 以纳秒为单位,即设为10000相等于10秒,如果设置成-1表示不确定-->

    <!-- username and password: 连接数据库使用的帐号与密码 -->

    <!-- driverClassName:连接数据库的驱动程序,SQLServer就是

com.microsoft.jdbc.sqlserver.SQLServerDriver.-->

    <!-- url: 连接数据库路径,

jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=KB_Rate-->

 

 

 
 <Resource name=" Default_JDBC " auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude"
driverClassName=" com.microsoft.jdbc.sqlserver.SQLServerDriver "
            url=" jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=KB_Rate""/>

 

 

 
</Context>

 

 

 
配置完成后,在DBTest目录下添加一个Test文件,如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
 Connection conn = null;
 Context initCtx = new InitialContext();
 if (initCtx == null)
     throw new Exception("不能获取Context!");
      Context ctx = (Context) initCtx.lookup("java:comp/env");
      Object obj = (Object) ctx.lookup("/Default_JDBC ");//获取连接池对象
      javax.sql.DataSource ds = (javax.sql.DataSource) obj; //类型转换
      conn = ds.getConnection();
 Statement stmt = conn.createStatement();
 PreparedStatement ps=conn.prepareStatement("select * from FinalOrderdata");
 ResultSet rs=ps.executeQuery();
 while(rs.next()){
      out.println(rs.getString(1)+"<BR>"); 
     i++;
 }
rs.close();
stmt.close();
conn.close();
out.println("连接池测试成功"+i);

 

 

 
到于TOMCAT5.0版本的设置也是差不多,不过在Server.xml中添加连接池设置语句上有所有不,可参考
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
其它操作也是差不多,
<Context path="/DBTest" docBase="DBTest"
        debug="5" reloadable="true" crossContext="true">
<Context path="/DBTest" docBase="DBTest"
        debug="5" reloadable="true" crossContext="true">
 <Logger className="org.apache.catalina.logger.FileLogger"
             prefix="localhost_DBTest_log." suffix=".txt"
             timestamp="true"/>
 <Resource name="jdbc/TestDB"
               auth="Container"
               type="javax.sql.DataSource"/>
 <ResourceParams name="jdbc/TestDB">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <!-- Maximum number of dB connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to 0 for no limit.
         -->
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>
    <!-- Maximum number of idle dB connections to retain in pool.
         Set to -1 for no limit. See also the DBCP documentation on this
         and the minEvictableIdleTimeMillis configuration parameter.
         -->
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>
    <!-- Maximum time to wait for a dB connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded. Set to -1 to wait indefinitely.
         -->
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
   </parameter>
    <!-- MySQL dB username and password for dB connections -->
    <parameter>
     <name>username</name>
     <value>javauser</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>javadude</value>
    </parameter>
    <!-- Class name for the old mm.mysql JDBC driver - uncomment this entry and comment next
         if you want to use this driver - we recommend using Connector/J though
    <parameter>
       <name>driverClassName</name>
       <value>org.gjt.mm.mysql.Driver</value>
    </parameter>
     -->
    <!-- Class name for the official MySQL Connector/J driver -->
    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <!-- The JDBC connection url for connecting to your MySQL dB.
         The autoReconnect=true argument to the url makes sure that the
         mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
         connection. mysqld by default closes idle connections after 8 hours.
         -->
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value>
    </parameter>
 </ResourceParams>
</Context>
有不足的地方,请各为指正!

 

如何配置Tomcat的虚拟目录

ROOT是tomcat的默认虚拟目录,如果要改成自己的虚拟目录怎么办呢?请继续往下看吧。
要改成自己的虚拟目录,就要请出server.xml来了,该文件是一个配置文件,在Tomcat/conf目录下,使用任何文本编辑软件都能打开它,我们先找到下面一句:
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
这里的port="8080"就是端口,我们完全可以用别的端口来代替,但不能是被系统占用的端口(0--1023),这里简单提一下。
下面我们再往下找,会发现以下的语句:
</Context>
</Host>
我们就应该找到这两个语句,如果不懂E文,您就认定这两个语句好了。然后我们将该语句更改如下:
</Context>
<Context path="/myjsp" debug="0" docBase="e:/myjsp" reloadable="true">
</Context>
</Host>
这里的path="/myjsp"就是我们就配置的虚拟目录了,以后在地址栏中输入http://localhost:8080/myjsp即可。而docBase="e:/myjsp" 则是机器本地路径,他们通过这个语句形成一个映射关系,其它照抄。
将上面的First.jsp文件放到e:/myjsp目录下,输入http://localhost:8080/myjsp/First.jsp,是不是有一种喜上眉梢的感觉?
在论坛里我见得最多的就是很多人不知道javaBean文件放到哪里,老实说开始我也不知道,更令人不解的是,十个人有九种不同的说法,这更让我们茫然。其实这问题也不是我们想像的那么复杂,我们以一个例子说明:
先建立一个java程序,代码如下:
package hall;
public class SimpleBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
保存为SimpleBean.java,编译后会生成一个包,其实就相当于一个目录,也就是SimpleBean.class会存放在hall目录中,暂且保存起来,将来备用。
再输入以下代码:
<HTML>
<HEAD>
<TITLE>Reusing JavaBeans in JSP</TITLE>
</HEAD>
<BODY>
<CENTER>
<TABLE BORDER=5>
<TR><TH CLASS="TITLE">
Reusing JavaBeans in JSP</TABLE>
</CENTER>
<P>
<jsp:useBean id="test" class="hall.SimpleBean" />
<jsp:setProperty name="test" property="message" value="Hello WWW" />
<H1>Message: <I>
<jsp:getProperty name="test" property="message" />
</I></H1>
</BODY>
保存在我们刚才建立的虚拟目录e:/myjsp下面,并命名为:BeanTest.jsp。
现在我们应该将hall(包)目录放在哪儿呢?别急,我们先在e:/myjsp下建立一个文件夹WEB-INF,然后再在WEB-INF下建立一个classes文件夹,最后将hall目录放到classes下,当然,hall下的字节码文件SimpleBean.class也一并要移过来,而SimpleBean.java就和BeanTest.jsp放到同一目录吧(可以不需要放的,自己试试)。
好了,大功告成了,重新启动机器(如果您试了好多次都不行,这一步一定要做),在浏览器中输入:http://localhost:8080/myjsp/BeanTest.jsp,您看到了什么?呵,别告诉我您什么都没看到,那肯定是您设置的问题了。

 




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1354900

 
原创粉丝点击