目录
1. 在HttpServletRequest请求中,getParameter方法用于在服务器这边获取到请求中的参数,主要在query string中;
query string中的键值对都是程序员自定义的,实际开发中使用非常广泛,用于对本次访问进行补充说明;
2. 可以理解为:请求进入tomcat后,其query string会被tomcat解析为一个map
.java内容如下:
- 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("/GetParameter")
- public class GetParameterServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- // 约定:请求中的query string形如username=zhangsan&password=123
- String username = req.getParameter("username");
- String password = req.getParameter("password");
- System.out.println("username: "+ username);
- System.out.println("password: "+ password);
- resp.getWriter().write("ok");
- }
- }
通过浏览器访问:
1. 当请求中没有手动添加query string部分时,进行访问:
浏览器也可以收到返回的ok响应:

在服务器端,两个key对应的value均为null:

2. 当手动添加query string后再访问:

此时再查看服务器端,请求中的query string部分就被服务器获取到了:

现假设客户端发送给服务器的请求中query string部分内容为:username=张三&password=456:

可见服务器响应返回成功。
查看服务器端:

虽然此处汉字也能正确显示,但是存在风险的。
url中如果出现了中文或其他特殊符号,最好进行urlencode操作,否则可能有些服务器无法正确处理:
比如对于上例中的“张三”二字,可以使用urlencode工具进行编码:

在浏览器端将“张三”替换为以上编码:

(浏览器会自动识别编码,解码为汉语)
如果浏览器没有解码,服务器会将其解码为汉语,查看服务器端:
