当前位置: 代码迷 >> Web前端 >> servlet 编译跟安装
  详细解决方案

servlet 编译跟安装

热度:383   发布时间:2012-11-23 00:03:43.0
servlet 编译和安装
1、简单的servlet例子

在下面的例子1中,Hello扩展了HttpServlet。

例子1
servlet源文件
Hello.java:
import java.io.*;
import javax.servlet.*;

import javax.servlet.http.*;
public class Hello extends HttpServlet{ 
	public void init(ServletConfig config) throws ServletException{
		super.init(config);
	}
	public void service(HttpServletRequest reqest,HttpServletResponse response) throws IOException{ 
		//获得一个向客户发送数据的输出流:
		PrintWriter out=response.getWriter();
		response.setContentType("text/html;charset=GB2312");//设置响应的MIME类型。
		out.println("<HTML> <BODY>");
		out.println("Simple servlet");
		out.println("</body> </html>");
	}
}


2、编译servlet




为了编译servlet源文件,需要HttpServlet、HttpServletRequest等类,JDK内置包中并不包含这些类文件。为了能编译servlet源文件得到创建servlet用的字节码文件,需要在环境变量中包含servlet.jar,这个jar文件在TOMCAT安装目录的common\lib文件下,如图7.1所示(也可以到sun公司网站下载编译servlet所需要的类)。

对于window2000,用鼠标右键点击“我的电脑”,弹出菜单,然后选择属性,弹出“系统特性”对话筐,再单击该对话框中的高级选项,然后点击按钮“环境变量”,编辑classpath,添加新的环境变量的值:

D:\Tomcat\jakarta-tomcat-4.0\common\lib\servlet.jar;

我们将上述servlet的源文件Hello.java保存到F:\2000,然后编译生成字节码文件Hello.class

3、存放servlet的目录

(1)所有web服务目录可使用的servlet的存放位置 图7.1 编译servlet 所需要的jar文件

如果让所有web服务目录都可以使用该servlet,那么创建这个servlet的字节码文件需存放在Tomcat安装目录的classes目录中,例如,本书所用机器的目录就是:D:tomcat\Jakarta-tomcat-4.0\classes,如图7.1所示。

我们已经知道,servlet第一次被请求加载时,服务器初始化一个servlet,即创建一个servlet对象,这对象调用init方法完成必要的初始化工作。如果你对servlet的源文件进行了修改,并将新的字节码文件存放到classes中,如果服务器没有关闭的话,新的servlet不会被创建,因为,当后续客户请求servlet服务时,已初始化的servlet将调用service方法响应客户。

(2)只对examples服务目录可用的seclet的存放目录

examples是TOMCAT引擎的默认web服务目录之一。

如果想让某个servlet只对examples目录可用,那么创建该servlet的字节码文件只需存放在webapps/example/Web-inf/classes目录中。

存放在该目录中的servlet和存放在上面(1)中所述目录中的servlet有所不同,服务器引擎首先检查webapps/example/Web-inf/classes目录中的创建该servlet的字节码文件是否被修改过,如果重新修改过,就会用消灭servlet,用新的字节码重新初始化servlet。

如果经常调试servlet,可以把servlet放在webapps/example/Web-inf/classes。需要注意的是,当用户请求servlet服务时,由于服务器引擎每次都要检查字节码文件是否被修改过,导致服务器的运行效率降低。

4、运行servlet

如果一个servlet对所有的web服务目录可用,那么只要在服务器引擎启动后,在浏览器地址栏键入:

http://localhost:8080/web服务目录/servlet/创建servlet类的名字

即可,例如,对于用上述Hello创建的servlet,

(1) Root 服务目录

http://localhost:8080/servlet/Hello

(2) friend目录(我们自定义的一个web服务目录)

http://localhost:8080/friend/servlet/Hello

如果是只对examples服务目录可用的servelt,那么只要在服务器引擎启动后,在浏览器地址栏键入:

http://localhost:8080/examples/servlet/创建servlet类的名字

我们将Hello.class文件保存到Tomcat引擎的classes文件夹中。图7.2和7.3是在不同的web目录下运行servlet的效果。




5、带包名的servlet

在写一个servlet的java文件时,可以使用package语句给servlet一个包名。包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,如:

package gping;
package tom.jiafei;


程序如果使用了包语句,例如

package tom.jiafei;


那么在classes目录下需有如下的子目录,例如,在D:\Tomcat\jakarta-tomcat-4.0\classes下再建立如下的目录结构。

\tom\jiafei

并将servlet的字节码文件存在该目录中,如图7.4所示。



如果servlet有包名,比如,Hello的包名是tom.jiafei,那么调用该servlet的URL是:

http://localhost:8080/web服务目录/servlet/tom.jiafei.Hello

因为起了包名,Hello的全名是tom.jiafei.Hello(就好比大连的全名是:中国.辽宁.大连)。
  相关解决方案