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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaEE基础(02):Servlet核心API用法详解

發布時間:2025/3/17 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaEE基础(02):Servlet核心API用法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文源碼:GitHub·點這里 || GitEE·點這里

一、核心API簡介

1、Servlet執行流程

Servlet是JavaWeb的三大組件之一(Servlet、Filter、Listener),它屬于動態資源。Servlet的作用是處理請求,服務器會把接收到的請求交給Servlet來處理,在Servlet中通常需要:接收請求數據;處理請求;完成響應。

2、核心API簡介

API作用描述
ServletConfig獲取servlet初始化參數和servletContext對象。
ServletContext在整個Web應用的動態資源之間共享數據。
ServletRequest封裝Http請求信息,在請求時創建。
ServletResponse封裝Http響應信息,在請求時創建。

二、ServletConfig接口

1、接口簡介

容器在初始化servlet時,為該servlet創建一個servletConfig對象,并將這個對象通過init()方法來傳遞并保存在此Servlet對象中。核心作用:1.獲取初始化信息;2.獲取ServletContext對象。

2、代碼案例

  • 配置文件
<servlet><init-param><param-name>my-name</param-name><param-value>cicada</param-value></init-param><servlet-name>servletOneImpl</servlet-name><servlet-class>com.node02.servlet.impl.ServletOneImpl</servlet-class> </servlet> <servlet-mapping><servlet-name>servletOneImpl</servlet-name><url-pattern>/servletOneImpl</url-pattern> </servlet-mapping>
  • API用法
public class ServletOneImpl implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {String servletName = servletConfig.getServletName() ;System.out.println("servletName="+servletName);String myName = servletConfig.getInitParameter("my-name") ;System.out.println("myName="+myName);Enumeration paramNames = servletConfig.getInitParameterNames() ;while (paramNames.hasMoreElements()){String paramKey = String.valueOf(paramNames.nextElement()) ;String paramValue = servletConfig.getInitParameter(paramKey) ;System.out.println("paramKey="+paramKey+";paramValue="+paramValue);}ServletContext servletContext = servletConfig.getServletContext() ;servletContext.setAttribute("cicada","smile");} }

三、ServletContext接口

1、接口簡介

一個項目只有一個ServletContext對象,可以在多個Servlet中來獲取這個對象,使用它可以給多個Servlet傳遞數據,該對象在Tomcat啟動時就創建,在Tomcat關閉時才會銷毀!作用是在整個Web應用的動態資源之間共享數據。

  • 獲取方式
1、ServletConfig#getServletContext(); 2、GenericServlet#getServletContext(); 3、HttpSession#getServletContext() 4、ServletContextEvent#getServletContext()

2、四大域對象

ServletContext是JavaWeb四大域對象之一:

1、PageContext; 2、ServletRequest; 3、HttpSession; 4、ServletContext;

所有域對象都有存取數據的功能,因為域對象內部有一個Map,用來存儲數據。

3、代碼案例

  • 配置文件
<context-param><param-name>my-blog</param-name><param-value>2019-11-19</param-value> </context-param> <servlet><servlet-name>servletTwoImpl</servlet-name><servlet-class>com.node02.servlet.impl.ServletTwoImpl</servlet-class> </servlet> <servlet-mapping><servlet-name>servletTwoImpl</servlet-name><url-pattern>/servletTwoImpl</url-pattern> </servlet-mapping>
  • API用法
public class ServletTwoImpl extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");// 1、參數傳遞ServletContext servletContext = this.getServletContext() ;String value = String.valueOf(servletContext.getAttribute("cicada")) ;System.out.println("value="+value);// 2、獲取初始化參數String myBlog = servletContext.getInitParameter("my-blog") ;System.out.println("myBlog="+myBlog);// 3、獲取應用信息String servletContextName = servletContext.getServletContextName() ;System.out.println("servletContextName="+servletContextName);// 4、獲取路徑String pathOne = servletContext.getRealPath("/") ;String pathTwo = servletContext.getRealPath("/WEB-INF/") ;System.out.println("pathOne="+pathOne+";pathTwo="+pathTwo);response.getWriter().print("執行:doGet; value:"+value);} }

四、ServletRequest接口

1、接口簡介

HttpServletRequest接口繼承ServletRequest接口,用于封裝請求信息,該對象在用戶每次請求servlet時創建并傳入servlet的service()方法,在該方法中,傳入的servletRequest將會被強制轉化為HttpservletRequest對象來進行HTTP請求信息的處理。核心作用:1.獲取請求報文信息;2.獲取網絡連接信息;3.獲取請求域屬性信息。

2、代碼案例

  • 配置文件
<servlet><servlet-name>servletThreeImpl</servlet-name><servlet-class>com.node02.servlet.impl.ServletThreeImpl</servlet-class> </servlet> <servlet-mapping><servlet-name>servletThreeImpl</servlet-name><url-pattern>/servletThreeImpl</url-pattern> </servlet-mapping>
  • API用法
public class ServletThreeImpl extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// http://localhost:6003/servletThreeImpl?myName=cicadaString method = request.getMethod();System.out.println("method="+method); // GETString requestURL = request.getRequestURL().toString();// http://localhost:6003/servletThreeImplSystem.out.println("requestURL="+requestURL);String requestURI = request.getRequestURI();System.out.println("requestURI="+requestURI); // /servletThreeImplString queryString = request.getQueryString() ;System.out.println("queryString="+queryString); // myName=cicadaString myName = request.getParameter("myName");System.out.println("myName="+myName); // cicada} }

五、ServletResponse接口

1、接口簡介

HttpServletResponse繼承自ServletResponse,封裝了Http響應信息。客戶端每個請求,服務器都會創建一個response對象,并傳入給Servlet.service()方法。核心作用:1.設置響應頭信息;2.發送狀態碼;3.設置響應正文;4.重定向;

2、代碼案例

  • 配置文件
<servlet><servlet-name>servletFourImpl</servlet-name><servlet-class>com.node02.servlet.impl.ServletFourImpl</servlet-class> </servlet> <servlet-mapping><servlet-name>servletFourImpl</servlet-name><url-pattern>/servletFourImpl</url-pattern> </servlet-mapping>
  • API用法
public class ServletFourImpl extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8") ;response.setCharacterEncoding("UTF-8");response.setStatus(200) ;response.getWriter().print("Hello,知了");} }

3、轉發和重定向

  • 轉發

服務器端進行的頁面跳轉的控制 ;

request.getRequestDispatcher("/轉發地址").forward(request, response);
  • 重定向

服務端響應跳轉信息,瀏覽器端進行的頁面跳轉 ;

response.sendRedirect("重定向地址");
  • 轉發和重定向對比
區別轉發重定向
地址欄不變變化
跳轉服務端跳轉瀏覽器端跳轉
請求次數一次兩次
域中數據不會丟失丟失

六、源代碼地址

GitHub·地址 https://github.com/cicadasmile/java-base-parent GitEE·地址 https://gitee.com/cicadasmile/java-base-parent

總結

以上是生活随笔為你收集整理的JavaEE基础(02):Servlet核心API用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。