移动应用开发--5.10学习日志
準備工作
下載tomcat 9.0.62
1.Servlet
Servlet是Sun公司開發動態web的一門技術
Sun在這些API中提供一個接口叫作:Servlet,如果你想開發一個Servlet程序,只需要兩步:
把實現了Servlet接口的Java程序,叫作Servlet
2.Hello Servlet
1.構建一個普通的Maven項目(主工程),刪除里面的src目錄,之后的學習都是在該項目里建立Modle(子工程)。
2.創建Model子工程。
遇到的問題:創建的Model子工程下沒有webapp目錄
創建Model時,選擇的是New Model 然后直接點擊create。(就是沒有選擇導入框架
解決辦法:創建Model時,點擊Maven Archetype 在Archetype中選擇框架,再點擊Create等待自動創建。
創建好的Model子工程
3.在主工程的pom.xml中導入依賴。
maven 版本依賴、版本更新、版本查詢網站:https://mvnrepository.com/
Maven子父項目:
????父項目中的jar包子項目可以使用,子項目的jar包父項目不可以使用。
構建后servlet-01子項目后
父項目中:
子項目中:
<parent><artifactId>javaweb</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version> </parent>4.編寫一個servlet程序:
1.編寫一個普通類。
2.實現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服務器,所以我們需要在web服務中注冊我們寫的Servlet,還需要給它一個瀏覽器能夠訪問的路徑。
在web.xml中配置。
5.配置tomcat
之前博客有寫 添加鏈接描述
6.啟動Tomcat
啟動后自動跳轉到http://localhost:8086/servlet_01_war/
在url路徑上加/hello
http://localhost:8086/servlet_01_war/hello
頁面顯示我們doGet里設置好的內容Hello Servlet
可能遇到的問題:
500:Tomcat版本過高,換成9.0
3.Mapping原理
一個Servlet可以指定一個映射路徑
一個Servlet可以指定多個映射路徑
一個Servlet可以指定通用映射路徑
指定一些后綴或者前綴等等……
優先級問題:
????指定了固有的映射路徑優先級最高,如果找不到就會走默認的處理請求。
4.ServletContext
????Web容器在啟動的時候,它會為每個Web程序都創建一個對應的ServletContext對象。它代表了當前的Web應用。
共享數據:
????我在這個Servlet中保存的數據,可以在另一個Servlet中拿到.
1.存:Hello類里的內容:(向ServletContext寫數據)
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 {//將數據保存在ServletContext中;名字:username;值(數據):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:映射關系也需要補充好
如果先進入http://localhost:8086/servlet_01_war/getdata,則頁面顯示null(還未獲取到信息)。
再進入http://localhost:8086/servlet_01_war/hello,頁面為空。
再次進入http://localhost:8086/servlet_01_war/getdata,頁面顯示zhang san。
若獲取數據為中文張三,顯示界面可能會??(亂碼)
在GetData類中加入下面的代碼。
ServletContext獲取初始化參數
1.在配置文件web.xml中設置初始化參數
<!--配置一些web應用初始化參數--><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.獲取初始化參數//引號之間的內容要和<param-name>一致,否則跳轉到http://localhost:8086/servlet_01_war/getinit,彈出頁面顯示nullString str = servletContext.getInitParameter("Good Morning");//3.輸出結果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請求轉發
請求A界面,實際訪問B界面,URL不變。
1.創建GetRequestDispatch類
2.配置映射關系
<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.運行:
總結
以上是生活随笔為你收集整理的移动应用开发--5.10学习日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 短信验证码接收网页版常见问题解答
- 下一篇: 大学计算机课程教学,提高大学生计算机基础