第一个Servlet程序

新手上路:Tomcat5.5.9的安装配置

作为一个初学JSPServlet的人来说,最难恐怕是服务器的配置这一关。本人刚刚开始学习JSPServlet,现在把配置经过和大家交流.
  
  我的主要环境如下
  1 - Windows XP sp2
  2 - j2sdk 1.5 jre1.5
  3 - tomcat 5.5.9
  
  大致的步骤如下:
  1. 安装和配置java.
  2. 下载并安装服务器。
  3. 测试服务器。

 

1 - 安装和配置java
  
  1.1 下载J2SDKJRE. 可以在http://java.sun.com下载. 注意Tomcat5.5.9需要的是JRE1.5.
  1.2 安装并设置环境变量. 设置JAVA_HOME变量为java的主目录. javabin目录路径添加到PATH环境变量中.
  1.3 测试Java环境. 进入 命令提示符(开始 - 运行 - cmd),输入java -version,看版本对不对. 输入 javac -help看是不是正确的提示,如果提示"不是内部活外部命令,也不是可运行的程序或批处理文件",则没有把Path路径设置好.参看1.2
  一切OK,进入第二步.
  

2 - 下载并安装服务器。
  
  2.1 下载tomcat5.5.9. 下载地址http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi. 下载 5.5.9.exe (windows 安装文件,我觉得比解压缩文件好配置的多)
  2.2 安装。 双击下载的 jakarta-tomcat-5.5.9.exe文件(4.29M),可进入安装状态。安装的过程就像安装windows的其它软件一样简单,选路径,下一步直到完成。其中要注意的是端口号,在安装过程中会提示你修改端口号,如果你没有别的服务器,建议你把端口号修改为80,这样方便你以后调试程序。如果你已经有别的服务器占据了80或者你不怕以后调试时不厌其烦的在地址栏输入8080,那就保持8080
  2.3 开启servlet调试器。主要是为了在不修改web.xml文件的情况下也能运新servlet,随着学习的深入,你会体会到这样带来的便利性,但不建议企业服务器这么做,仅限于学习阶段。具体做法如下,在tomcat的根目录下,比如我的安转目录是D:/Apache Software Foundation/Tomcat 5.5找到conf文件夹下的web.xml文件.把其中如下的servletservlet-mapping元素注释去掉:

j00152685apache-tomcat-5.5.28中的web.xml中,已经注释了这一部分)
  
  <servlet>
  <servlet-name>invoker</servlet-name>
  <servlet-class>
  org.apache.catalina.servlets.InvokerServlet
  </servlet-class>
  ...
  </servlet>
  ...
  <servlet-mapping>
  <servlet-name>invoker</servlet-name>
  <url-pattern>/servlet/*</url-pattern>
  </servlet-mapping>
  一切OK,进入第三步.
  
3 -
测试服务器.
  
  3.1 测试服务器的基本配置. 开始 - 程序 - Apache Tomcat 5.5 - Monitor Tomcat - Start 来启动服务器. 在浏览器地址栏输入http://localhost:port/(注意:port[x1] 是你设置的端口好)看能否正确显示Tomcat服务器说明页面.如不行,请检查以上配置.
  3.2 测试html文件. hello.html写好,拷贝至 tomcat主目录/webapps/ROOT/ .在浏览器地址栏输入http://localhost:port/hello.html(注意文件名的大小写).
  3.3 测试JSP文件. hello.jsp写好,拷贝至 tomcat主目录/webapps/ROOT/ .在浏览器地址栏输入http://localhost:port/hello.jsp(注意文件名的大小写).
  3.4 测试servlet. 写好HelloServlet.java并编译.HelloServlet.class拷贝至 tomcat主目录/webapps/ROOT/WEB-INF/classes(一般需要自己建一个classes文件夹),在浏览器地址栏输入http://localhost:port/servlet/HelloServlet (这里可以看到开启servlet调试器的便利之处).

 

出处:http://java.chinaitlab.com/Tomcat/31364.html

 

Tomcat Eclipse 开发 Web 应用程序

1. 创建项目

启动eclipse,然后选择菜单File->New->Project...,在新建项目向导中选择 Web->Dynamic Web Project。该项目即为使用ServletJSP等技术开发动态网站的项目。(如果你找不到这一项,说明Lomboz没有配置好,请参阅文章开头的链接进行配置。)

j00152685Lomboz是什么东东?)

 

下一步,输入项目名 LearnJSP。下面的Target Runtime指定运行这个项目的服务器,如果你已经在配置Lomboz 的一节中配置好了Tomcat服务器,那么在这里你可以看到相应的服务器配置,选择它即可。如果选择框中只有<none>,说明你还没有配置服务器,可以单击右侧的New...按钮新建。

Configurations项选择<none>即可。

jt00152685:我的项目名为HelloServlet1,之前建了一个HelloServletjava project,失败了)

下一步选择项目所需的特性,默认的Dynamic Web ModuleJava就足够了。

j00152685:我的eclipse中,上一步和这一步是在一起的。另外,Dynamic Web Module是指什么?)

下一步是输入相关的目录,这里也直接使用默认值即可。图略。

最后单击 Finish,完成项目创建。创建途中可能会有一个用户使用协议需要你同意,单击I Agree即可。创建完成后会询问是否要切换到J2EE视图(下图),选择Yes,完成项目创建。

项目建立完成后,请在左侧的 Project Explorer 中打开 LearnJSP 项目,看看它各个部分的构成。

基础知识一节中我们知道,应用程序由三部分组成,即ServletJSP及静态内容、配置文件web.xml。项目视图中的 src 目录用来保存 Servlet 源代码WebContent 目录用来保存JSP及静态内容 web.xml则位于 WebContent/WEB-INF/web.xml。但手工编辑 web.xml 比较麻烦,因此 Lomboz 提供了一套可视化工具用于编辑 web.xml,即最上方的Depolyment Descriptor

2. 理解Servlet

Project Explorer中打开Java Resources: src -> Libraries -> Apache Tomcat 5.5 -> servlet-api.jar 文件,可以看到其中包含两个包:javax.servletjavax.servlet.http,与Servlet有关的类和接口都位于这两个包里面。

Servlet是一个接口,位于 javax.servlet.Servlet,它规定了每个Servlet所必须实现的方法。实际应用时我们需要从 javax.servlet.GenericServlet javax.servlet.http.HttpServlet 两个抽象类继承出自己的Servlet类,并实现所需的功能。这几个类的关系如下(绿色斜体字为抽象类):

上图中,Servlet依赖于ServletRequestServletResponse接口,这两个接口负责为Servlet接受和发送信息。 HttpServlet也类似。

Servlet接口

javax.servlet.Servlet接口包含以下的方法:

init()

void init(ServletConfig config) throws ServletException

init方法用于初始化,在Servlet启动时调用。

service()

void service(ServletRequest req, ServiceResponse res) throws ServletException, IOException

Servlet通过这个方法,从req获得客户端请求,处理并生成结果,再通过res发送给客户端。

destroy()

void destroy()

Servlet销毁时执行的方法。

getServletInfo()

String getServletInfo()

Servlet的信息通过字符串返回。

getServletConfig()

ServletConfig getServletConfig()

获取包含Servlet各种信息的ServletConfig对象。

当某个Servlet第一次被请求时,服务器(Servlet容器)会生成该Servlet并调用它的init()方法,再调用其service()方法处理请求。处理结束后该Servlet会常驻于容器中,下一个请求则不再重新生成Servlet,而是直接调用常驻的Servlet对象的service()方法。服务器停止时,会调用该Servletdestroy()方法。

因此,Servlet的一个生命周期中,init()destroy()仅会被调用一次,而service()则会被调用多次。

GenericServlet抽象类

javax.servlet.GenericServlet为我们实现了Servlet接口的大部分方法,除了service()方法之外。因此,我们在制作自己的Servlet时,只需要继承GenericServlet并重载service()方法即可

典型的Servlet示例

下面我们来做一个典型的Servlet

eclipse左侧的Project Explorer中,右键单击Java Resources: src目录(以后简称src目录),选择New->Class,建立如下所示的类。

包名输入我们要建立的 com.idv2.learnjsp,类名为 HelloServlet父类为 javax.servlet.http.GenericServlet。在输入父类名时,你会看到输入框左侧有个小灯泡的图标,这说明可以通过 Alt-/键自动补齐,因此你只需输入 GenericSer 几个字母,然后 Alt-/ 组合键,系统会自动查找开头为 GenericSer 的类并补齐剩余部分。

j00152685:我的代码直接放在default包中)

Finish之后eclipse会为我们生成代码框架,我们只需填入实际的处理代码即可。代码可以从这里下载。

helloservlet.zip

上述代码是UTF-8编码,如果你直接放到src目录中有可能出现乱码,这时请选择Windows->Preferences...菜单,选择左侧的General->Workspace,然后将Text file encoding设置为UTF-8即可。

j00152685:我用的源码:HelloServlet.java

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
 
/**
 * Hello world servlet.  Most servlets will extend
 * javax.servlet.http.HttpServlet as this one does.
 */
public class HelloServlet extends HttpServlet {
  /**
   * Implements the HTTP GET method.  The GET method is the standard
   * browser method.
   *
   * @param request the request object, containing data from the browser
   * @param repsonse the response object to send data to the browser
   */
  public void doGet (HttpServletRequest request,
                     HttpServletResponse response)
    throws ServletException, IOException
  {
    // Returns a writer to write to the browser
    PrintWriter out = response.getWriter();
 
    // Writes the string to the browser.
    out.println("Hello, world!");
    out.close();
  }
}

 

代码写好后,从Project Explorer中打开项目的 build 目录,可以看到eclipse自动编译了 HelloServlet.java并生成了 com/idv2/learnjsp/HelloServlet.class 文件。

那么如何在服务器上运行它呢?首先必须要做的就是在配置文件 web.xml 中登记这个Servlet。刚才我们在建立 HelloServlet 类时,并没有声明它是一个Servlet,这样服务器就无法将它作为Servlet执行,因此必须先登记,并为它指定一个URL(即Servlet Mapping

右键单击Depolyment Descriptor中的Servlets,选择New->Servlet,出现下面的画面。

因为我们已经写好了HelloServlet类,因此选中Use existing Servlet class,然后单击右侧的Browse...按钮,选择HelloServlet类。下一步。

URL映射是指,浏览器通过哪个URL能访问到这个Servlet。默认与Servlet名称相同,为了演示,我们这里将他修改为小写的 /helloservlet 。实际的URL格式为 http://主机名/应用程序名/ServletURL映射,我们这个ServletURL就应当是 http://localhost:8080/LearnJSP/helloservlet

j00152685:我的是http://localhost:80/HelloServlet1/helloservlet

单击Finish完成添加Servlet。如果你有兴趣可以打开 WebContent/WEB-INF/web.xml,可以看到刚才的修改在web.xml中是怎样的结果。

下一步我们需要将它部署到服务器上。打开eclipse下方的Servet栏,可以看到系统中的服务器列表。

如果你找不到Server栏,请通过主菜单Window->Show View->Others添加Server栏;如果你的Server栏中什么都没有,请在Server栏中单击右键然后 New->Server

右键单击服务器,选择Add and Remove Projects...,将 LearnJSPj00152685HelloServlet1项目添加到服务器上。添加之后的结果如下:

最后右键单击服务器,选择Start,片刻即可看到在Console栏中输出大量的信息,服务器启动了。打开浏览器,访问 http://localhost:8080/LearnJSP/helloservlet。如果能看到“Hello Servlet”的输出,则恭喜你,第一个Servlet成功运行了!

j00152685:我的是http://localhost:80/HelloServlet1/helloservlet

刷新浏览器页面几次,然后回到eclipse下侧的Console栏,可以看到下面的字样:

init() was called.

service() was called.

service() was called.

service() was called.

这是我们加入的调试信息。这些信息说明了Servlet的一个生命周期中 initservicedestroy函数的执行过程。如果在Server栏中停止服务器,那么你可以在Console栏中的信息中找到 destroy() 函数的执行

 

出处:http://www.cnblogs.com/DuLingFs/archive/2009/10/13/1582203.html

 

(抱怨一下,贴几个图片,累死俺了)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值