1,servlet生命週期
- 當servlet第一次調用的時候會觸發init函數,該函數之調用一次把servlet實例裝載到內存。
- 然後去調動servlet的service函數。
- 第二次訪問servlet的時候直接調用service函數。
- 當web應用reload 或者tomcat關閉或者關機的時候都會調用servlet的destory函數,該函數銷燬servlet。
2,開發servlet的三種方式
(1)實現servlet接口
(2)通過繼承GenericServlet
(3)通過繼承HttpServlet
下面介紹三種實現方式:
※ 第一種:實現servlet接口
1,新建MyServelet類
public class MyServelet implements Servlet {
// 這個函數用於初始化servlet(類似類構造函數),該函數只會調用一次(當用戶第一次訪問servlet時被調用)
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("init servlet");
}
// 得到servletConfig對象
@Override
public ServletConfig getServletConfig() {
return null;
}
// 得到servlet的配置信息
@Override
public String getServletInfo() {
return null;
}
// 這個函數用於處理業務邏輯,當用戶每訪問該servlet時都會被調用。
// ServletRequest:用於獲取客戶端瀏覽器的信息。
// ServletResponse:用戶向客戶端(瀏覽器)返回信息。
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
PrintWriter printWriter = res.getWriter();
printWriter.write("hello word");
System.out.println("service callback");
}
// 釋放servlet實例(釋放內存)
// 觸發方式1,reload servelt 2,關閉tomcat 3,關機
@Override
public void destroy() {
System.out.println("destory servlet");
}
}
2,新建web.xml 並配置映射路徑
<servlet>
<!-- 給你的servlet任意取名 -->
<servlet-name>MyServelet</servlet-name>
<!-- 指明servlet的路徑 包名+路徑 -->
<servlet-class>com.hiveview.test.MyServelet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 給你的servlet任意取名 -->
<servlet-name>MyServelet</servlet-name>
<!-- 在瀏覽器上輸入訪問該servlet的url 任意的 -->
<url-pattern>/hiveview</url-pattern>
</servlet-mapping>
3,啓動tomcat服務器在瀏覽器上輸入訪問地址:
http://localhost:8080/test/hiveview
※ 第二種實現方式 (繼承GenericServlet)
1,新建MyGenericServlet類
/**
* 這是第二種開發servlet的方法(繼承GenericServlet)
*
*/
public class MyGenericServlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
PrintWriter printWriter = res.getWriter();
printWriter.write("hello word");
}
}
2,在web.xlm配置servlet映射關係
<servlet>
<!-- 給你的servlet任意取名 -->
<servlet-name>MyGenericServlet</servlet-name>
<!-- 指明servlet的路徑 包名+路徑 -->
<servlet-class>com.hiveview.test.MyGenericServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 給你的servlet任意取名 -->
<servlet-name>MyGenericServlet</servlet-name>
<!-- 在瀏覽器上輸入訪問該servlet的url 任意的 -->
<url-pattern>/MyGenericServlet</url-pattern>
</servlet-mapping>
<servlet>
3,啓動tomcat服務器在瀏覽器輸入訪問路徑:
http://localhost:8080/test/MyGenericServlet
※ 第三種實現方式(繼承HttpServlet)
1,新建類 MyHttpServlet
/**
* 這是第三種開發servlet方法(通過繼承httpServlet)
*
*/
public class MyHttpServlet extends HttpServlet {
// 處理get請求
// req:用於獲得客戶端(瀏覽器)的信息
// res:用戶向客戶端(瀏覽器)返回信息
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
// 處理post請求
// req:用於獲得客戶端(瀏覽器)的信息
// res:用戶向客戶端(瀏覽器)返回信息
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.write("hello word");
}
}
2,在web.xml配置映射信息
<servlet>
<!-- 給你的servlet任意取名 -->
<servlet-name>MyHttpServlet</servlet-name>
<!-- 指明servlet的路徑 包名+路徑 -->
<servlet-class>com.hiveview.test.MyHttpServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 給你的servlet任意取名 -->
<servlet-name>MyHttpServlet</servlet-name>
<!-- 在瀏覽器上輸入訪問該servlet的url 任意的 -->
<url-pattern>/MyHttpServlet</url-pattern>
</servlet-mapping>
3,啓動tomcat服務器在瀏覽器輸入訪問地址:
http://localhost:8080/test/MyHttpServlet
3,get提交和post提交區別
- get安全性小於post因爲get會把訪問信息暴露在瀏覽器地址欄。
- get提交內容信息一般不要大於2k,post提交內容一般不要大於64k。
- 訪問速度get大於post。
- get可以保留uri中的參數便於保留。