JavaWeb ——servlet學習1之servlet
servlet,HttpServlet對象
首先:servlet是單例多線程!
servlet是一種服務器端的應用程序,具有獨立於平臺和協議的特性,可以生成動態的web頁面。它擔當客戶請求(web瀏覽器或其他HTTP客戶程序)和服務器響應(HTTP服務器上的數據庫或應用程序)的中間層。
JSP是servlet的一種形式,每個JSP頁面實際上就是一個servlet實例——JSP頁面由servlet引擎轉換成servlet,servlet負責響應客戶請求。也就是說使用JSP實際上還是使用servlet,因爲web應用中每個JSP頁面都會由servlet容器生成servlet。
HttpServlet遵循HTTP協議,因此繼承HttpServlet的類也就遵循HTTP協議,一般用在BS架構中
jsp與servlet的區別與聯繫
區別聯繫
1、jsp經編譯後就變成了Servlet. (JSP的本質就是Servlet,JVM只能識別java的類,不能識別JSP的代碼,Web容器將JSP的代碼編譯成JVM能夠識別的java類)
2、jsp更擅長表現於頁面顯示,servlet更擅長於邏輯控制.
3、Servlet中沒有內置對象,Jsp中的內置對象都是必須通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到
4、Jsp是Servlet的一種簡化,使用Jsp只需要完成程序員需要輸出到客戶端的內容,Jsp中的Java腳本如何鑲嵌到一個類中,由Jsp容器完成。而Servlet則是個完整的Java類,這個類的Service方法用於生成對客戶端的響應。
5、JSP是Servlet技術的擴展,本質上就是Servlet的簡易方式。JSP編譯後是“類servlet”。
不同點
1、Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML裏分離開來。 而JSP的情況是Java和HTML可以組合成一個擴展名爲.jsp的文件。
2、JSP側重於視圖,Servlet主要用於控制邏輯
3、Servlet更多的是類似於一個Controller,用來做控制。
Servlet對象的生命週期
public class HelloServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
// 初次訪問,創建servlet實例的時候調用
}
@Override
public ServletConfig getServletConfig() {
// 非生命週期,返回Servlet信息,例如作者、版本等,注意此方法應該返回的是純文本,而不是任何標記語言。
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
// 只要客戶端來一個請求,那麼就執行這個方法
}
@Override
public String getServletInfo() {
// 非生命週期,返回init方法中傳入的ServletConfig,ServletConfig應該被保存在servlet實現類中的類級變量中。
return null;
}
@Override
public void destroy() {
// 銷燬的時候執行
}
}
servlet基礎配置
1、在WEB-INF下新建web.xml文件
2、配置servlet:
創建servlet標籤並設置他的名字、和對應的的映射的servlet對象
3、映射servlet-mapping:這裏是將我們的servlet和url地址進行綁定。
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
// 創建servlet 和 其映射的url
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
</web-app>