servelet基础
1.1?????????? servlet簡介
Java Servlet 是運行在 Web 服務器或應用服務器上的程序。她是一個瀏覽器和服務器之間的中間層。程序員開發程序,實現servlet的接口。Servlet接收到用戶請求,調用對應接口,返回響應。
1.2?????????? Idea搭建servlet開發過程
https://www.cnblogs.com/javabg/p/7976977.html
(1)??? 安裝idea,jdk,tomcat;設置好環境變量;
(2)??? 新建項目工程new-project-java Enterprise-Web Application;
(3)??? 設置工程名稱,也就是程序的根目錄;
(4)??? 創建并設置生成輸出目錄;在WEB-INF 目錄下點擊右鍵,New --> Directory,創建 classes 和 lib 兩個目錄;File --> Project Structure...,進入 Project Structure窗口,點擊 Modules --> 選中項目“JavaWeb” --> 切換到 Paths 選項卡 --> 勾選 “Use module compile output path”,將 “Output path” 和 “Test output path” 都改為之前創建的classes目錄;點擊 Modules --> 選中項目“JavaWeb” --> 切換到 Dependencies 選項卡 --> 點擊右邊的“+”,選擇 “JARs or directories...”,選擇創建的lib目錄;
(5)??? File --> Project Structure- Artifacts設置打包輸出格式和路徑;
(6)??? Run -> Edit Configurations,進入“Run Configurations”窗口,點擊"+"-> Tomcat Server -> Local;配置好tomcat服務器;點擊server設置端口;點擊deployment設置程序的Application context,這個是本工程的根目錄。在瀏覽器中訪問的時候,通過這個路徑訪問路徑WebHello下的類名HelloWorld ,url為http://localhost:8080/WebHello/HelloWorld
(7)??? 新建Java文件,實現HttpServlet類,實現init接口和destroy接口,重寫doGet方法。
import javax.servlet.ServletException;?
import javax.servlet.http.HttpServlet;?
import javax.servlet.http.HttpServletRequest;?
import javax.servlet.http.HttpServletResponse;?
import java.io.IOException;?
import java.io.PrintWriter;?
?
public class HelloWorld extends HttpServlet {?
private String message;?
?
??? @Override?
??? public void init() throws ServletException {?
??? message = "Hello world, this message is from servlet!";?
??? }?
?
??? @Override?
??? protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {?
??????? //設置響應內容類型?
??? resp.setContentType("text/html");?
?
??????? //設置邏輯實現?
??? PrintWriter out = resp.getWriter();?
??? out.println("<h1>" + message + "</h1>");?
??? }?
?
??? @Override?
??? public void destroy() {?
??? super.destroy();?
??? }?
}?
(8)??? 配置web.xml文件,在其中添加名稱
部署servlet
方法一:
??? 在WEB-INF目錄下web.xml文件的<web-app>標簽中添加如下內容:
?<servlet>?
??? <servlet-name>HelloWorld</servlet-name>?
??? <servlet-class>HelloWorld</servlet-class>?
</servlet>? ??
<servlet-mapping>?
??? <servlet-name>HelloWorld</servlet-name>? 根據名稱在<servlet>找到servlet-class類HelloWorld
??? <url-pattern>/HelloWorld</url-pattern>? //瀏覽器中輸入這個
</servlet-mapping>?
在HelloWorld文件的類前面加上:@WebServlet("/HelloWorld")
(9)??? 編譯運行程序,idea就會將程序部署到tomcat服務器;可以在瀏覽器中輸入http://localhost:8080/HelloWorld
(10)瀏覽器發送請求,容器接收根據<url-pattern>找到<servlet-name>HelloWorld類名,再由HelloWorld類名找到<servlet-class>HelloWorld,調用接口返回響應。
?
1.3?????????? Servelet開發步驟和生命周期
(1)??? 程序員開發程序,實現servelet的init和destroy接口 。重寫servlet的 doGet、doPost、doPut、doDelete四個方法;
(2)??? 部署到tomcat等服務器,啟動servelet程序;
(3)??? 瀏覽器第一次發出瀏覽請求;
(4)??? Servelet接收到請求,第一次也是唯一一次創建servelet實例;
(5)??? Web服務器啟動一個新的線程,調用servelet的service方法;
(6)??? Service根據請求類型,調用doGet、doPost、doPut、doDelete Servlet方法,返回響應到瀏覽器。
(7)??? 瀏覽器第二次發出請求;
(8)??? 不在創建servelet對象,只是啟動新線程執行請求,返回響應;
(9)??? 服務器停止,Web服務器執行destroy()方法關閉數據庫連接、停止后臺線程、把 Cookie 列表或點擊計數器寫入到磁盤,并執行其他類似的清理活動。
(10)銷毀servelet對象。
1.4?????????? Web.xml的作用
一個web中可以沒有web.xml文件,也就是說,web.xml文件并不是web工程必須的。 web.xml文件是用來初始化配置信息:比如Welcome頁面、servlet、servlet-mapping、filter、listener、啟動加載級別等。當你的web工程沒用到這些時,你可以不用web.xml文件來配置你的Application。
每個web.xml文件的根元素為<web-app>中,必須標明這個web.xml使用的是哪個模式文件。如:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>
web.xml的模式文件中定義的標簽并不是定死的,模式文件也是可以改變的,一般來說,隨著web.mxl模式文件的版本升級,里面定義的功能會越來越復雜,標簽元素的種類肯定也會越來越多,但有些不是很常用的,我們只需記住一些常用的并知道怎么配置就可以了。
下面列出web.xml我們常用的一些標簽元素及其功能:
(1)指定歡迎頁面
<welcome-file-list>
? <welcome-file-list>
??? <welcome-file>index.jsp</welcome-file>
??? <welcome-file>index1.jsp</welcome-file>
? </welcome-file-list>
PS:指定了2個歡迎頁面,顯示時按順序從第一個找起,如果第一個存在,就顯示第一個,后面的不起作用。如果第一個不存在,就找第二個,以此類推。
(2)命名與定制URL
我們可以為Servlet和JSP文件命名并定制URL,其中定制URL是依賴命名的,命名必須在定制URL前。下面拿serlet來舉例:
1)、為Servlet命名:
<servlet>
??? <servlet-name>servlet1</servlet-name>
??? <servlet-class>org.whatisjava.TestServlet</servlet-class>
</servlet>
2)、為Servlet定制URL、
<servlet-mapping>
??? <servlet-name>servlet1</servlet-name>
??? <url-pattern>*.do</url-pattern>
</servlet-mapping>
在瀏覽器上根目錄后面輸入url,會根據url找到<url-pattern>,根據<url-pattern>找到對應的<servlet-name>,根據<servlet-name>找到對應的類,然后進行接口調用。返回結果。
(3)定制初始化參數
可以定制servlet、JSP、Context的初始化參數,然后可以再servlet、JSP、Context中獲取這些參數值。
下面用servlet來舉例:
<servlet>
??? <servlet-name>servlet1</servlet-name>
??? <servlet-class>org.whatisjava.TestServlet</servlet-class>
??? <init-param>
????????? <param-name>userName</param-name>
????????? <param-value>Daniel</param-value>
??? </init-param>
??? <init-param>
????????? <param-name>E-mail</param-name>
????????? <param-value>125485762@qq.com</param-value>
??? </init-param>
</servlet>
經過上面的配置,在servlet中能夠調用getServletConfig().getInitParameter("param1")獲得參數名對應的值。
(1)?? 指定錯誤處理頁面
可以通過“異常類型”或“錯誤碼”來指定錯誤處理頁面。
<error-page>
??? <error-code>404</error-code>
??? <location>/error404.jsp</location>
</error-page>
-----------------------------
<error-page>
??? <exception-type>java.lang.Exception<exception-type>
??? <location>/exception.jsp<location>
</error-page>
(2)?? 設置過濾器
比如設置一個編碼過濾器,過濾所有資源
<filter>
??? <filter-name>XXXCharaSetFilter</filter-name>
??? <filter-class>net.test.CharSetFilter</filter-class>
</filter>
<filter-mapping>
??? <filter-name>XXXCharaSetFilter</filter-name>
??? <url-pattern>/*</url-pattern>
</filter-mapping>
(3)?? 設置監聽器
<listener>
<listener-class>net.test.XXXLisenet</listener-class>
</listener>
(4)?? 設置會話(Session)過期時間
其中時間以分鐘為單位,假如設置60分鐘超時:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
除了這些標簽元素之外,還可以往web.xml中添加很多標簽元素,由于不常用省略。
1.5?????????? Web容器的加載過程
(1)啟動web項目后,web容器首先回去找web.xml文件,讀取<context-param>和<listener>兩個節點。
(2)容器會創建一個 ServletContext ( servlet 上下文),并將web.xml中的屬性設置到Context容器中。整個 web 項目的所有部分都將共享這個上下文。
(3)容器將<context-param>轉換為鍵值對,并交給 servletContext。因為listener, filter 等在初始化時會用到這些上下文中的信息,所以要先加載。
(4)容器創建<listener>中的類實例,創建監聽器。
(5)容器加載filter,創建過濾器, 要注意對應的filter-mapping一定要放在filter的后面。
(6)容器加載servlet,加載順序按照Load-on-startup 來執行,Load-on-startup是加載的優先級,大于等于0時加載,值越小的先加載。
?
?
?
自己編了一個股票監控軟件,有如下功能,有興趣的朋友可以下載;
(1)?? 個股監測。監測個股實時變化,可以監測個股大單交易、急速拉升和下降、主力入場和出場、股票最高點和最低點提醒。檢測到最高點、最低點、主力進場點、主力退場點、急速拉升點、急速下跌點,給出語音或者聲音提醒,不用再時刻看著大盤了,給你更多自由的時間;
(2)?? 大盤監測。監測大盤的走勢,采用上證、深證、創業三大指數的綜合指數作為大盤走勢。并實時監測大盤的最高點和最低點、中間的轉折點。
(3)?? 股票推薦。還能根據歷史數據長期或短期走勢進行分析,對股市3千多個股票進行分析對比,選出漲勢良好的股票,按照增長速度從大到小排序,推薦給你漲勢良好的股票;
下載地址:
1.0.3版本(修復大盤指數崩潰缺陷)下載地址:
鏈接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取碼:003h
更新鏈接:
https://www.cnblogs.com/bclshuai/p/10621613.html
轉載于:https://www.cnblogs.com/bclshuai/p/10509400.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的servelet基础的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: alfs学习笔记-自动化构建lfs系统
- 下一篇: alluxio源码解析-层次化存储(4)
