CSDN博客

img ltf_ty

兔八哥笔记1:java初学者笔记

发表于2003/11/10 23:16:00  1352人阅读

 

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文件时找不到servletHttpServletResponse等类的错误。

 

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文件中。

 

Tomcatwebapps目录下新建一个文件夹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的驱动也可以放在这里,最好是放在TomcatCommonLib目录下,因为在那里可以被部署在tomcat上的所有应用公用。

WEB-INF中还有另一个classes目录,这个目录中直接放置没有打包成.jar.class文件。

我们的Servlet1.class就可以放在这个目录下,但要将untitled4的文件夹一起保持原来的结构拷贝过来,否则无法运行。

 

现在我们来看看执行效果:

启动Tomcat

执行Tomcat根目录中的bin目录中的startup.bat

出现如下窗口:

 

启动IE,在地址栏输入:http://localhost:8080。“8080”是端口号可以更改,更改的方法是修改tomcatconf目录中的server.xml

 

只要将“8080”改为自己指定的数字就行了,如“80”。

 

我们看看执行结果:

请注意,我输入的是http://localhost:8080/b/servlet1,是servlet1,而不是Servlet1,如果输入Servlet1则会出现错误:

 

为什么?我们的类名分明是大写的Servlet1,而不是小写的servlet1,那为什么输入大写的不行,而小写的就可以了呢?答案在web.xml里,请注意url-pattern部分的值:

 

如果将/servlet1改为/Servlet1则就要输入大写的了,否则就会出现刚才输入大写的错误。

我的mysql的数据库中的数据如下:

我之所以贴出这张图,是向大家介绍这个mysql的控制台,这个控制台是mysql厂商开发的可视化的工具。我在使用的过程中发现与MSSQLServer的控制台非常类似。

目前是0.9.3beta版,是多语言版。我在使用过程中发现一个小bug就是图中被我用鼠标点击的部分,这部分本来应该是汉字,但显示的却是乱码。虽然有些bug,但这个工具对于我这样的mysql的新手来说却是救命稻草,如果需要可以到mysql的官方网站上下载,期待正式版快点出来。

 

 

另外:刚才的那个例子也可以打包成.war文件部署,过程如下:

注意这个例子一定是将WEB-INF目录下的文件打包,而不是将外层的文件夹b打包,而且在命令行中WEB-INF必须大写,否则部署后不能正确执行。

将打包后的c.war拷贝到TomcatWebapps的目录下,如图:

这个文件夹中的c目录为Tomcat启动后自动解开的文件。

启动Tomcat,打开IE,输入:http://localhost:8080/c/servlet1,结果如下:

 

 

0 0

相关博文

我的热门文章

img
取 消
img