get請求和post請求的區別

get請求是將請求參數放在url?後面進行拼接

在這裏插入圖片描述
訪問時會拼接url
http://localhost:8080/MyProject/MyServlet?username=%E7%81%AB%E9%B8%A1%E5%91%B3%E9%94%85%E5%B7%B4&password=123&gender=male&hobby=%E5%AD%A6%E4%B9%A0&hobby=%E8%B5%9A%E9%92%B1&remark=%E4%BD%A0%E5%A5%BD
數據不安全

post請求在url中是看不到參數的,是比較安全的


數據被封裝在表單中
在這裏插入圖片描述
url不變
在這裏插入圖片描述

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		/**
		 * 重定向:以前的request中的存放的變量全部失效,並進入一個新的request作用域
		 * 轉發:以前的request中存放的變量不會失效,就像把兩個頁面拼到了一起
		 * 域對象:session,request,page
		 * 域:一個區間,範圍
		 */
		//請求域存一個數據
		req.setAttribute("name", "echo");
		
		//轉發給servlet2 轉發過程中以前的request中存的變量不會失效 轉發後req中的內容還是保存的 轉發是request實現的
		//req.getRequestDispatcher("/Lesson06Servlet02").forward(req, resp);
		
		//重定向 重定向的時候以前的request中的內容不會保存  重定向是response實現的
		resp.sendRedirect(req.getContextPath() + "/Lesson06Servlet02");
		
		/**
		 * 原因就是 轉發機制瀏覽器向服務器只發送了一次請求,那個req還是那個req 裏面保存的東西不會變
		 * 而重定向機制 是瀏覽器接受到第一次請求之後,再重定向第二個路徑時 又重新發了一次請求。
		 */
	}
@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		/**
		 * include(),forward(),sendRedirect()的區別
		 * 1.sendRedirect() 是請求重定向,它會向服務器發送兩次請求
		 * 
		 * 2.forword是請求轉發,
		 * 假設是servlet1轉發給servlet2,則只有servlet2的數據可以響應給客戶端
		 * 
		 * 3.inculde是請求轉發
		 * 假設servlet1轉發給servlet2,則servlet1和servlet2的數據都可以響應給客戶端
		 * 
		 * 4.轉發地址欄不變 重定向地址欄改變
		 */
		
		//1.獲取請求轉發對象
		RequestDispatcher rd = req.getRequestDispatcher("/Lesson07Servlet02");
		
		resp.getWriter().write("Servlet 01");
		
		//2.執行轉發
		//forword只會顯示servlet2的內容
		//rd.forward(req, resp);
		//include則既包含servlet1的內容也包含servlet2的內容
		rd.include(req, resp);
		
		
		resp.getWriter().write("Servlet 01");
	}
發佈了35 篇原創文章 · 獲贊 6 · 訪問量 2621
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章