1. 程式人生 > 其它 >request獲取引數通用格式和資料共享

request獲取引數通用格式和資料共享

技術標籤:java

1. 四種通用的獲取請求資料方法getParameter

1.1通過getParamter(鍵名)來獲取引數值 get和post請求通用

package cn.sc;

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; import java.util.Enumeration; import java.util.Map; import java.util.Set; @WebServlet( "/test3") public class test3 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //通過getParamter(鍵名)來獲取引數值 get和post請求通用
String username = request.getParameter("username"); String hobby = request.getParameter("hobby"); System.out.println("愛好是:"+hobby); System.out.println(username); }

JavaWeb程式碼

<!DOCTYPE html>
<html lang="en">
<head
>
<meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="test3" method="post"> 使用者名稱<input type="text" placeholder="請輸入使用者名稱" name="username"/><br/> 密碼<input type="password" placeholder="請輸入密碼" name="pwd"> <input type="checkbox" value="cll" name="hobby">123456 <input type="checkbox" value="ckl" name="hobby">123457 <input type="submit" value="登陸"/> </form> </body> </html>

結果為
在這裡插入圖片描述
1.2通過鍵名獲取所有的引數

System.out.println("-------------通過鍵名獲取所有的引數--------------");
//        request.getParameterValues  適用於  一個鍵名 有多個引數
        String[] hobies = request.getParameterValues("hoby");
        for (String hoby1 : hobies) {
            System.out.println(hoby1);
        }

結果為
在這裡插入圖片描述

1.3request.getParamyterNames() 獲取訪問該servlet的所有的 鍵名

      Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()){
            String name = parameterNames.nextElement();
//            System.out.println(name);
            String value = request.getParameter(name);
            System.out.println(name+"+++"+value);
        }

結果為
在這裡插入圖片描述
1.4通過map集合列舉所有鍵名和值

Map<String, String[]> pm = request.getParameterMap();
Set<String> keySet = pm.keySet();
for (String key : keySet) {
    String[] values = pm.get(key);
    for (String value : values) {
        System.out.println(key+"----"+value);
    }
}

結果為
在這裡插入圖片描述

2解決request獲取引數的中文亂碼問題

我們在1.1方法中,username文字框若輸入中文,則會出現亂碼情況例如
在這裡插入圖片描述

我們也可以解決這些中文亂碼,在下面位置中加入紅框中的程式碼。
在這裡插入圖片描述
在這裡插入圖片描述

3、Request請求轉發

是一個在伺服器內部的資源跳轉的方式,例如我們在世紀開發中,需要些不同的servlet,每個人完成不同的功能,當我們訪問aservlet實現部分功能後需要跳轉到一個新的bservlet裡面,這就是資源跳轉。

舉個例子

package cn.sc;

import javax.servlet.RequestDispatcher;
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("/test1")
public class test1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我的貂,蟬在哪裡");
        //1.獲取request的請求轉發器,內部引數為轉發的路徑
        RequestDispatcher requestDispatcher = request.getRequestDispatcher("/test2");
        //2.呼叫轉發器物件,傳入引數request和response
        requestDispatcher.forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

跳轉到test2

package cn.sc;

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("/test2")
public class test2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("千軍萬馬一將在,探囊取物有何難");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

結果為
在這裡插入圖片描述