<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      返回頂部
      扶搖直上九萬里,展翅高飛豈可待。

      ServletDemo

      一 Servlet簡(jiǎn)介

      1.1 動(dòng)態(tài)資源和靜態(tài)資源

      靜態(tài)資源

      • 無需在程序運(yùn)行時(shí)通過代碼運(yùn)行生成的資源,在程序運(yùn)行之前就寫好的資源. 例如:html css js img ,音頻文件和視頻文件

      動(dòng)態(tài)資源

      • 需要在程序運(yùn)行時(shí)通過代碼運(yùn)行生成的資源,在程序運(yùn)行之前無法確定的數(shù)據(jù),運(yùn)行時(shí)動(dòng)態(tài)生成,例如Servlet,Thymeleaf ... ...
      • 動(dòng)態(tài)資源指的不是視圖上的動(dòng)畫效果或者是簡(jiǎn)單的人機(jī)交互效果

      生活舉例

      • 去蛋糕店買蛋糕
        • 直接買柜臺(tái)上已經(jīng)做好的 : 靜態(tài)資源
        • 和柜員說要求后現(xiàn)場(chǎng)制作 : 動(dòng)態(tài)資源

      1.2 Servlet簡(jiǎn)介

      Servlet (server applet) 是運(yùn)行在服務(wù)端(tomcat)的Java小程序,是sun公司提供一套定義動(dòng)態(tài)資源規(guī)范; 從代碼層面上來講Servlet就是一個(gè)接口

      • 用來接收、處理客戶端請(qǐng)求、響應(yīng)給瀏覽器的動(dòng)態(tài)資源。在整個(gè)Web應(yīng)用中,Servlet主要負(fù)責(zé)接收處理請(qǐng)求、協(xié)同調(diào)度功能以及響應(yīng)數(shù)據(jù)。我們可以把Servlet稱為Web應(yīng)用中的控制器

      宮爆雞丁.png

      • 不是所有的JAVA類都能用于處理客戶端請(qǐng)求,能處理客戶端請(qǐng)求并做出響應(yīng)的一套技術(shù)標(biāo)準(zhǔn)就是Servlet
      • Servlet是運(yùn)行在服務(wù)端的,所以 Servlet必須在WEB項(xiàng)目中開發(fā)且在Tomcat這樣的服務(wù)容器中運(yùn)行

      請(qǐng)求響應(yīng)與HttpServletRequest和HttpServletResponse之間的對(duì)應(yīng)關(guān)系

      請(qǐng)求和響應(yīng).png

      二 Servlet開發(fā)流程

      2.1 目標(biāo)

      校驗(yàn)注冊(cè)時(shí),用戶名是否被占用. 通過客戶端向一個(gè)Servlet發(fā)送請(qǐng)求,攜帶username,如果用戶名是'atguigu',則向客戶端響應(yīng) NO,如果是其他,響應(yīng)YES

      super.service(req, res);
      

      2.2 開發(fā)過程

      步驟1 開發(fā)一個(gè)web類型的module

      右擊點(diǎn)擊添加框架支持點(diǎn)擊javaweb 注意版本要在5 1

      web框架1.png

      如果不是添加Tomcat依賴

      TomCat依賴.png

      項(xiàng)目結(jié)構(gòu) 1

      項(xiàng)目依賴.png

      步驟2 開發(fā)一個(gè)UserServlet

      public class UserServlet  extends HttpServlet {
          @Override
          protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              // 獲取請(qǐng)求中的參數(shù)
              String username = req.getParameter("username");
              if("atguigu".equals(username)){
                  //通過響應(yīng)對(duì)象響應(yīng)信息
                  resp.getWriter().write("NO");
              }else{
                  resp.getWriter().write("YES");
              }
      
          }
      }
      
      • 自定義一個(gè)類,要繼承HttpServlet類
      • 重寫service方法,該方法主要就是用于處理用戶請(qǐng)求的服務(wù)方法
      • HttpServletRequest 代表請(qǐng)求對(duì)象,是有請(qǐng)求報(bào)文經(jīng)過tomcat轉(zhuǎn)換而來的,通過該對(duì)象可以獲取請(qǐng)求中的信息
      • HttpServletResponse 代表響應(yīng)對(duì)象,該對(duì)象會(huì)被tomcat轉(zhuǎn)換為響應(yīng)的報(bào)文,通過該對(duì)象可以設(shè)置響應(yīng)中的信息
      • Servlet對(duì)象的生命周期(創(chuàng)建,初始化,處理服務(wù),銷毀)是由tomcat管理的,無需我們自己new
      • HttpServletRequest HttpServletResponse 兩個(gè)對(duì)象也是有tomcat負(fù)責(zé)轉(zhuǎn)換,在調(diào)用service方法時(shí)傳入給我們用的

      步驟3 在web.xml為UseServlet配置請(qǐng)求的映射路徑

      1 個(gè)serverlet標(biāo)簽可以對(duì)應(yīng)多個(gè)mappeing標(biāo)簽

        <servlet>
              <servlet-name>servlet1</servlet-name>
              <servlet-class>com.zxy.Servlet1</servlet-class>
          </servlet>
          <servlet-mapping>
              <servlet-name>servlet1</servlet-name>
              <url-pattern>/s1</url-pattern>
          </servlet-mapping>
      
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
               version="5.0">
      
          <servlet>
              <!--給UserServlet起一個(gè)別名-->
              <servlet-name>userServlet</servlet-name>
              <!--    userServlet起別名-->
              <servlet-class>com.atguigu.servlet.UserServlet</servlet-class>
          </servlet>
      
      
          <servlet-mapping>
              <!--關(guān)聯(lián)別名和映射路徑-->
              <servlet-name>userServlet</servlet-name>
              <!--可以為一個(gè)Servlet匹配多個(gè)不同的映射路徑,但是不同的Servlet不能使用相同的url-pattern-->
              <url-pattern>/userServlet</url-pattern>
              
             <!-- <url-pattern>/userServlet2</url-pattern>-->
              <!--
                  /        表示通配所有資源,不包括jsp文件
                  /*       表示通配所有資源,包括jsp文件
                  /a/*     匹配所有以a前綴的映射路徑
                  *.action 匹配所有以action為后綴的映射路徑
              -->
             <!-- <url-pattern>/*</url-pattern>-->
              <!--     對(duì)應(yīng)form表單action里面的內(nèi)容 action="userServlet";-->
          </servlet-mapping>
      
      </web-app>
      
      • Servlet并不是文件系統(tǒng)中實(shí)際存在的文件或者目錄,所以為了能夠請(qǐng)求到該資源,我們需要為其配置映射路徑
      • servlet的請(qǐng)求映射路徑配置在web.xml中
      • servlet-name作為servlet的別名,可以自己隨意定義,見名知意就好
      • url-pattern標(biāo)簽用于定義Servlet的請(qǐng)求映射路徑
      • 一個(gè)servlet可以對(duì)應(yīng)多個(gè)不同的url-pattern
      • 多個(gè)servlet不能使用相同的url-pattern
      • url-pattern中可以使用一些通配寫法
        • / 表示通配所有資源,不包括jsp文件
        • /* 表示通配所有資源,包括jsp文件
        • /a/* 匹配所有以a前綴的映射路徑
        • *.action 匹配所有以action為后綴的映射路徑

      步驟4 開發(fā)一個(gè)form表單,向servlet發(fā)送一個(gè)get請(qǐng)求并攜帶username參數(shù)

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
      </head>
      <body>
          <form action="userServlet">
              請(qǐng)輸入用戶名:<input type="text" name="username" /> <br>
              <input type="submit" value="校驗(yàn)">
          </form>
      </body>
      </html>
      

      先部署到Tomcat服務(wù)器上在啟動(dòng)項(xiàng)目,訪問index.html ,提交表單測(cè)試

      下面的應(yīng)用上下文可以修改訪問路徑 默認(rèn)訪問index.html

      部署項(xiàng)目到Tomcat服務(wù)器.png

      • 使用debug模式運(yùn)行測(cè)試

      如果在extends HttpServlet 在實(shí)現(xiàn)service方法

      沒有把默認(rèn)的super.service(req, resp);給刪除掉就會(huì)出現(xiàn)405報(bào)錯(cuò)

      映射關(guān)系圖

      映射關(guān)系圖.png

      //   1 servlet-api.jar 導(dǎo)入問題  java web項(xiàng)目中打包和構(gòu)建無需攜帶這個(gè)jar包,有服務(wù)商Tomcat提供
      //   2 Content-Type響應(yīng)頭的文件類型
      //   MIME 媒體類型,文件類型,響應(yīng)的數(shù)據(jù)類型
      //   MIME 類型用于告訴客戶端響應(yīng)的數(shù)據(jù)是什么類型,客戶端用什么方式類解析響應(yīng)體
      

      部署項(xiàng)目到Tomcat服務(wù)器.png

      三 Servlet注解方式配置

      3.1 @WebServlet注解源碼

      官方JAVAEEAPI文檔下載地址

      package jakarta.servlet.annotation;
      
      import java.lang.annotation.Documented;
      import java.lang.annotation.ElementType;
      import java.lang.annotation.Retention;
      import java.lang.annotation.RetentionPolicy;
      import java.lang.annotation.Target;
      
      /**
       * @since Servlet 3.0
       */
      @Target({ ElementType.TYPE })
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      public @interface WebServlet {
      
          /**
           * The name of the servlet
           * 相當(dāng)于 servlet-name
           * @return the name of the servlet
           */
          String name() default "";
      
          /**
           * The URL patterns of the servlet
           * 如果只配置一個(gè)url-pattern ,則通過該屬性即可,和urlPatterns屬性互斥
           * @return the URL patterns of the servlet
           */
          String[] value() default {};
      
          /**
           * The URL patterns of the servlet
           * 如果要配置多個(gè)url-pattern ,需要通過該屬性,和value屬性互斥
           * @return the URL patterns of the servlet
           */
          String[] urlPatterns() default {};
      
          /**
           * The load-on-startup order of the servlet
           * 配置Servlet是否在項(xiàng)目加載時(shí)實(shí)例化
           * @return the load-on-startup order of the servlet
           */
          int loadOnStartup() default -1;
      
          /**
           * The init parameters of the servlet
           * 配置初始化參數(shù)
           * @return the init parameters of the servlet
           */
          WebInitParam[] initParams() default {};
      
          /**
           * Declares whether the servlet supports asynchronous operation mode.
           *
           * @return {@code true} if the servlet supports asynchronous operation mode
           * @see jakarta.servlet.ServletRequest#startAsync
           * @see jakarta.servlet.ServletRequest#startAsync( jakarta.servlet.ServletRequest,jakarta.servlet.ServletResponse)
           */
          boolean asyncSupported() default false;
      
          /**
           * The small-icon of the servlet
           *
           * @return the small-icon of the servlet
           */
          String smallIcon() default "";
      
          /**
           * The large-icon of the servlet
           *
           * @return the large-icon of the servlet
           */
          String largeIcon() default "";
      
          /**
           * The description of the servlet
           *
           * @return the description of the servlet
           */
          String description() default "";
      
          /**
           * The display name of the servlet
           *
           * @return the display name of the servlet
           */
          String displayName() default "";
      
      }
      
      

      3.2 @WebServlet注解使用

      使用注解了就不能用xml配置

      使用@WebServlet注解替換Servlet配置

      // name是起別名
      @WebServlet(
              name = "userServlet",
              //value = "/user",
              urlPatterns = {"/userServlet1","/userServlet2","/userServlet"},
              initParams = {@WebInitParam(name = "encoding",value = "UTF-8")},
              loadOnStartup = 6
      )
      public class UserServlet  extends HttpServlet {
          @Override
          protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              String encoding = getServletConfig().getInitParameter("encoding");
              System.out.println(encoding);
              // 獲取請(qǐng)求中的參數(shù)
              String username = req.getParameter("username");
              if("atguigu".equals(username)){
                  //通過響應(yīng)對(duì)象響應(yīng)信息
                  resp.getWriter().write("NO");
              }else{
                  resp.getWriter().write("YES");
              }
          }
      }
      

      posted @ 2025-04-26 00:12  朱嘯毅  閱讀(33)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 动漫av网站免费观看| 亚洲aⅴ男人的天堂在线观看| 97久久综合亚洲色hezyo| 欧美人成精品网站播放| 成人午夜大片免费看爽爽爽| 色综合AV综合无码综合网站| 国产一区二区不卡91| 影音先锋大黄瓜视频| 国产久9视频这里只有精品| 精品国产三级a∨在线欧美| 九九热在线精品视频99| 日韩一区二区在线看精品| 成人免费在线播放av| 日本一区二区三区专线| 最新精品国偷自产在线美女足| 成人免费av在线观看| 陵川县| 狠狠躁天天躁中文字幕无码| 日韩精品一区二区三区日韩 | 精品一区二区三区四区五区| 精品中文人妻中文字幕| 一区二区三区在线 | 欧洲 | 久久激情影院| 国内精品久久久久影院网站| 午夜福利理论片高清在线| 国语自产精品视频在线看| 普宁市| 熟女精品色一区二区三区| 免费无码肉片在线观看| 无码专区—va亚洲v天堂麻豆| 国产日韩精品免费二三氏| 国模肉肉视频一区二区三区| 色色97| 精品久久久久久无码人妻蜜桃 | 成在人线AV无码免观看| 沧州市| 国产精品亚洲av三区色| 日韩人妻系列无码专区| 晋中市| 久久精品国产久精国产| 红杏av在线dvd综合|