溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javaweb中servlet技術的用法

發(fā)布時間:2023-06-21 16:35:51 來源:億速云 閱讀:97 作者:栢白 欄目:開發(fā)技術

本篇文章和大家了解一下javaweb中servlet技術的用法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。


Servlet

Servlet(Server Applet)是Java Servlet的簡稱。 是在服務器端執(zhí)行的 , 用于響應客戶端請求的Java類。HttpServlet 是使用java語言對http通信的實現(xiàn)。

javaweb中servlet技術的用法

Servlet聲明

在 web.xml 中聲明Servlet的請求url及對應的類路徑 , 3.0版本后可以在類上使用 @WebServlet(“/test”) 注解來聲明

servlet-class : 內部地址路徑

url-pattern : 對外發(fā)布的名字

servlet-name : 兩者的對應

  <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.yuan.servlet.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/testServlet</url-pattern>
  </servlet-mapping>

Servlet生命周期

javaweb中servlet技術的用法

加載 : 在web.xml中聲明Servlet相關信息

實例化 : 由WebServer( 如 : Tomcat )根據(jù)web.xml中聲明信息進行實例化, 實例化后才能調用方法

第一種方式 : 第一次被請求時, 先實例化, 然后調用了 init() 方法進行初始化

第二種方式 : 在 web.xml 文件中在<servlet></servlet>下加入 <load-on-startup>0</load-on-startup>Web服務器啟動時就會實例化

初始化 : 在init() 方法中,進行初始屬性設置

服務 : 用戶發(fā)請求后, 會調用 service(request, response) 方法, 請求/響應的信息由WebServer封裝成HttpServletRequest / HttpServletResponse對象

銷毀 : 當servlet被銷毀時, 調用destroy()方法, 可以在這個方法中釋放一些資源

垃圾回收 : 被JVM進行垃圾回收時, 調用 finalize() 方法

package com.yuan.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/testServlet")
public class TestServlet extends HttpServlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
        // 初始化方法
    }
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 服務方法
    }
    @Override
    public void destroy() {
        //銷毀方法
    }
}

請求方式

Http定義了與服務器交互的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。

一個URL地址,它用于描述一個網(wǎng)絡上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。

GET/POST比較

GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息

默認方式 :

-GET 超鏈接, location.href, form表單 默認都是GET的

-POST 將 form表單的 method屬性設置成 post, form通信轉成POST方式

傳值方式 :

-GET 數(shù)據(jù)會附在URL之后, 參數(shù)顯示在地址欄。所以是明文傳值

-POST 數(shù)據(jù)放置在HTTP包的包體中, 參數(shù)不在地址欄顯示, 登錄時要使用POST, 隱藏登錄信息

傳值大小:

-GET 1K~8K,受瀏覽器的影響, 通常為2K

-POST 理論上沒有大小的限制, 所以做上傳文件時, 由于文件的大小原因, 只能使用POST

中文傳遞 :

-GET 默認使用ISO-8859-1, 現(xiàn)在的瀏覽器都有優(yōu)化

-POST 根據(jù)頁面的中文編碼設置, 服務器接值要轉碼

字符編碼

GB2312編碼:1981年5月1日發(fā)布的簡體中文漢字編碼國家標準。GB2312對漢字采用雙字節(jié)編碼,收錄7445個圖形字符,其中包括6763個漢字。

BIG5編碼:臺灣地區(qū)繁體中文標準字符集,采用雙字節(jié)編碼,共收錄13053個中文字,1984年實施。

GBK編碼:1995年12月發(fā)布的漢字編碼國家標準,是對GB2312編碼的擴充,對漢字采用雙字節(jié)編碼。

GBK字符集共收錄21003個漢字,包含國家標準GB13000-1中的全部中日韓漢字,和BIG5編碼中的所有漢字。

Unicode編碼(UTF-8):國際標準字符集,它將世界各種語言的每個字符定義一個唯一的編碼,以滿足跨語言、跨平臺的文本信息轉換。

u4e00-u9fa5 , 0x3400-0x4DB5 (中文)

兩種轉頁

內部轉 :

request.getRequestDispatcher( "目標頁面" ) .forward( request, response );

跳轉后瀏覽器地址欄不會變化

目標頁面路徑可以使用相對路徑

使用這種方式跳轉,傳值可以使用三種方法:url中帶parameter,session,request.setAttribute()

重定向 :

response.sendRedirect( request.getContextPath() + "目標頁面" );

跳轉后瀏覽器地址欄變化。

目標頁面要使用絕對路徑

這種方式要傳值出去的話,只能在url中帶parameter或者放在session中,無法使用request.setAttribute()來傳遞

三種容器

存儲容器 : 是指用于在請求或轉頁過程中用來存儲所在傳遞的參數(shù)值的對象

常用方法

// 添加屬性
.setAttribute(key, value)
// 取屬性值
.getAttribute(key)
// 移除屬性
.removeAttribute(key)

在Web項目中有三種容器, 因為它們的作用范圍(生命周期)不同, 也叫三種作用域

其中 application 包含 多個session , session 包含多個 request

所以 從 request能得到session , 而從 request, session 能得到 application

request請求

類型 : HttpServletRequest

生命周期 : 客戶端發(fā)起請求創(chuàng)建

遇到響應 Response 或者生成頁面結束

常用方法 :

// 接頁面?zhèn)鱽淼闹?
String value = request.getParameter(key);   //接一個值
String[] vals = request.getParameterValues(key);  //接一組值
// 得到其它容器
HttpSession session = request.getSession();
ServletContext app = request.getServletContext();
// 得到URL 信息
StringBuffer url = request.getRequestURL();
String scheme = request.getScheme();
String serverName = request.getServerName();
int serverPort = request.getServerPort();
String uri = request.getRequestURI();
String cpath = request.getContextPath();       // 得到絕對路徑
String servletUrl = request.getServletPath();  // 被請求servlet
String remoteAddr = request.getRemoteAddr();  // 得到客戶端IP
session請求

類型 : HttpSession

生命周期 : 瀏覽器與服務器建立通信開始

主動關閉或長時間不與服務器通信結束

常用方法 :

// 取session 的 標識 id
String sid = session.getId();
// 獲取最長等待時間
int max = session.getMaxInactiveInterval();
// 設置最長等待時間, 以秒為單位
session.setMaxInactiveInterval(len);
// 取所屬的上下文
ServletContext app = session.getServletContext();

在 web.xml中也可以設置最長等待時間, 單位是分鐘

  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>
application上下文(全局)

類型 : ServletContext

生命周期 : 項目啟動創(chuàng)建

項目關閉結束

常用方法 :

// 取項目的真實路徑(發(fā)布路徑)
String path = app.getRealPath(path);
// 取 web.xml 中設置的參數(shù)
String pv = app.getInitParameter(paramName);

在web.xml 里信息可以被application獲取

  <context-param>
    <param-name>paramName</param-name>
    <param-value>paramValue</param-value>
  </context-param>

ServletConfig設置對象

在 Servlet的init() 初始化方法傳入?yún)?shù) ServletConfig

public void init(ServletConfig config) throws ServletException {
    // 取web.xml 文件中在<servlet></servlet>下的信息
	String icon = config.getInitParameter(configName);
	// 取所屬的上下文
	ServletContext app = config.getServletContext();
}

在web.xml 文件中在下的信息

  <servlet>
    <init-param>
      <param-name>configName</param-name>
      <param-value>configValue</param-value>
    </init-param>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.yuan.servlet.TestServlet</servlet-class>
  </servlet>

以上就是javaweb中servlet技術的用法的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業(yè)資訊頻道哦!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI