Servlet
首先我们来介绍一下什么是servlet。
Servlet , 服务小程序 ,是 Java Web 的一个重要概念,一种为客户端提供自定义服务的机制。
URL参数
如果要查询学号从20210002到20210004的学生数据,客户端需要把请求的参数发给服务器 。请求的参数可以附在URL末尾, 例如, http://../QueryById?from=20210002&to=20210004。
- URL参数的写法规则:
1 以问号引导 QueryById?xxxxxxxxxxx
2 多个参数对中间用 & 分开 ,示例:?key1=value1&key2=value2&key=value3
- 在 Servlet 中可以取得URL里的参数 String value = request.getParameter ( key )
- 表单参数分为两种:
GET 请求:附加于URL末尾
POST 请求:附于HTTP正文中
中文URL编码
添加一个QueryByName 服务,实现按学生的姓名查询。 此时,需要把一个中文参数传递到后台,中文不能直接放在 URL 里 。
例如 http://xx.x.x/QueryById?filter=张, 这样是不支持的,必须把中文字符转成百分号形式的编码。
URL编码: '张' -> '%E5%BC%A0' ( E5 BC A0)
URL解码: '%E5%BC%A0' -> '张'
注: 以上均为 UTF-8 编码。
// '张' -> '%E5%BC%A0'
public static void testEncode()throws Exception
{
String str = "张";
String query = URLEncoder.encode(str, "UTF-8");
System.out.println("编码后: " + query);
}
// '%E5%BC%A0' -> '张'
public static void testDecode()throws Exception
{
String str = "%E5%BC%A0";
String query = URLDecoder.decode(str, "UTF-8");
System.out.println("解码后: " + query);
}
- request.getParameter(key) 返回的已经是原文, 在 tomcat8 里,默认按UTF-8 来解码参数值。我们需要明白URL里的百分号形式编码 ,在框架未能正确处理URL编码的时候,应该自己实现中文的URL编码/解码。