1 容器
如果Web服务器应用得到一个指向servlet的请求,此时服务器不是把请求交给servlet本身,而是交给部署该servlet的容器。要由容器想servlet提供HTTP请求和相应,而且要由容器调用servlet的方法,如doPost()或doGet()。
1.1 容器提供什么
- 通信支持
无需自己建立ServerSocket、监听端口、创建流等。 - 生命周期管理
- 多线程支持
容器会自动为它接受的每个servlet请求创建一个新的java线程。 - 声明方式实现安全
利用容器,可以使用XML部署描述文件来配置和修改安全性,而不必将其硬编码写到servlet或其他类代码中。 - JSP支持
容器负责把jsp代码翻译成真正的Java
1.2 容器如何处理请求
- 用户点击一个链接,其URL指向一个servlet。
- 容器创建请求和响应对象:HttpServletResponse、HttpServletRequest。
- 容器根据请求中的URL找到正确的servlet,为这个请求创建或分配一个线程,并把请求和响应对象传递给这个servlet线程。
- 容器调用servlet的service()方法。根据请求的类型,service()方法会调用doGet()或doPost()方法。
- 以Http GET请求为例: doGet()方法生成动态页面,并把这个页面填入响应对象。
- 线程结束,容器吧响应对象转换为一个HTTP响应,把它发回给客户,然后删除请求和响应对象。
/**
* 一个servlet例子
*/
public class ServletEXP extend HttpServlet {
public void doGet(HttpServletRequest reque, HttpServletResponse response) throws IOException{
// 在servlet从容器得到的响应对象中,可以拿到一个PrintWriter。
// 使用这个PrintWriter能够将HTML文本输出到响应对象。
PrintWriter out = response.getWriter();
Date today = new Data();
out.println("<html> " + "<body>"
+ "<h1>DanDan's ServletEXP</h1>"
+ today
+ "<body><html>")
}
}
网友评论