国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java后端01(初識servlet)

這篇具有很好參考價值的文章主要介紹了Java后端01(初識servlet)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

servlet

添加依賴坐標(biāo)(maven)

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
</dependency>

小測試

? 所有請求都會固定攜帶一個參數(shù)(method)代表請求的方式(GET,POST,PUT,DELETE,OPTION)

public class HelloServlet extends HttpServlet {
    @Override
    // req 對應(yīng)的是請求對象,代表的是請求
    // resp 對應(yīng)的是響應(yīng)對象,代表的是響應(yīng)
    // Java依然按照面向?qū)ο蟮脑O(shè)計(jì)方式,開發(fā)者如果想操作請求和響應(yīng),只需要使用對應(yīng)的對象調(diào)用方法即可,對象實(shí)例化也是由 tomcat 自行完成
    
    // 此方法表示處理的是 get 請求,如果發(fā)送的 post 請求,那么網(wǎng)頁就會報錯405
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 通過響應(yīng)對象,設(shè)置響應(yīng)內(nèi)容
        // 準(zhǔn)備響應(yīng)內(nèi)容
        String content = "This is a text content!";
        // 獲取響應(yīng)對應(yīng)的輸出流,和 socket 變成的流的獲取類似
        PrintWriter printWriter = resp.getWriter();
        // 將數(shù)據(jù)讀取到輸出流中
        printWriter.write(content);
        // 當(dāng)doGet方法運(yùn)行完成之后,響應(yīng)會被 tomcat 自動返回給客戶端
    }
}

// 在 web.xml 文件中配置路由
<servlet>
	<servlet-name>HelloServlet</servlet-name>
	<servlet-class>com.iweb.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>HelloServlet</servlet-name>
	<url-pattern>/hello</url-pattern>
</servlet-mapping>

一個post請求的全流程

<!--頁面代碼-->
<body>
<!--action:點(diǎn)擊提交按鈕的時候所發(fā)送的請求路徑-->
<!--method:請求方式,如果不寫默認(rèn)get-->
    <form action="login" method="post">
      用戶名:<input type="text" name="username"><br>
      密碼:<input type="password" name="password"><br>
      <input type="submit" value="提交">
    </form>
</body>
// 服務(wù)端代碼
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 中文處理:在請求的參數(shù)接受之前,設(shè)置請求中的參數(shù)的字符串
        req.setCharacterEncoding("UTF-8");
        // 借助請求對象,獲取form表單中所對應(yīng)的參數(shù)
        // getParameter對應(yīng)的參數(shù),是form表單中input所對應(yīng)的name屬性
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // req.getParameterValues("name") 獲取多個值
        System.out.println(username + " : " + password);
        String html = "";
        if("admin".equals(username)&& "123".equals(password)){
            html = "<div style='color:red'>login success!</div>";
        }else{
            html = "<div style='color:green'>login failed!</div>";
        }
        // 在響應(yīng)返回之前,設(shè)置響應(yīng)中的內(nèi)容類型和指定字符集編碼
        // 1. 在Java層面將想用中的字符設(shè)置為UTF-8編碼
        // 2. 通知瀏覽器使用UTF-8編碼顯示數(shù)據(jù)
        resp.setContentType("text/html;charset=UTF-8");
        // 響應(yīng)返回
        resp.getWriter().write(html);
    }
}
<!--web.xml-->
<servlet>
	<servlet-name>LoginServlet</servlet-name>
	<servlet-class>com.iweb.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>LoginServlet</servlet-name>
	<url-pattern>/login</url-pattern>
</servlet-mapping>

Get請求的幾種情況

  1. 瀏覽器地址欄輸入地址訪問
  2. 通過超鏈接點(diǎn)擊發(fā)送的請求方式
  3. form表單的默認(rèn)提交方式
  4. ajax指定get方式發(fā)送的請求

Post請求方式

  1. form表單指定post方式提交
  2. ajax指定post方式發(fā)送請求

POST 和 GET 的區(qū)別

  1. get 請求匹配 doGet 方法,post請求匹配 doPost 方法,如果不匹配,會出現(xiàn)405
  2. post 請求中如果攜帶參數(shù),參數(shù)不會出現(xiàn)在 url 中,get 請求中如果攜帶參數(shù),參數(shù)會出現(xiàn)在 url 中
  3. get 請求中參數(shù)大小是有限的,過大的參數(shù)無法攜帶,port 請求中參數(shù)大小遠(yuǎn)大于 get 方式

servlet生命周期

  1. 實(shí)例化(特性:延遲加載,單例)

    ? tomcat 運(yùn)行的時候,servlet 并不會立刻實(shí)例化,直到有用戶發(fā)送請求,并且根據(jù) web.xml 中所配置的映射關(guān)系,找到了對應(yīng)的 servlet 類的類路徑的時候,tomcat 這個時候會利用反射創(chuàng)建出對應(yīng) servlet 類的對象,為了保證效率,servlet類是單例的。

  2. 初始化

    ? init方法來自于從HttpServlet 的繼承,該方法是成員方法,所以一定是在實(shí)例化之后調(diào)用的,會在構(gòu)造方法運(yùn)行之后運(yùn)行,但是無論訪問多少次,Servlet init,只會初始化一次。

  3. 提供服務(wù)

    ? 正常執(zhí)行 Service 方法,開發(fā)者在方法中借助 req 和 resp 進(jìn)行請求和響應(yīng)的處理,方法運(yùn)行結(jié)束之后,響應(yīng)自動返回

  4. 銷毀

    ? tomcat 服務(wù)器關(guān)閉的時候,destory 方法被調(diào)用。這個過程不是很直觀的能被觀察到

  5. 被回收

    ? servlet 被銷毀之后,不再有引用存儲實(shí)例的內(nèi)存地址,這個時候,servlet實(shí)例就滿足了被 GC 回收的條件

// 重寫方法觀察生命周期
public class HelloServlet extends HttpServlet {

    public HelloServlet() {
        System.out.println("HelloServlet -> HelloServlet()");
    }

    @Override
    public void init() throws ServletException {
        System.out.println("HelloServlet -> init()");
    }

    @Override
    public void destroy() {
        System.out.println("HelloServlet -> destroy()");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 通過響應(yīng)對象,設(shè)置響應(yīng)內(nèi)容
        // 準(zhǔn)備響應(yīng)內(nèi)容
        String content = "This is a text content!";
        // 獲取響應(yīng)對應(yīng)的輸出流,和 socket 變成的流的獲取類似
        PrintWriter printWriter = resp.getWriter();
        // 將數(shù)據(jù)讀取到輸出流中
        printWriter.write(content);
        // 當(dāng)doGet方法運(yùn)行完成之后,響應(yīng)會被 tomcat 自動返回給客戶端

        // 定義 url 映射,讓服務(wù)器知道客戶端發(fā)送的哪一個請求,會由當(dāng)前 servlet 處理
    }
}

CDN快速構(gòu)建前端頁面

布局網(wǎng)站:https://www.runoob.com/try/bootstrap/layoutit/

<link  rel="stylesheet">
<script src="http://cdn.bootcss.com/jquery/2.1.4/jquery.min.js"></script>
<script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

頁面跳轉(zhuǎn)(至靜態(tài)頁面)

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 模擬頁面跳轉(zhuǎn)
    // 通過轉(zhuǎn)發(fā)方式跳轉(zhuǎn)到指定頁面(或者發(fā)送指定請求)
    req.getRequestDispatcher("頁面文件路徑").forward(req,resp);
    // 通過重定向方式跳轉(zhuǎn)到指定頁面(或者發(fā)送指定請求)
    req.sendRedicrect("頁面文件路徑");
}

轉(zhuǎn)發(fā)和重定向的區(qū)別:轉(zhuǎn)發(fā)是一次請求(將請求資源直接發(fā)送給客戶端),重定向是兩次請求(通知客戶端去訪問資源),如果用戶訪問的資源不可以被直接獲取,那么重定向可以判斷該用戶有沒有權(quán)限獲得這些資源,轉(zhuǎn)發(fā)并不可以,轉(zhuǎn)發(fā)則是可以保護(hù)頁面資源,因?yàn)椴恢涝擁撁媸菑暮味鴣?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-601981.html

servlet自啟動(通過注解去啟動servlet)

? 一般在自啟動的servlet類中配置init方法,可以在tomcat啟動的時候,該servlet類會自動被實(shí)例化以及初始化,但是并不會調(diào)用service文章來源地址http://www.zghlxwxcb.cn/news/detail-601981.html

@WebServlet(loadOnStartup = 10)
// 取值范圍為1-99 值越大,優(yōu)先級越低,反之值越小,優(yōu)先級越高

req,resp常用方法

req常用方法

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 瀏覽器發(fā)送請求時候的完整url,包括協(xié)議,主機(jī)名,端口號
    System.out.println(req.getRequestURL());
    // 將url去除掉協(xié)議和主機(jī)名,并輸出(上下文,訪問資源路徑)
    System.out.println(req.getRequestURI());
    // 獲取請求中的參數(shù)數(shù)據(jù),也就是 ? 之后的信息,只能獲取GET方式請求的參數(shù),無法獲取POST
    System.out.println(req.getQueryString());
    // 獲取客戶端的ip地址
    System.out.println(req.getRemoteAddr());
    // 獲取客戶端的主機(jī)名
    System.out.println(req.getRemoteHost());
    // 獲取服務(wù)器端自己的ip地址
    System.out.println(req.getLocalAddr());
    // 獲取服務(wù)器端自己的主機(jī)名
    System.out.println(req.getLocalName());
    // 獲取客戶端返送請求的請求方式
    System.out.println(req.getMethod());
}

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 接收單個值的參數(shù)
    System.out.println(req.getParameter("jerk"));
    // 接收多值參數(shù)
    System.out.println(Arrays.asList(req.getParameterValues("hobby")));
    // 使用ParamMap進(jìn)行參數(shù)和參數(shù)值的讀取,其中該Map的Key類型為String,值類型為String[]
    Map<String,String[]> params = req.getParameterMap();
    Set<String> paramNames = params.keySet();
    for (String name : paramNames) {
        String[] value = params.get(name);
        System.out.println(name + " : " + Arrays.asList(value));
    }
}

到了這里,關(guān)于Java后端01(初識servlet)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Tomcat的安裝與Maven依賴Servlet的使用

    Tomcat的安裝與Maven依賴Servlet的使用

    Tomcat 是一個 HTTP 服務(wù)器. 前面我們已經(jīng)學(xué)習(xí)了 HTTP 協(xié)議, 知道了 HTTP 協(xié)議就是 HTTP 客戶端和 HTTP 服務(wù)器之間的交互數(shù)據(jù)的格式. 同時也通過 ajax 和 Java Socket 分別構(gòu)造了 HTTP 客戶端. HTTP 服務(wù)器我們也同樣可以通過 Java Socket 來實(shí)現(xiàn). 而 Tomcat 就是基于 Java 實(shí)現(xiàn)的一個開源免費(fèi),也是

    2024年02月06日
    瀏覽(30)
  • Maven添加Oracle的依賴及驅(qū)動

    上篇文章剛介紹了Oracle數(shù)據(jù)庫的安裝,下面小白我來配置一下項(xiàng)目中Maven對于Oracle的依賴。 跟之前一篇配置SQLserver的很像,由于maven中沒有Oracle的jar包,所以需要自己導(dǎo)入。下面簡單的說一下步驟。 第一步 :查看電腦中Oracle對應(yīng)jdbc的jar包(Oracle安裝文件夾里有)。 第二步 :

    2024年02月15日
    瀏覽(19)
  • 將本地jar包手動添加到Maven倉庫依賴處理

    將本地jar包手動添加到Maven倉庫依賴處理

    在日常開發(fā)中,經(jīng)常會遇到一些情況,就是在更新Maven時,從網(wǎng)上下載jar包的時候網(wǎng)絡(luò)不穩(wěn)定或者其他原因?qū)е耲ar包數(shù)據(jù)缺失而導(dǎo)致的依賴無法正常引入的情況. 還有一些其他情況如個人jar包一類的。 以前以上這些情況,通常我是將本地jar包復(fù)制到Maven倉庫根據(jù)目錄結(jié)構(gòu)替換相

    2024年02月09日
    瀏覽(23)
  • java-初識Servlet,Tomcat,JDBC

    java-初識Servlet,Tomcat,JDBC

    java入門須知的重要概念/名詞/技術(shù) 等 Servlet是Java Web開發(fā)中的一個核心組件,它是 基于Java語言編寫的服務(wù)器端程序,可以接收Web容器(如Tomcat)發(fā)送過來的HTTP請求 ,并向客戶端發(fā)送HTTP響應(yīng)。Servlet通常用來處理動態(tài)Web頁面、Web表單數(shù)據(jù)、管理會話(session)等任務(wù)。 實(shí)際上,

    2024年02月11日
    瀏覽(25)
  • GIS工具maptalks開發(fā)手冊(四)01——渲染地圖信息框之添加繪制工具、獲取點(diǎn)的坐標(biāo)數(shù)據(jù)信息框進(jìn)行展示

    GIS工具maptalks開發(fā)手冊(四)01——渲染地圖信息框之添加繪制工具、獲取點(diǎn)的坐標(biāo)數(shù)據(jù)信息框進(jìn)行展示

    GIS工具maptalks開發(fā)手冊(四)01——渲染地圖信息框之添加繪制工具、獲取點(diǎn)的坐標(biāo)數(shù)據(jù)信息框進(jìn)行展示 1、官網(wǎng)示例 官網(wǎng)示例-地圖信息框——https://maptalks.org/examples/cn/ui-control/ui-map-infownd/#ui-control_ui-map-infownd 效果 代碼 index.html 2、官網(wǎng)示例改造版 效果 index.html 3、獲取圖層的坐標(biāo)

    2024年02月05日
    瀏覽(170)
  • Java后端05(初識MyBatis)

    mybatis配置文件(XML配置文件) user.xml(實(shí)現(xiàn)增刪改查的sql語句) 使用做sql查詢(Test) 配置文件(?注意:每一個配置文件都需要在 mybatis-config.xml 中進(jìn)行注冊?。。。。。。。。。?測試類 配置文件(?注意:每一個配置文件都需要在 mybatis-config.xml 中進(jìn)行注冊?。。。。。?/p>

    2024年02月14日
    瀏覽(23)
  • 【后端開發(fā)】01-Java基礎(chǔ)語法

    Java基礎(chǔ)語法 目錄 1. 概述 1.1. 語言特性 1.2. 開發(fā)平臺 1.3. 開發(fā)環(huán)境 1.4. 開發(fā)步驟 1.5. 注釋 2. 變量與運(yùn)算符 2.1. /保留字 2.2. 標(biāo)識符 2.3. 變量 2.4. 常用數(shù)據(jù)類型 2.4.1. 基本數(shù)據(jù)類型(8種) 2.4.2. 引用數(shù)據(jù)類型 2.4.3. 數(shù)據(jù)類型轉(zhuǎn)換 2.5. 運(yùn)算符 2.5.1. 算術(shù)運(yùn)算符(7個) 2.5.2. 關(guān)

    2024年02月08日
    瀏覽(73)
  • 【Java——maven的使用與idea創(chuàng)建maven項(xiàng)目,導(dǎo)入maven依賴(jar包)】

    【Java——maven的使用與idea創(chuàng)建maven項(xiàng)目,導(dǎo)入maven依賴(jar包)】

    1.1、打開maven安裝路徑下的conf文件夾,找到里面的settings.xml文件,(如果使用的是maven安裝程序安裝的maven,則settings.xml文件和本地倉庫位置在默認(rèn)位置:C:Userspenglei.m2)將下面的代碼復(fù)制里面,切記不要放到注釋里面 1.2、maven項(xiàng)目全局默認(rèn)配置jdk版本信息,將下面的代碼復(fù)制

    2024年02月08日
    瀏覽(103)
  • 學(xué)習(xí) Java 報表技術(shù)導(dǎo)入 Maven 依賴出錯:jacob 無法下載、jasperreports 依賴錯誤

    最近在做一個可視化項(xiàng)目,用到了 Java 報表技術(shù)。在跟著「黑馬」課程導(dǎo)入 pom.xml 文件的時候提示下載依賴錯誤。 com.jacob 包無法下載 Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js6 電腦系統(tǒng)版本:Windows 10 64bit Idea:2023.2 (Ultimate Edition) Maven:apache-maven-3.6.0 解決 jacob 包

    2024年02月11日
    瀏覽(26)
  • Java項(xiàng)目作業(yè)~ 通過html+Servlet+MyBatis,完成站點(diǎn)信息的添加功能

    Java項(xiàng)目作業(yè)~ 通過html+Servlet+MyBatis,完成站點(diǎn)信息的添加功能

    通過html+Servlet+MyBatis,完成站點(diǎn)信息的添加功能。 以下是站點(diǎn)表的建表語句: ? ? RegisterServlet: UserDao: User: MyBatisUtil: UserDao.xml: jdbc.properties: mybatis-config.xml: ?web.xml: register.html: RegTest: ? ?點(diǎn)擊網(wǎng)址跳轉(zhuǎn)到瀏覽器: ?填寫信息如下: ?點(diǎn)擊提交按鈕: ?數(shù)據(jù)庫中查

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包