客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
一、J2EE中乱码问题是最大的问题--做到国际通用。
解决方法一:
String中的方法:public byte[] getBytes(“encoding”);
String name = request.getParameter("uname");
byte[] b = name.getBytes("ISO08859-1");
name = new String(b);
开发中经常使用以下一行替代:
String name = new String(request.getParameter("uname").getBytes("ISO08859-1"));
GBK>GB2312
GBK是中文编码,GB2312只是简体中文编码。
解决方法二:
设置统一的编码方法:
request 中的方法:void setCharacterEncoding(String env)
throws UnsupportedEncodingException
request.setCharacterEncoding("GBK");//将发送段的内容进行再编码
String name = request.getParameter("uname");
二、发送checkbox的请求:
<form action="demo1.jsp" method="post">
兴趣:
<input type="checkbox" name="inst" value="篮球">篮球
<input type="checkbox" name="inst" value="音乐">音乐
<input type="checkbox" name="inst" value="读书">读书
<input type="checkbox" name="inst" value="上网">上网<br>
</form>
处理checkbox的请求:
String[] getParameterValues(String name)
String inst[] = request.getParameterValues("inst")
三、在开发中较为常用的表单控件:隐藏域
将内容隐藏起来,用户不能修改,之后随表单一起提交到服务器上显示。
使用和其他空间相似,区别:在客户端不显示。
<form action="demo02.jsp" method="post">
<input type="hidden" name="uname" value="mac">
<input type="submit" value="提交">
四、地址重写:
http://127.0.0.1:8888/demo02.jsp?uname=Hello
通过地址重写,可以将内容传递到服务器端--服务器端只认http协议,不管以何种方式传送过的。
如果传递多个参数demo02.jsp?uname=Hello&upsw=mac
五、Enumeration getParameterNames() 返回可用参数名的枚举
取得客户端所有请求参数。
Enumeration enum = request.getParameterNames()
while(enum.hasMoreElements()){
String uname = (String)enum.nextElement();//得到的是参数的名称,如inst
String name = request.getParameter("uname");//得到参数的值
}
用getParameterNames()前台增加不影响后台,因为后台有while循环,自动处理所有的内容。
工程上一般将需数组处理的,将其参数名设为**×××格式。
六、其他方法:
object getAttribute(String name) 返回指定属性的属性值
Enumeration getAttributeNames() 返回所有可用属性名的枚举
String getCharacterEncoding() 返回字符编码方式
int getContentLength() 返回请求体的长度(以字节数)
String getContentType() 得到请求体的MIME类型
ServletInputStream getInputStream() 得到请求体中一行的二进制流
String getProtocol() 返回请求用的协议类型及版本号
String getScheme() 返回请求用的计划名,如:http.https及ftp等
String getServerName() 返回接受请求的服务器主机名
int getServerPort() 返回服务器接受此请求所用的端口号
BufferedReader getReader() 返回解码过了的请求体
String getRemoteAddr() 返回发送此请求的客户端IP地址
String getRemoteHost() 返回发送此请求的客户端主机名
void setAttribute(String key,Object obj) 设置属性的属性值
String getRealPath(String path) 返回一虚拟路径的真实路径