Servlet的開發
- Servlet是一個特殊的Java類,必須繼承HttpServlet
- doGet 響應客戶頓的GET請求
- doPost 響應客戶端的POST請求 (重寫service()方法響應客戶端所有請求)
- init( ServletConfig config) 創建servlet實例時,初始化Servlet資源
- destory() 銷燬實例時,自動調用該方法的回收資源
Servlet的配置
- 1、在Servlet類中使用@WebServlet註解進行配置
- 2、在web.xml文件中進行配置
<!-- 配置Servlet的名字 -->
<servlet>
<!-- 指定Servlet的名字,
相當於指定@WebServlet的name屬性 -->
<servlet-name>firstServlet</servlet-name>
<!-- 指定Servlet的實現類 -->
<servlet-class>lee.FirstServlet</servlet-class>
</servlet>
<!-- 配置Servlet的URL -->
<servlet-mapping>
<!-- 指定Servlet的名字 -->
<servlet-name>firstServlet</servlet-name>
<!-- 指定Servlet映射的URL地址,
相當於指定@WebServlet的urlPatterns屬性-->
<url-pattern>/aa</url-pattern>
</servlet-mapping>
JSP/Servlet的生命週期
創建實例————初始化————響應請求————資源回收————實例被銷燬
創建實例的兩個時機
- (1)用戶請求時
- (2)應用啓動時
@WebServlet(loadOnStartup=1) //整型值越小,Servlet就越先實例化
public class TimerServlet extends HttpServlet
{
public void init(ServletConfig config)throws ServletException
{
super.init(config);
Timer t = new Timer(1000,new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println(new Date());
}
});
t.start();
}
}
訪問Servlet的配置參數
@WebServlet(name="testServlet"
, urlPatterns={"/testServlet"}
, initParams={
@WebInitParam(name="driver", value="com.mysql.jdbc.Driver"),
@WebInitParam(name="url", value="jdbc:mysql://localhost:3306/javaee"),
@WebInitParam(name="user", value="root"),
@WebInitParam(name="pass", value="32147")})
// 獲取ServletConfig對象
ServletConfig config = getServletConfig();
// 通過ServletConfig對象獲取配置參數:dirver
String driver = config.getInitParameter("driver");
Servlet3.0新特性
註解
@WebServlet :用於修飾一個Servlet類,用於部署Servlet類
@WebInitParam
@WebListener
@WebFilter
@MultipartConfig:用於修飾Servlet,指定該Servlet將會負責處理multipart/form-data類型的請求(主要用於文件上傳)
Web模塊支持
異步處理
改進的Servlet API
HttpServletRequest增加了對文件上傳的支持
Part getPart(String name):根據名稱獲取文件上傳域
Collection getParts():獲取所有的文件的上傳域
上傳文件要爲表單域設置enctype屬性
application/x-www-form-urlencoded:默認,只處理value屬性值
multipart/form=data:以二進制流的方式來處理表單數據(上傳文件)
text/plain:當表單的action屬性爲mailto:URL的形式時比較方便
ServletContext允許通過編程的方式動態註冊Servlet、Filter