首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Servlet 獲取前端數據三大核心方法詳解

     編輯:Java 綜合教學

三個核心 API

方法用途回傳型別典型場景
getParameter(name)單值參數String文本框、單選按鈕、下拉選單
getParameterValues(name)多值參數String[]複選框、多選下拉、同名參數
getParameterNames()所有參數名Enumeration<String>動態表單、除錯列印所有參數

完整範例:表單提交與後端接收

HTML 表單

<form action="servlet/Test" method="post">
  <table>
    <tr><td>姓名:</td><td><input type="text" name="username" /></td></tr>
    <tr><td>愛好:</td><td>
        <input type="checkbox" name="hobby" value="NBA" />NBA
        <input type="checkbox" name="hobby" value="旅遊" />旅遊
        <input type="checkbox" name="hobby" value="看書" />看書
    </td></tr>
    <tr><td><input type="submit" value="提交" /></td></tr>
  </table>
</form>

Servlet 處理

@WebServlet("/servlet/Test")
public class Test extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 1. 解決 POST 中文亂碼(必須在讀取參數前)
        request.setCharacterEncoding("UTF-8");

        // 2. 獲取單值
        String username = request.getParameter("username");
        System.out.println("username = " + username);

        // 3. 獲取多值(複選框)
        String[] hobbies = request.getParameterValues("hobby");
        if (hobbies != null) {
            for (String h : hobbies) {
                System.out.println("hobby = " + h);
            }
        }

        // 4. 響應前端
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("姓名:" + username + "<br/>");
        out.println("愛好:" + (hobbies != null ? String.join(", ", hobbies) : "無"));
    }
}

關鍵細節

  • 亂碼處理:POST 必須 request.setCharacterEncoding("UTF-8");GET 需在 Tomcat server.xml 設 URIEncoding="UTF-8"。
  • null 安全:getParameterValues 若無該參數回傳 null,需判斷再遍歷。
  • 編碼一致:頁面 <meta charset="UTF-8">、請求編碼、響應編碼、資料庫編碼全鏈路統一。

GET vs POST 差異

特性GETPOST
參數位置URL 查詢字串請求體
長度限制約 2KB無實質限制
安全性明文可見相對隱蔽
幂等性是否
適用場景查詢、分頁、搜尋新增、修改、刪除、上傳

最佳實踐

  • 統一在 BaseServlet 或 Filter 中設定編碼。
  • 使用 BeanUtils.populate() 或框架自動綁定替代手動 getParameter。
  • 檔案上傳需用 multipart/form-data + Commons FileUpload 或 Servlet 3.0 @MultipartConfig。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved