day12-Servlet02

Servlet026.GET和POST請求的分發處理

  • 開發Servlet,通常編寫doGet,doPost方法 。來對表單的get和post請求進行分發處理
例子
在web文件夾下面創建一個html頁面,用于提交表單
day12-Servlet02

文章插圖
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>注冊</title></head><body><h1>用戶注冊</h1><!--注意:這里的helloServlet不是你的類名,是你在web.xml里面配置的<url-pattern>--><form action="http://localhost:8080/servlet_demo/helloServlet" method="get">u:<input type="text" name="username"/><br/><br/><input type="submit" value="https://www.huyubaike.com/biancheng/注冊用戶"/></form></body></html>在src目錄下面創建HelloServlet類,該類實現了Servlet接口,并重寫init() , getServletConfig(),service() , getServletInfo(),destroy()這5個方法,并在該類中增加兩個方法,用來處理get和post請求
day12-Servlet02

文章插圖
/** * 用于響應get請求 */public void doGet() {System.out.println("doGet()方法被調用..");}/** * 用于響應post請求 */public void doPost() {System.out.println("doPost()方法被調用..");}同時在HelloServlet的service方法中編寫操作 , 用于接收get和post請求
@Overridepublic void service(ServletRequest servletRequest,ServletResponse servletResponse)throws ServletException, IOException {//思考-->從servletRequest對象去獲取請求方式->//1.發現ServletRequest沒有得到提交方式的方法//2.就去看看ServletRequest的子接口有沒有相關方法//3.快捷鍵ctrl+alt+b=>可以看到接口的子接口和實現子類//4.發現HttpServletRequest子類中有getMethod方法//5.把ServletRequest轉成HttpServletRequest引用HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;String method = httpServletRequest.getMethod();//System.out.println("method="+method);method=GET-->發現輸出的字符是大寫的if ("GET".equals(method)){doGet();//使用doGet()處理GET請求}else if ("POST".equals(method)) {doPost();//使用doPost處理POST請求}}然后重新發布redeploy
day12-Servlet02

文章插圖
在瀏覽器中輸入地址http://localhost:8080/servlet_demo/register.html,在表單中輸入內容 , 點擊按鈕,發送請求
day12-Servlet02

文章插圖
可以看到后臺輸出了調用哪個方法 , 說明HelloServlet成功獲得了請求方式
day12-Servlet02

文章插圖
7.通過繼承HttpServlet來開發Servlet在實際的開發中,我們很少去實現Servlet接口 , 因為該接口中有很多方法實際上很少會用到 。
為了開發更加簡便,Servlet的設計者提供了另一套更簡潔的開發方式,就是通過繼承HttpServlet來開發Servlet 。
  • HttpServlet介紹
    在實際的項目中,都是使用繼承HttpServlet類開發Servlet程序 , 更加方便
    day12-Servlet02

    文章插圖
例子
  1. 通過繼承HttpServlet開發一個HiServlet
  2. 當瀏覽器訪問http://localhost:8080/web應用名/hiServlet時 , 后臺輸出“hi HiServlet”
思路:
  • 編寫一個類去繼承HttpServlet類
  • 根據業務需要重寫doGet或doPost方法
  • 到web.xml中配置Servlet程序
編寫一個類去繼承HttpServlet類:
package com.li.servlet;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 HiServlet extends HttpServlet {//重寫HttpServlet的doGet和doPost方法/*** 處理doGet請求** @param req* @param resp* @throws ServletException* @throws IOException*/@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("HiServlet doGet()....");}/*** 處理doPost請求** @param req* @param resp* @throws ServletException* @throws IOException*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("HiServlet doPost()....");}}到web.xml中配置Servlet程序:
<!--配置HiServlet--><servlet><servlet-name>HiServlet</servlet-name><servlet-class>com.li.servlet.HiServlet</servlet-class></servlet><servlet-mapping><servlet-name>HiServlet</servlet-name><url-pattern>/hiServlet</url-pattern></servlet-mapping>

推薦閱讀