java servlet概要

Servlet API

java Servlet有两个包,javax.servlet和javax.servlet.http。

  • javax.servlet包不是通过特定协议实现的,它是更加通用的servlet。
  • javax.servlet.http是javax.servlet基于http协议实现的版本。

java Servlet不同于我们写的普通程序,它没有main()方法。因此它必须要借助http server来执行。当客户端向服务器发送请求时,服务器就会把请求分发给servlet,servlet会根据请求的不同来处理它。

  • 对于GenericServlet,服务器会调用该类的service()方法来处理请求,因此我们可以override service()方法来实现想要的逻辑。
    • service()有两个参数,一个参数是request object, 另一个参数是response object。第一个参数记录了客户端请求的详细信息,第二个参数是向客户端返回的响应信息。

图中给出了GenericServlet处理请求的过程:

  • 对于HttpServlet,HttpServlet基于HTTP协议将service()分成了不同的模块,get, post等,因此我们不会直接override service()而是override doGet(),doPost(),doXXXX()等方法。

下图给出了HttpServlet处理请求的过程:

除了 GenericServlet和HttpServlet之外,还有一些辅助的类。如:

  • ServletRequest 和 ServletResponse提供了一般的请求和响应信息。
  • HttpServletRequest 和 HttpServletResponse提供了Http的请求和响应信息。

Servlet Example

创建Web工程

使用Maven创建Web工程 http://my.oschina.net/klink/blog/269718

编写Servlet代码

在编写之前,我们需要将Servlet的包引入到工程中来。在POM.XML中添加下面的依赖。

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-servlet_2.4_spec</artifactId>
    <version>1.1.1</version>
    <scope>provided</scope>
</dependency>

创建Class HelloWorld,并编写下面的代码。

package io.github.klink.web;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

  public void doGet(HttpServletRequest req, HttpServletResponse res)
   throws ServletException, IOException {

res.setContentType("text/html");
PrintWriter out = res.getWriter();

out.println("<HTML>");
out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>");
out.println("<BODY>");
out.println("<BIG>Hello World</BIG>");
out.println("</BODY></HTML>");
  }
}

将下面的配置信息写入到WEB-INF/web.xml中。

  <servlet>
    <servlet-name>
        hi
    </servlet-name>
    <servlet-class>
        io.github.klink.web.HelloWorld
    </servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>
        hi
    </servlet-name>
    <url-pattern>
        /hello.html
    </url-pattern>
</servlet-mapping>

使用mvn运行,mvn install。将Web工程编译并打包成war文件。然后将war文件上传到tomcat中,最后输入

http://localhost:8080/SimpleWebApp/hello.html

输出结果为:

Hello World

你可能感兴趣的:(servlet)