您的位置:首页 > 编程语言 > Java开发

Servlet

2015-10-29 19:11 435 查看

一、什么是Servlet

Servlet
Server Applet
),全称
Java Servlet
,未有中文译文。是用
Java
编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态
Web
内容。狭义的
Servlet
是指
Java
语言实现的一个接口,广义的
Servlet
是指任何实现了这个
Servlet
接口的类,一般情况下,人们将
Servlet
理解为后者。

Servlet
运行于支持
Java
的应用服务器中。从实现上讲,
Servlet
可以响应任何类型的请求,但绝大多数情况下
Servlet
只用来扩展基于
HTTP
协议的
Web
服务器。

Servlet的三个特点

Servlet
就是
JAVA


Servlet
是一个继承
HttpServlet
类的类

在服务器端运行,用以处理客户端的请求

二、Servlet相关包的介绍

javax.servlet.*
:存放与HTTP 协议无关的一般性Servlet 类;

javax.servlet.http.*
:除了继承
javax.servlet.*
之外,并且还增加与HTTP协议有关的功能。(注意:大家有必要学习一下HTTP协议,因为WEB开发都会涉及到)

  所有的
Servlet
都必须实现
javax.servlet.Servlet
接口(
Interface
)。

  若
Servlet
程序和HTTP协议无关,那么必须继承
javax.servlet.GenericServlet
类;

  若
Servlet
程序和HTTP协议有关,那么必须继承
javax.servlet.http.HttpServlet
类。

HttpServlet
:提供了一个抽象类用来创建
Http Servlet


  
public void doGet()
方法:用来处理客户端发出的
GET
请求

  
public void doPost()
方法:用来处理
POST
请求

  还有几个方法大家自己去查阅API帮助文件

javax.servlet
包的接口:

  
ServletConfig
接口:在初始化的过程中由
Servlet
容器使用

  
ServletContext
接口:定义
Servlet
用于获取来自其容器的信息的方法

  
ServletRequest
接口:向服务器请求信息

  
ServletResponse
接口:响应客户端请求

  
Filter
接口:

javax.servlet
包的类:

  
ServletInputStream
类:用于从客户端读取二进制数据

  
ServletOutputStream
类:用于将二进制数据发送到客户端

javax.servlet.http
包的接口:

  
HttpServletRequest
接口:提供
Http
请求信息

  
HttpServletResponse
接口:提供
Http
响应

三、Servlet生命周期

Servlet
生命周期就是指创建
Servlet
实例后,存在的时间以及何时销毁的整个过程.

Servlet
生命周期有三个方法

  
init()
方法:

  
service()
方法:
Dispatches client requests to the protected service method
 

  
destroy()
方法:
Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.


Servlet
生命周期的各个阶段



(1) 载入:
Servlet
容器创建
Servlet
实例

(2) 初始化:调用
init()
方法

(3) 服务:如果有请求,调用
service()
方法

(4) 销毁:销毁实例前调用
destroy()
方法

(5) 垃圾收集:销毁实例

四、Servlet的基本结构

//下面是导入相应的包
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 这是第一个Servlet的例子
*/
public class MyServlet extends HttpServlet {   
  //用于处理客户端发送的GET请求   
  public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {   
     response.setContentType("text/html;charset=GB2312"); //这条语句指明了向客户端发送的内容格式和采用的字符编码.   
     PrintWriter out = response.getWriter();    
     out.println(" 您好!"); //利用PrintWriter对象的方法将数据发送给客户端   
     out.close();   
  }   

  //用于处理客户端发送的POST请求   
  public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {   
    doGet(request, response); //这条语句的作用是,当客户端发送POST请求时,调用doGet()方法进行处理   
  }
}


五、Servlet的部署

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>servlet</display-name>
<servlet>
<servlet-name>MyServlet</servlet-name><!--类的对象-->
<servlet-class>servlet.MyServlet</servlet-class><!--servlet的路径(包路径+类名),小技巧:按住ctrl点击看能否跳转到该类。-->
</servlet>

<servlet-mapping>
<servlet-name>MyServlet</servlet-name><!--类的对象-->
<url-pattern>/my</url-pattern><!--例如网址:localhost:8080/servlet/my-->
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file><!--首页-->
</welcome-file-list>
</web-app>


[注意]

  1. 上面的两个
<servlet-name>
必须相同

  2. 
<servlet-class>
后面指在对应的类上面.

技巧:你可以直接在你的
servlet
类中复制过来,这样可以避免出错

  3. 
<url-pattern>
 必须是
/servlet
再加
servlet
名字.大家现在就这么记.

补充:此处原生支持的有三种写法:
/my
,
/my/*
,
*.my
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet java 服务器