1.Servlet 簡介:
JavaWeb應用開發(fā)的核心技術就是JSP、Servlet與JavaBean。Servlet 作為 Java Web 應用開發(fā)的核心技術之一,JSP 以及其他很多優(yōu)秀的Web框架【Struts2】都是基于 Servlet 實現(xiàn)的。
Servlet 的幾個特點:
- 1.Servlet(Java服務器端小程序,下面編寫的MyServlet.java就是一個典型的Servlet)是用 Java 編寫的平臺無關的服務器端小程序,運行在 Servlet 的容器(如Tomact)中,其生命周期由容器管理。
- 2.在Web開發(fā)中經(jīng)常用到Servlet的抽象類HttpServlet,該抽象類的兩個對象HttpServletRequest、HttpServletResponse 與客戶進行交互。
- 3.Servlet經(jīng)常用作控制器,根據(jù)不同的請求,將處理的結果轉(zhuǎn)發(fā)給其它的組建。
- 4.自己編寫的Servlet需要在web.xml中進行配置。
1.1 Servlet的請求響應時序:
當Servlet被封裝到容器之后,首先調(diào)用 init() 方法進行初始化,初始化后,調(diào)用service() 方法處理用戶的請求,并將處理的結果封裝到HttpServletResponse中返回給客戶,當Servlet實例從容器中移除時調(diào)用destory() 。

1.2 Servlet的抽象類HttpServlet:
HttpServlet是Servlet的抽象類,HttpServlet 通過**HttpServletRequest、HttpServletResponse **兩個對象與客戶進行交互。其中HttpServletRequest對象負責封裝存放Http請求的信息,HttpServletResponse對象負責封裝存放處理得到的響應結果。
另外,Servlet容器啟動加載Web應用時,會為每個Web容器創(chuàng)建一個ServletContext對象,用于存放整個Web應用的共享數(shù)據(jù),因此,我們可以把ServletContext對象看成Web應用的共享內(nèi)存。
1.HttpServletRequest 對象的常用方法:
- getParameter("參數(shù)name值"): 獲取Http請求中的指定參數(shù)值。
- setCharacter("utf-8"): 設置Http請求的編碼方式。
- get Cookies(): 獲取Http請求的cookies值。
其它更詳細的方法自己查唄
2.HttpServletResponse 對象的常用方法:
- getWriter(): 返回一個PrintWriter對象。
- setContentType("text/html"): 設置Http響應的文本格式。
- setCharacterEncoding("utf-8"): 設置Http響應頭的編碼方式。
其它更詳細的方法自己查唄
3.ServletContext對象的常用方法:
- setAttribute(String arg0, Object arg1): 把對象和一個屬性進行綁定,將這個對象存儲在ServletContext中
- getAttribute(String arg0): 根據(jù)給定的屬性名返回所綁定的對象。
其它更詳細的方法自己查唄
1.3 創(chuàng)建一個HttpServlet實例:
在Java Web應用開發(fā)中,創(chuàng)建一個HttpServlet一般遵循以下的步驟:
1.創(chuàng)建自己的Java類并繼承HttpServlet。
2.在Java類中重載HttpServlet的doGet、doPost方法。
3.編寫表現(xiàn)層的JSP文件,并配置form表單中的 action=" " 。
4.在WEB-INF中創(chuàng)建web.xml,并配置servlet。
5.啟動Servlet容器,并生成Http請求進行測試。
6.獲取Http請求信息,進行業(yè)務邏輯處理。
7.生成Http響應結果,以流的形式輸出到客戶端瀏覽器或磁盤文件。
在Eclipse中的總體文件結構:

具體的代碼:
1.視圖層:index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<FORM name="form1" action="login" method="POST">
請輸入姓名:
<INPUT name="name" type="text">
<INPUT name="submit" value="提交" type="submit">
</FORM>
</body>
</html>
2.典型的Servlet:MyServlet.java
package ServletTest;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public MyServlet(){ //構造函數(shù)
super();
}
public void destroy(){//銷毀時調(diào)用
super.destroy();
System.out.println("destory()執(zhí)行了");
}
//處理Get方式提交過來的數(shù)據(jù)表單
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
doPost(request,response);//直接調(diào)用doPost方法
}
//處理Post方式提交的數(shù)據(jù)表單
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html"); //設置Http響應的文檔類型
response.setCharacterEncoding("UTF-8"); //設置響應采用的編碼方式
String name = request.getParameter("name"); //獲取提交的表單中name文本框值
name = new String(name.getBytes("ISO-8859-1"),"utf-8");//將字符編碼轉(zhuǎn)換為utf-8
PrintWriter out = response.getWriter(); //等到一個PrintWrite對象
ServletContext context = getServletContext(); //得到整個Web的ServletContext對象
int count =1;
if(context.getAttribute("count")==null) //如果是第一位訪問者
{
context.setAttribute("count",new Integer(count));//設置計數(shù)器的初始值
}else{
count= Integer.parseInt(context.getAttribute("count").toString());//獲取當前的count值
count++;
context.setAttribute("count",new Integer(count));//更新計數(shù)器的值
}
out.println(name+",你好!你是第"+count+"位訪問者");
out.flush();//強制性將當前緩存中的內(nèi)容輸出
out.close();//關閉輸出流,清除當前所有內(nèi)容
}
//本Servlet裝配到容器后自動執(zhí)行初始化方法
public void init() throws ServletException{
System.out.println("init()執(zhí)行了");
}
}
3.web.xml配置文件內(nèi)容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
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">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>ServletTest.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
運行之后的結果:

2.預告
Servlet這一部分就寫到這里,接下來會寫有關SSH的部分,因為下一個Java Web項目的要用到SSH,就當是跟大家一起復習一下吧!