日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移动应用开发--5.10学习日志

發(fā)布時間:2023/12/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移动应用开发--5.10学习日志 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

準備工作

下載tomcat 9.0.62

1.Servlet

Servlet是Sun公司開發(fā)動態(tài)web的一門技術(shù)
Sun在這些API中提供一個接口叫作:Servlet,如果你想開發(fā)一個Servlet程序,只需要兩步:

  • 編寫一個類,實現(xiàn)Servlet接口。
  • 把開發(fā)好的Java類部署到web服務(wù)器中。
  • 把實現(xiàn)了Servlet接口的Java程序,叫作Servlet

    2.Hello Servlet

    1.構(gòu)建一個普通的Maven項目(主工程),刪除里面的src目錄,之后的學(xué)習(xí)都是在該項目里建立Modle(子工程)。

    2.創(chuàng)建Model子工程。

    遇到的問題:創(chuàng)建的Model子工程下沒有webapp目錄

    創(chuàng)建Model時,選擇的是New Model 然后直接點擊create。(就是沒有選擇導(dǎo)入框架
    解決辦法:創(chuàng)建Model時,點擊Maven Archetype 在Archetype中選擇框架,再點擊Create等待自動創(chuàng)建。

    創(chuàng)建好的Model子工程

    3.在主工程的pom.xml中導(dǎo)入依賴。

    maven 版本依賴、版本更新、版本查詢網(wǎng)站:https://mvnrepository.com/

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope> </dependency>

    Maven子父項目:

    ????父項目中的jar包子項目可以使用,子項目的jar包父項目不可以使用。

    構(gòu)建后servlet-01子項目后
    父項目中:

    <modules><module>servlet-01</module> </modules>

    子項目中:

    <parent><artifactId>javaweb</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version> </parent>

    4.編寫一個servlet程序:

    1.編寫一個普通類。

    2.實現(xiàn)Servlet接口,這里我們直接繼承(extends)HttpServlet。

    public class Hello extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.print("Hello Servlet");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);} }

    3.編寫Servlet的映射。

    為什么要映射?
    ????我們寫的是Java程序,但是要通過瀏覽器訪問。而瀏覽器需要連接web服務(wù)器,所以我們需要在web服務(wù)中注冊我們寫的Servlet,還需要給它一個瀏覽器能夠訪問的路徑。

    在web.xml中配置。

    5.配置tomcat

    之前博客有寫 添加鏈接描述

    6.啟動Tomcat

    啟動后自動跳轉(zhuǎn)到http://localhost:8086/servlet_01_war/

    在url路徑上加/hello
    http://localhost:8086/servlet_01_war/hello
    頁面顯示我們doGet里設(shè)置好的內(nèi)容Hello Servlet

    可能遇到的問題:

    500:Tomcat版本過高,換成9.0

    3.Mapping原理

    一個Servlet可以指定一個映射路徑
    一個Servlet可以指定多個映射路徑
    一個Servlet可以指定通用映射路徑
    指定一些后綴或者前綴等等……

    優(yōu)先級問題:
    ????指定了固有的映射路徑優(yōu)先級最高,如果找不到就會走默認的處理請求。

    4.ServletContext

    ????Web容器在啟動的時候,它會為每個Web程序都創(chuàng)建一個對應(yīng)的ServletContext對象。它代表了當前的Web應(yīng)用。

    共享數(shù)據(jù):

    ????我在這個Servlet中保存的數(shù)據(jù),可以在另一個Servlet中拿到.

    1.存:Hello類里的內(nèi)容:(向ServletContext寫數(shù)據(jù))

    package com.example.servlet;import javax.servlet.ServletContext; 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 Hello extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//將數(shù)據(jù)保存在ServletContext中;名字:username;值(數(shù)據(jù)):zhang sanServletContext servletContext = this.getServletContext();servletContext.setAttribute("username","zhang san");}}

    2.取:新建一個GetData類(獲取信息類)

    package com.example.servlet;import javax.servlet.ServletContext; 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 GetData extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext = this.getServletContext();String str = (String) servletContext.getAttribute("username");PrintWriter writer = resp.getWriter();writer.println(str);} }

    tips:映射關(guān)系也需要補充好

    如果先進入http://localhost:8086/servlet_01_war/getdata,則頁面顯示null(還未獲取到信息)。

    再進入http://localhost:8086/servlet_01_war/hello,頁面為空

    再次進入http://localhost:8086/servlet_01_war/getdata,頁面顯示zhang san

    若獲取數(shù)據(jù)為中文張三,顯示界面可能會??(亂碼)

    在GetData類中加入下面的代碼。

    //響應(yīng)到瀏覽器(處理亂碼問題(配置類型和編碼)) resp.setContentType("text/html");//響應(yīng)類型 resp.setCharacterEncoding("UTF-8");//響應(yīng)的編碼格式

    ServletContext獲取初始化參數(shù)

    1.在配置文件web.xml中設(shè)置初始化參數(shù)

    <!--配置一些web應(yīng)用初始化參數(shù)--><context-param><param-name>Good Morning</param-name><param-value>2022-05-15 07:22</param-value></context-param>

    2.新建GetInit類

    package com.example.servlet;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class GetInit extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.獲取ServletContext對象ServletContext servletContext = this.getServletContext();//2.獲取初始化參數(shù)//引號之間的內(nèi)容要和<param-name>一致,否則跳轉(zhuǎn)到http://localhost:8086/servlet_01_war/getinit,彈出頁面顯示nullString str = servletContext.getInitParameter("Good Morning");//3.輸出結(jié)果resp.getWriter().print(str);} }

    3.配置GetInit映射

    <servlet><servlet-name>getinit</servlet-name><servlet-class>com.example.servlet.GetInit</servlet-class></servlet><servlet-mapping><servlet-name>getinit</servlet-name><url-pattern>/getinit</url-pattern></servlet-mapping>

    4.運行

    ServletContext請求轉(zhuǎn)發(fā)

    請求A界面,實際訪問B界面,URL不變。
    1.創(chuàng)建GetRequestDispatch類

    package com.example.servlet;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class GetRequestDispatch extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext = this.getServletContext();//進入了/getRequestDispatch 界面System.out.println("進入了GetRequestDispatch");//實際被轉(zhuǎn)發(fā)到了/getinit 界面servletContext.getRequestDispatcher("/getinit");servletContext.getRequestDispatcher("/getinit").forward(req,resp);} }

    2.配置映射關(guān)系

    <servlet><servlet-name>getRequestDispatch</servlet-name><servlet-class>com.example.servlet.GetRequestDispatch</servlet-class></servlet><servlet-mapping><servlet-name>getRequestDispatch</servlet-name><url-pattern>/getRequestDispatch</url-pattern></servlet-mapping>

    3.運行:

    總結(jié)

    以上是生活随笔為你收集整理的移动应用开发--5.10学习日志的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。