Servlet为检索请求参数提供几种方法;
(1)getParameterMap()获取的参数是Map类型的,我们需要通过循环遍历来把它取出来
(2)getParameterVaules()根据Vaule的值获取的参数是String类型的数组,
(3)getParameter()通过name来获取请求的参数。
package com.zhengshanming;
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.net.URLDecoder;
import java.net.URLEncoder;
import java.net.UnknownServiceException;
import java.util.Map;
@WebServlet("/req")
public class ReqAndRes extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8"); //POST中文乱码姐解决问你题
//request对象 获取请求数据
String name = req.getParameter("name"); //url?name = zhangsan
resp.setHeader("content-type", "text/html;charset=utf-8");
resp.getWriter().write("<h1>" + name + ", 欢迎你!" + "</h1>");
//getParameterMap
Map<String, String[]> map = req.getParameterMap();
for (String key : map.keySet()) {
//username:zhangsan
System.out.print(key + ":");
//获取值
String[] vaules = map.get(key);
for (String vaule : vaules) {
vaule = new String(vaule.getBytes("ISO-8859-1"), "utf-8");
System.out.print(vaule + " ");
}
System.out.println();
}
//getParameterVaules
String[] agr = req.getParameterValues("hobby");
for (String a : agr) {
System.out.println(a);
}
//getParameter
String username = req.getParameter("username");
String password = req.getParameter("password");
//解决乱码问题
/*
*原理:
编码:
URLEncoder.encode(str,"UTF-8")
* 解码:
URLDecoder.decode(str,"ISO-8859-1");
*/
username = new String(username.getBytes("ISO-8859-1"), "utf-8");
System.out.println("username :" + username);
System.out.println("password: " + password);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}