1.JDK的配置:
Path:c:\jdk1.4\bin; (目的是在任何位置都可以执行javac, java, jar等命令)
ClassPath:.;c:\jdk1.4\lib\dt.jar;C:\jdk1.4\lib\tools.jar;c:\jdk1.4\lib\j2ee.jar;
注意:“.”代表当前路径。j2ee.jar包括了servlet等类,否则可能出现编译servlet文件时找不到servlet和HttpServletResponse等类的错误。
2.Tomcat必须的配置:
Java_Home: 如:c:\jdk1.4;
CATALINA_HOME:(也就是Tomcat安装的根目录)如:C:\JBuilder9\thirdparty\jakarta-tomcat-4.1.24-LE-jdk14
3.ANT必须的配置:
ANT_HOME:也就是Ant安装的根目录
还要将Ant_Home\bin添加到Path中(目的是在任何位置都可以执行ant命令)。
4.JAR的使用:
jar的用法很简单,只要将JDK配置正确,就可以使用jar命令来打包.jar文件了。
如我写了一个简单的访问mysql数据库的servlet,代码如下:
=============Servlet1.java=====================
//这是用JBuilder向导生成的servlet
package untitled4;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
public class Servlet1 extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
//初始化全局变量
public void init() throws ServletException {
}
//处理 Get 请求
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
String r = ""; //要打印到屏幕上的变量
ResultSet rs = null; //结果集
Statement stmt = null; //SQL语句
Connection conn = null; //数据库连接
PrintWriter out = response.getWriter();
try {
try {
Class.forName("com.mysql.jdbc.Driver"); //装载mysql的驱动
conn = DriverManager.getConnection( //连接到指定的数据库,用户root,密码为空
"jdbc:mysql://localhost/mydb", "root", "");
stmt = conn.createStatement(); //创建SQL语句对象
String queryString = "select * from mytable"; //构造查询语句
rs = stmt.executeQuery(queryString); //执行查询,如果是insert, update, delete 则使用executeUpdate方法。
while (rs.next()) { //如果查询返回的结果集不为空则循环
String name = rs.getString("name"); //得到name字段的值
String id = rs.getString("id"); //得到id字段的值
r = r + ": "name + ", " + id; //得到要打印的变量值
}
}
finally {
if (rs != null) {
rs.close(); //关闭结果集
}
if (stmt != null) {
stmt.close(); //关闭SQL语句对象
}
if (conn != null) {
conn.close(); //关闭数据库连接对象
}
}
}
catch (SQLException e) {
}
catch (ClassNotFoundException e) {
}
//输出变量r的值
out.println("<HTML>");
out.println("<BODY>");
out.println("r=");
out.println(r);
out.println("</BODY>");
out.println("</HTML>");
}
//清除资源
public void destroy() {
}
}
=======================================
先使用javac编译,javac -d . Servlet1.java,
如图:
-d .是指在当前路径下生成代码中指定的包的名字命名的文件夹,并将编译好的.class文件放在这个文件夹中。
本例中将生成一个名为untitled4的文件夹。编译成功后,会生成一个文件夹untitled4,里面有编译好的Servlet1.class文件。
jar的帮助文件如下:
编译成功后就可以打包成.jar文件了,做法如下:
jar cvf 4.jar untitled4/.
如图:
注意:4.jar 是打包成功后的.jar文件的名字, untitled4是.class所在的目录,/.是指将指定的目录下的文件递归打在4.jar这个.jar文件中。
在Tomcat的webapps目录下新建一个文件夹b,在b中新建一个文件夹WEB-INF,在WEB-INF中新建文件夹lib,将4.jar这个文件拷贝到b\WEB-INF\lib下。如果不想放在webapps下,则要修改server.xml,添加自己定制的路径:
如果要添加D:\ltf为自己指定的路径/mydir,则在这个文件的<Host> </Host>之间添加如下内容:
<Context path="/mydir" docBase="D:\ltf" debug="0"
reloadable="true" crossContext="true">
</Context>。这里只是介绍一下还有这种用法,以下均按照程序放在webapps中来示例的。
在b\WEB-INF中新建一个文件web.xml。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>untitled4.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
</web-app>
写好这个文件后,WEB-INF的目录结构如下:
lib中的文件如下:
mysql的驱动也可以放在这里,最好是放在Tomcat的Common的Lib目录下,因为在那里可以被部署在tomcat上的所有应用公用。
在WEB-INF中还有另一个classes目录,这个目录中直接放置没有打包成.jar的.class文件。
我们的Servlet1.class就可以放在这个目录下,但要将untitled4的文件夹一起保持原来的结构拷贝过来,否则无法运行。
现在我们来看看执行效果:
启动Tomcat:
执行Tomcat根目录中的bin目录中的startup.bat,
出现如下窗口:
启动IE,在地址栏输入:http://localhost:8080。“8080”是端口号可以更改,更改的方法是修改tomcat的conf目录中的server.xml。
只要将“8080”改为自己指定的数字就行了,如“80”。
我们看看执行结果:
请注意,我输入的是http://localhost:8080/b/servlet1,是servlet1,而不是Servlet1,如果输入Servlet1则会出现错误:
为什么?我们的类名分明是大写的Servlet1,而不是小写的servlet1,那为什么输入大写的不行,而小写的就可以了呢?答案在web.xml里,请注意url-pattern部分的值:
如果将/servlet1改为/Servlet1则就要输入大写的了,否则就会出现刚才输入大写的错误。
我的mysql的数据库中的数据如下:
我之所以贴出这张图,是向大家介绍这个mysql的控制台,这个控制台是mysql厂商开发的可视化的工具。我在使用的过程中发现与MS的SQLServer的控制台非常类似。
目前是0.9.3的beta版,是多语言版。我在使用过程中发现一个小bug就是图中被我用鼠标点击的部分,这部分本来应该是汉字,但显示的却是乱码。虽然有些bug,但这个工具对于我这样的mysql的新手来说却是救命稻草,如果需要可以到mysql的官方网站上下载,期待正式版快点出来。
另外:刚才的那个例子也可以打包成.war文件部署,过程如下:
注意这个例子一定是将WEB-INF目录下的文件打包,而不是将外层的文件夹b打包,而且在命令行中WEB-INF必须大写,否则部署后不能正确执行。
将打包后的c.war拷贝到Tomcat的Webapps的目录下,如图:
这个文件夹中的c目录为Tomcat启动后自动解开的文件。
启动Tomcat,打开IE,输入:http://localhost:8080/c/servlet1,结果如下: