开发部署一个简单的servlet

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偏重于数据展现,同一份数据可以用不同形式的视图来展现。

5.         开发部署一个简单的Servlet

这里以Tomcat5作为应用服务器,它是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目录下创建一个目录myapp。则这个Web应用的目录结构如下:

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

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

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

④     /myapp/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中;

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

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

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

文件 HelloServlet.java

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();

  }

}

编译成功后,将HelloServlet.class拷贝到/myapp/WEB-INF/classes/下,然后修改web.xml。

配置文件 web.xml。

<?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">

  <display-name>Welcome to Tomcat</display-name>

  <description>

     JSP和Servlet

  </description>

       <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>

然后在浏览器中运行http://localhost:8080/ch2/servlet/HelloServle


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在servlet中调用另一个servlet可以使用RequestDispatcher的forward()方法或include()方法。 使用forward()方法可以将请求转发到另一个servlet,由另一个servlet处理请求并返回响应。使用include()方法可以将另一个servlet的响应包含在当前servlet的响应中。 具体实现可以参考以下代码: //获取RequestDispatcher对象 RequestDispatcher dispatcher = request.getRequestDispatcher("/AnotherServlet"); //使用forward()方法转发请求 dispatcher.forward(request, response); //使用include()方法包含另一个servlet的响应 dispatcher.include(request, response); ### 回答2: 在Java Web开发中,Servlet是一种运行在Web服务器上的程序。当用户向服务器发送请求时,Servlet将处理这些请求并返回相应的结果。有时候,一个Servlet可能需要调用另一个Servlet来完成某些特定的功能。 调用另一个Servlet可以通过以下几种方式实现: 1. 使用RequestDispatcher:在当前Servlet中,可以使用RequestDispatcher的forward或include方法来将请求转发给另一个Servlet处理。在调用forward方法后,当前Servlet将不会再做任何响应输出;而使用include方法后,当前Servlet的响应结果将被包含在另一个Servlet的输出中。 2. 使用重定向:使用HttpServletResponse的sendRedirect方法可以实现对另一个Servlet的调用。在当前Servlet中,通过设置response的重定向地址,将请求发送给另一个Servlet处理。由于是不同的请求,因此当前Servlet的状态将不会被保留。 3. 使用URL连接:在Java中,可以使用URL连接来与其他Servlet进行通信。可以使用URLConnection或HttpURLConnection类来建立连接,并发送请求到另一个Servlet。通过设置请求参数和获取响应结果,可以完成对另一个Servlet的调用。 需要注意的是,调用另一个Servlet时,应该确保另一个Servlet已经部署在服务器上,并配置了正确的URL映射路径。此外,还应该考虑请求参数的传递和响应结果的处理,以便正确地交互和处理数据。 总结起来,Servlet调用另一个Servlet可以通过RequestDispatcher、重定向或URL连接来实现。不同的方式有不同的适用场景,开发者可以根据具体需求选择合适的方式来完成调用操作。 ### 回答3: 在Servlet中调用另一个Servlet通常可以通过两种方式来实现:直接调用和重定向。 1. 直接调用: 在调用Servlet时,可以使用`RequestDispatcher`类的`forward()`方法来直接调用另一个Servlet。首先,通过`getServletContext().getRequestDispatcher("/path/to/anotherServlet")`获取到要调用的Servlet对象,其中`/path/to/anotherServlet`是另一个Servlet的URL路径。然后,使用`forward()`方法将请求和响应对象传递给另一个Servlet,即`dispatcher.forward(request, response)`。这样就可以直接调用另一个Servlet,并将控制权转移到那个Servlet上。 2. 重定向: 另一种方式是使用`response.sendRedirect("/path/to/anotherServlet")`将请求重定向到另一个Servlet。通过该方法将请求重新发送到新的URL路径,从而可以调用另一个Servlet。该方法会向浏览器发送一个新的重定向指令,然后浏览器会再次发送新的请求到指定的URL路径,最终由另一个Servlet进行处理。 无论是直接调用还是重定向,都可以实现在一个Servlet中调用另一个Servlet的功能。具体选择哪种方式,取决于具体的需求和场景。直接调用可以共享请求和响应对象,可以在不同的Servlet之间传递数据,但是只能在同一个应用程序中使用。而重定向适合跨应用程序的调用,但是不能共享请求和响应对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值