<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # Servlet是什么 Servlet 運行在服務端的Java小程序,是sun公司提供一套規范(接口),用來處理客戶端請求、響應給瀏覽器的動態資源。但servlet的實質就是java代碼,通過java的API 動態的向客戶端輸出內容 servlet規范:包含三個技術點 1. servlet技術 2. filter技術---過濾器 3. listener技術---監聽器 # 創建步驟 創建一個類實現servlet接口 在service中處理請求 在web.xml中配置servlet ![](https://box.kancloud.cn/6753cca9be820761afdabdba9a78bce1_364x196.png) 缺省Servlet 可以將url-pattern配置一個/,代表該servlet是缺省的servlet 什么是缺省的servlet? 當你訪問資源地址所有的servlet都不匹配時 , 缺省的servlet負責處理 ~~~ //配置servlet在服務器中的信息 <servlet> <servlet-name>簡單類名</servlet-name> <servlet-class>全類名</servlet-class> <init-param> <param-name>url</param-name> <param-value>jdbc:mysql:///mydb</param-value> </init-param> <!-- servlet在啟動的時候創建對象,里面數字代表優先級,越小優先級越大 --> <!-- 指定servlet創建的時機 1. 第一次訪問時,創建,那么值為負數 2. 服務器啟動時創建,那么值為0或正整數 --> <load-on-startup>3</load-on-startup> </servlet> //配置瀏覽器訪問servlet時的路徑 <servlet-mapping> <servlet-name>簡單類名</servlet-name> <url-pattern>/自己定義url</url-pattern> </servlet-mapping> ~~~ 歡迎頁面 ![](https://box.kancloud.cn/85ce14a02afcfc47595ebeed008c9089_336x158.png) # 獲取配置 服務器再調用init方法的時候會傳入一個ServletConfig * 獲取:服務器創建傳入,可以直接使用 * 代表:Servlet的配置信息,每個Servlet都有唯一的一個ServletConfig對象 * 作用: 1. 獲取Servlet的別名,servlet-name 2. 獲取Servlet自定義的配置參數 3. 獲取全局上下文(服務器啟動時會為每個項目創建唯一一個對象代表這個項目),所有servlet獲取的都是同一個全局上下文(ApplicationContext) ~~~ <servlet> <servlet-name>InfoServlet</servlet-name> <servlet-class>com.jdxia.InfoServlet</servlet-class> <!-- 一個init-param代表一個初始化參數 --> <init-param> <param-name>username</param-name> <param-value>root</param-value> </init-param> <init-param> <param-name>pwd</param-name> <param-value>123</param-value> </init-param> </servlet> ~~~ ~~~ @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("---init方法"); //獲取servlet的別名 System.out.println(servletConfig.getServletName()); // 得到指定的初始化參數 //獲取自定義初始化參數,根據key System.out.println(servletConfig.getInitParameter("username ")); //獲取全局上下文 ServletContext context = servletConfig.getServletContext(); System.out.println(context); } ~~~ ~~~ // 得到所有的初始化參數 Enumeration<String> e = this.getServletConfig().getInitParameterNames(); while(e.hasMoreElements()) { String name = e.nextElement(); String value1 = this.getServletConfig().getInitParameter(name); System.out.println(name+"="+value1); } ~~~ # idea配置 **創建并設置javaweb工程** ![](https://img.kancloud.cn/52/5f/525f6d8a52da98ad829767768cd53981_751x734.png) 創建完成后工程結構如下: ![](https://img.kancloud.cn/b5/f8/b5f8d1af3d2a84eb24eafa3e8976c3bc_354x196.png) **Web工程設置** 1. 在WEB-INF 目錄下點擊右鍵,`New --> Directory`,創建 classes 和 lib 兩個目錄 ![](https://img.kancloud.cn/e9/de/e9de79246c1b7aa03c3ebec7ca3fa18a_156x122.png) classes目錄用于存放編譯后的class文件,lib用于存放依賴的jar包 2. `File --> Project Structure...`,進入 `Project Structure`窗口,點擊 `Modules -->` 選中項目`“JavaWeb” -->` 切換到 Paths 選項卡 --> 勾選 “Use module compile output path”,將 “Output path” 和 “Test output path” 都改為之前創建的classes目錄 ![](https://img.kancloud.cn/ad/5f/ad5fec9bb34c3ab450c7ed1c6a0a2999_808x335.png) 即將后面編譯的class文件默認生成到classes目錄下 3. 點擊 `Modules -->` 選中項目`“JavaWeb” --> `切換到 Dependencies 選項卡 `-->` 點擊右邊的`“+”`,選擇 `“JARs or directories...”`,選擇創建的lib目錄 ![](https://img.kancloud.cn/5e/ca/5eca01af123a8da7e464667c438a3141_855x134.png) ![](https://img.kancloud.cn/5d/47/5d470fe62b49ba47bdb7888cea0446c8_614x525.png) 選擇`Jar Directory` ![](https://img.kancloud.cn/8e/39/8e39e513216325505bab8ec10099253e_377x211.png) ![](https://img.kancloud.cn/fa/81/fa81ac3e61cb9a31bcd6f5e04eb77a01_693x266.png) 4. 配置打包方式Artifacts:點擊 Artifacts選項卡,IDEA會為該項目自動創建一個名為“JavaWeb:war exploded”的打包方式,表示 打包成war包,并且是文件展開性的,輸出路徑為當前項目下的 out 文件夾,保持默認即可。另外勾選下“Build on make”,表示編譯的時候就打包部署,勾選“Show content of elements”,表示顯示詳細的內容列表。 ![](https://img.kancloud.cn/84/4d/844d9d462f531f9e2cbac4d9c7845ba3_905x310.png) **Tomcat配置** 1. `Run -> Edit Configurations`,進入`“Run Configurations”`窗口,點擊`"+"-> Tomcat Server -> Local`,創建一個新的Tomcat容器 ![](https://img.kancloud.cn/3b/01/3b01bdf3df4f36b11af0a7dc022679a1_434x599.png) ![](https://img.kancloud.cn/b1/88/b188ae77e014766e2dc626bac189d7fc_764x249.png) 2. 在"Name"處輸入新的服務名,點擊“Application server”后面的“Configure...”,彈出Tomcat Server窗口,選擇本地安裝的Tomcat目錄 -> OK ![](https://img.kancloud.cn/4e/47/4e47e78abaa523daab2dc562de1bad66_443x535.png) ![](https://img.kancloud.cn/87/1c/871cecf25857a2c9f91934b5ca3c552c_733x309.png) 配置的時候這邊要這樣配置 ![](https://box.kancloud.cn/e0d07691451908b42a7930e2d0983d16_1058x248.png) **JavaWeb測試** 1. `Run -> Edit Configurations`,進入“Run Configurations”窗口,選擇之前配置好的Tomcat,點擊“Deployment”選項卡,點擊`“+” -> “Artifact”->` 選擇創建的web項目的Artifact... 修改`“Application context”-> Apply -> OK ` ![](https://img.kancloud.cn/66/0e/660e653f4ba372f618da24980ba768b8_721x177.png) debug啟動起來 ![](https://img.kancloud.cn/a3/2e/a32eff89bd3aac69c0be3f8805b5c942_858x594.png) # idea和tomcat 啟動的時候,在server里面有個 ~~~ catalina.base=/Users/jdxia/Library/Caches/IntelliJIdea2019.2/tomcat/Unnamed_sjava ~~~ 搜索catalina.base會看到個路徑,就是你項目運行的路徑 conf文件夾下是配置 比如server.xml就是端口配置 `Catalina/ip/`下面有個配置文件是項目部署路徑 ~~~ <Context path="/sjava_war_exploded" docBase="/Users/jdxia/Desktop/study/sjava/out/artifacts/sjava_war_exploded" /> ~~~ 工作空間項目和tomcat部署的web項目是不一樣的. tomcat部署的web項目是"真正訪問的",對應著"工作空間項目"的web目錄下所有的資源. `WEB-INF`目錄下資源不能被瀏覽器直接訪問 # 注解配置 在類上使用`@WebServlet(urlPatterns = "/xx")`注解進行配置,可以不創建web.xml ~~~ @WebServlet({"/dd1", "/dd2", "/dd3/d1"}) ~~~ 路徑定義規則 ~~~ /xx /xx/x *.do ~~~ ~~~ @WebServlet(urlPatterns = "/web1") public class ServletDemo1 implements Servlet { ~~~ 重啟下看一下
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看