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

原创 2003年11月10日 23:16:00
 

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等类的错误。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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,

如图:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2003-9-29922130.png

-d .是指在当前路径下生成代码中指定的包的名字命名的文件夹,并将编译好的.class文件放在这个文件夹中。

本例中将生成一个名为untitled4的文件夹。编译成功后,会生成一个文件夹untitled4,里面有编译好的Servlet1.class文件。

 

jar的帮助文件如下:

CSDN_Dev_Image_2003-9-29922132.png

 

编译成功后就可以打包成.jar文件了,做法如下:

jar cvf 4.jar untitled4/.

如图:

CSDN_Dev_Image_2003-9-29922134.png

注意: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,添加自己定制的路径:

CSDN_Dev_Image_2003-9-29922136.png

如果要添加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>

CSDN_Dev_Image_2003-9-29922138.png

 

写好这个文件后,WEB-INF的目录结构如下:

CSDN_Dev_Image_2003-9-299221310.png

 

 

lib中的文件如下:

CSDN_Dev_Image_2003-9-299221312.png

mysql的驱动也可以放在这里,最好是放在TomcatCommonLib目录下,因为在那里可以被部署在tomcat上的所有应用公用。

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

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

 

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

启动Tomcat

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

出现如下窗口:

CSDN_Dev_Image_2003-9-299221314.png

 

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

CSDN_Dev_Image_2003-9-299221316.png

 

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

 

我们看看执行结果:

CSDN_Dev_Image_2003-9-299221318.png

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

CSDN_Dev_Image_2003-9-299221320.png

 

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

CSDN_Dev_Image_2003-9-299221322.png

 

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

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

CSDN_Dev_Image_2003-9-299221324.png

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

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

 

 

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

CSDN_Dev_Image_2003-9-299221326.png

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

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

CSDN_Dev_Image_2003-9-299221328.png

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

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

CSDN_Dev_Image_2003-9-299221330.png

 

 

《C语言》初学者笔记

1.0表示正常,-1表示异常 换行\n 排版代码键位“alt F8” 2.变量的本质就是内存中一段存储空间。变量的初始化就是变量的赋值。 3.释放不是清空,而是把使用权限分配给其他程序。用填充数字来...
  • qq_19982213
  • qq_19982213
  • 2016年07月31日 11:33
  • 181

dubbo入门学习笔记

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 其核心部分包含: 1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程...
  • fuyuwei2015
  • fuyuwei2015
  • 2015年11月15日 15:32
  • 748

Linux学习笔记之——起始篇

摘要:学习笔记目录、方便以后回顾、没有什么捷径可走、不断的记录、总结、练习、coding、coding。...
  • chenghuaying
  • chenghuaying
  • 2014年03月31日 16:47
  • 4572

黑马学习笔记--JAVA基础知识

JAVA概述JAVA发展史: JAVA之父:詹姆斯.高斯林 SUN公司:斯坦福大学网络公司(2010-10-24被oracle收购) JDK JRE JVM: JDK: JAVA开发工具包,包含了JR...
  • qq_28114645
  • qq_28114645
  • 2017年03月07日 22:33
  • 329

Python 之 Scrapy笔记(1)- 入门篇

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取)所设计的, 也可以应用...
  • VIP_WangSai
  • VIP_WangSai
  • 2016年08月11日 14:04
  • 312

myBatis学习笔记(1)——快速入门

在项目中使用myBatis 导入jar包 在src下创建配置文件
  • u010837612
  • u010837612
  • 2015年05月12日 11:06
  • 897

Java多线程笔记总结

1.线程的三种创建方式参考之前的总结: 多线程-创建线程的三种方式对比三种方式: 通过继承Thread类实现 通过实现Runnable接口 实现Callable接口 第1种方式无法继承其他类,第2,3...
  • neven7
  • neven7
  • 2015年12月22日 10:05
  • 593

Java设计模式之初学者笔记——设计模式基础讲解

设计模式基础讲解
  • u012817635
  • u012817635
  • 2016年04月06日 20:11
  • 3316

1.zabbix学习笔记:zabbix的安装

zabbix的安装为什么需要监控随着互联网公司业务不断增长,硬件规模不断扩大,作为SA我们需要清楚每一台服务器的状态(温度、CPU使用率、内存使用率、磁盘使用率等),如果使用人为的方式将会极大增加工作...
  • linux_player_c
  • linux_player_c
  • 2015年11月13日 14:30
  • 1690

JavaScript学习笔记

JavaScript 是 Web 的编程语言。 输出文本 document.write(Date()); 改变HTML元素 我的第一个 Web 页面 我的第一个段落。 document.g...
  • linxinfa
  • linxinfa
  • 2016年06月29日 21:04
  • 301
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:兔八哥笔记1:java初学者笔记
举报原因:
原因补充:

(最多只允许输入30个字)