1、什么是Servlet
Servlet是在服務器上運行的小程序(服務端的小程序)。一個Servlet就是一個Java類,并且可以通過“請求-響應”編程模型來訪問到這個駐留在服務器內存里的Servlet小程序。
Servlet采用了多線程的處理方式拂苹,而且Servlet還保留有Java的可移植性的特點,這樣使得Servlet更易使用痰洒,功能也更加強大瓢棒。
Servlet帶給開發(fā)人員最大的好處是它可以處理客戶端傳來的HTTP請求浴韭,并返回一個響應。
2脯宿、Tomcat容器等級
Tomcat的容器分為四個等級念颈,Servlet的容器管理Context容器,一個Context對應一個Web工程连霉。
3榴芳、編寫一個Servlet類
- 繼承HttpServlet。
- 重寫doGet()或doPost()方法跺撼。
public class HelloServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;chanset=utf-8");
PrintWriter out = response.getWriter();
System.out.println("Get請求?吒小!歉井!");
out.println("<b>Hello World</b>");
}
}
- 在web.xml中注冊Servlet
<servlet>
<servlet-name>Input</servlet-name>
<servlet-class>com.meng.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Input</servlet-name>
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>
- 請求頁面
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Servlet 測試</title>
</head>
<body>
<h1>Servlet 測試</h1>
<ul>
<li><a href="servlet/HelloServlet">Hello Servlet</a></li>
</ul>
</body>
</html>
4柿祈、Servlet生命周期
在下列時刻Servlet容器裝在Servlet
- Servlet容器啟動時自動裝載某些Servlet,實現(xiàn)它只需要在web.xml文件中的<servlet></servlet>之間添加如下代碼:
<loadon-startup>1</loadon-startup>酣难,數(shù)字越小表示優(yōu)先級越高谍夭。 - 在Servlet容器啟動后,客戶首次向Servlet發(fā)送請求憨募。
- Servlet文件更新后紧索,重新裝在Servlet。
5菜谣、Servlet與九大內置對象
6珠漂、Servlet路徑跳轉
- 請求重定向方式跳轉
直接使用HttpServletResponse接口的sendRedirect()方法即可,此跳轉只能傳遞session范圍的屬性尾膊,而無法傳遞request范圍的屬性媳危。
response.sendRedirect(request.getContextPath() + "/test.jsp");
- 服務器內部跳轉(轉發(fā))
request.getRequestDispatcher("/test.jsp").forward(request, response);
兩這的區(qū)別:
重定向:地址欄會改變。
轉發(fā):地址欄地址不變冈敛。
7待笑、獲取初始化參數(shù)
在web.xml中配置Servlet時,可以配置一些初始化參數(shù)抓谴,而在Servlet中可以通過ServletConfig接口提供的getInitParameter()方法來取得這些參數(shù)暮蹂。
<servlet>
<init-param>
<param-name>username</param-name>
<param-value>xiaoli</param-value>
</init-param>
</servlet>