获取请求参数通用方式|| 中文乱码问题||请求转发
1. 獲取請求參數通用方式:不論get還是post請求方式都可以使用下列方法來獲取請求參數
? ? ? ? ? ? 1. String getParameter(String name):根據參數名稱獲取參數值 ? ?username=zs&password=123
?? ??? ??? ?2. String[] getParameterValues(String name):根據參數名稱獲取參數值的數組 ?hobby=xx&hobby=game
?? ??? ??? ?3. Enumeration<String> getParameterNames():獲取所有請求的參數名稱
?? ??? ??? ?4. Map<String,String[]> getParameterMap():獲取所有參數的map集合
regist2.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>注冊頁面</title> </head> <body><form action="/day14/requestDemo6" method="post"><input type="text" placeholder="請輸入用戶名" name="username"><br><input type="text" placeholder="請輸入密碼" name="password"><br><input type="checkbox" name="hobby" value="game">游戲<input type="checkbox" name="hobby" value="study">學習<br><input type="submit" value="注冊"></form></body> </html>?RequestDemo6.java
package cn.itcast.web.request;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.BufferedReader; import java.io.IOException; import java.util.Enumeration; import java.util.Map; import java.util.Set;@WebServlet("/requestDemo6") public class RequestDemo6 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//post 獲取請求參數//根據參數名稱獲取參數值/* String username = request.getParameter("username");System.out.println(username);*//*//根據參數名稱獲取參數值的數組String[] hobbies = request.getParameterValues("hobby");for (String hobby : hobbies) {System.out.println(hobby);}*///獲取所有請求的參數名稱/*Enumeration<String> parameterNames = request.getParameterNames();while(parameterNames.hasMoreElements()){String name = parameterNames.nextElement();System.out.println(name);String value = request.getParameter(name);System.out.println(value);System.out.println("----------------");}*/// 獲取所有參數的map集合Map<String, String[]> parameterMap = request.getParameterMap();//遍歷Set<String> keyset = parameterMap.keySet();for (String name : keyset) {//獲取鍵獲取值String[] values = parameterMap.get(name);System.out.println(name);for (String value : values) {System.out.println(value);}System.out.println("-----------------");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//get 獲取請求參數//根據參數名稱獲取參數值/* String username = request.getParameter("username");System.out.println("get");System.out.println(username);*/this.doPost(request,response);} }???
?中文亂碼問題:
? ??? ??? ??? ?* get方式:tomcat 8 已經將get方式亂碼問題解決了
?? ??? ??? ??? ?* post方式:會亂碼
?? ??? ??? ??? ??? ?* 解決:在獲取參數前,設置request的編碼request.setCharacterEncoding("utf-8");
?? ??? ?2. 請求轉發:一種在服務器內部的資源跳轉方式
?? ??? ??? ?1. 步驟:
?? ??? ??? ??? ?1. 通過request對象獲取請求轉發器對象:RequestDispatcher getRequestDispatcher(String path)
?? ??? ??? ??? ?2. 使用RequestDispatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response)?
?? ??? ??? ?2. 特點:
?? ??? ??? ??? ?1. 瀏覽器地址欄路徑不發生變化
?? ??? ??? ??? ?2. 只能轉發到當前服務器內部資源中。
?? ??? ??? ??? ?3. 轉發是一次請求
共享數據:
?? ??? ??? ?* 域對象:一個有作用范圍的對象,可以在范圍內共享數據
?? ??? ??? ?* request域:代表一次請求的范圍,一般用于請求轉發的多個資源中共享數據
?? ??? ??? ?* 方法:
?? ??? ??? ??? ?1. void setAttribute(String name,Object obj):存儲數據
?? ??? ??? ??? ?2. Object getAttitude(String name):通過鍵獲取值
?? ??? ??? ??? ?3. void removeAttribute(String name):通過鍵移除鍵值對
??
?獲取ServletContext:
?? ??? ??? ?ServletContext getServletContext()
總結
以上是生活随笔為你收集整理的获取请求参数通用方式|| 中文乱码问题||请求转发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringMVC的概念
- 下一篇: 案例:用户登录