【zz】部署一个简单的servlet工程(测试)


只有先搞清楚servlet的基本情况,在后续的工作中才能做到心中有数。

http://hi.baidu.com/316526334/item/d489b627dcdc5343469962d1


Servlet是一个执行在服务器端的Java Class文件,载入前必须先将Servlet程序代码编译成.class文件,然后将此class文件放在servlet Engline路径下。Servlet API使用javax.servlet和javax.servlet.http两个包的接口类。

Servlet的最大的缺点是不能有效地管理页面的逻辑部分和页面的输出部分,导致Servlet代码非常混乱,而用JSP和JavaBean/Servlet结合可以有效地管理页面的逻辑部分和页面的输出部分。

当服务器上的一个JSP网页被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译成class字节码文件(即Servlet类),然后执行以响应客户的请求,当这个JSP页面再次被请求执行时,JSP引擎将直接执行这个字节码文件来响应客户,响应速度比第一次执行快很多。

    两者可以互相调用,一般Servlet较多应用于业务逻辑(页面HTML输出不多或没有),而JSP偏重于数据展现,同一份数据可以用不同形式的视图来展现。


1.开发部署一个简单的servlet

这里以Tomcat5.5作为应用服务器,它是Apache+Servlet/JSP容器。先介绍一下Tomcat的目录结构,然后讲解如何添加一个应用,并部署一个简单的Servlet。

1)Tomcat 的主要目录结构

①     /bin: 存放Tomcat服务器的可执行文件和运行用的Jar包。

②     /conf :存放Tomcat服务器的各种配置文件,其中最重要的是server.xml。

③     /server :包含3个子目录classes、lib和webapps。

④     /common/lib 存放Tomcat服务器以及所有Web应用都可以访问的JAR。

⑤     /logs:存放了Tomcat的日志文件。

⑥     /webapps:当发布Web应用时,默认情况下把Web应用文件放于此目录下。

⑦     /work:Tomcat把由JSP生成的Servlet放于此目录下。

其中server.xml是用于整个Web服务器的,可以配置Web服务器的端口、应用目录、应用的入口、用户访问安全等信息。


2)Web应用的目录结构

Web应用有固定的结构,在/webapps目录下创建一个目录test,也即为一个web项目的根目录。这个Web应用的目录结构如下:

①     /test:Web应用的根目录,所有的JSP和Html文件都存放在该目录下。

②     /test/WEB-INF:存放Web应用的描述文件web.xml。

③     /test/WEB-INF/classes:存放各种class文件,servlet类文件也存放与该目录下。

④     /test/WEB-INF/lib:存放Web应用所需的各种JAR文件。如可以存放JDBC驱动程序的JAR文件。


3)配置文件web.xml

Java Web 应用通过一个基于XML的发布描述文件来配置其发布信息。Web.xml文件中可包含的配置信息有:

①         Servlet的定义;

②         Servlet的初始化参数;

③         Servlet以及JSP的映射;

④         安全域配置参数;

⑤         资源引用;

⑥         环境变量的定义。

配置文件web.xml可以自己编写,也可以从其他应用(如Root、JSP-examples、servlets-examples等)目录下拷贝过来修改。


4)部署Servlet文件的步骤

①   编写Servlet并编译成class文件,编译时,将servlet-api.jar文件(在/common/lib 目录下)加入到classpath中;我这里是:C:\Program Files\Java\jdk1.6.0_10\jre\lib\ext.如果在ellipse中操作是:工程属性/构件路径 /库   导入servlet.jar/servlet-api.jar,,如果没有正确放置servlet-api.jar文件,编译java文件将出错,这是因为servlet一般直接继承HttpServlet类

注:用JDK编译时,也可以用一个简单的方法,即:


          在JDK编译时,把tomcat里面的servlet-api.jar复制到你要编译的目录,这个文件应该在common\lib目录下的。然后编译的时候执行   
          javac   -classpath   .\servlet-api.jar   要编译的java文件.java   
    
       不要被IDE绑住了手脚。

②   将编译好的class文件拷贝到应用的WEB-INF/classes/下(如/test/WEB-INF/classes/);

③   在web.xml中进行配置 <servlet> 、<servet-mapping>,具体可参见下面的web.xml。

这里以一简单的Servlet为例,实现Servlet的开发和部署。

web.xml文件(置于WEB_INF目录下)

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <!-- Define servlets that are included in the example application -->

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/servlet/HelloServlet</url-pattern>
    </servlet-mapping>

</web-app>

5.HelloServlet代码

import java.io.*;

import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

    response.setContentType("text/html;charset=gb2312");

    PrintWriter out = response.getWriter();

    out.println("<HTML>");

    out.println("<HEAD>");

    out.println("<TITLE>Hello Servlet</TITLE>");

    out.println("</HEAD>");

    out.println("<BODY>");

    out.println("<B>Hello, World !</B>");

    out.println("</BODY>");

    out.println("</HTML>");

    out.close();

}

}

6. 然后可以测试:

http://localhost:8080/test/servlet/HelloServlet

出现具体问题了在具体分析,建议看一下tomcat的自带的一个servlet的例子:5.5版本的是

:***/Apache Software Foundation\Tomcat 5.5\webapps\servlets-examples在这个目录下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章