1、中文处理的两种方法
1、对所有的数据进行再编码:ISO8859-1 编码,String类中的getBytes("ISO8859-1") ;
public byte[] getBytes("encoding"),再将 byte 数组重新变为字符串
String name = new String(request.getParameter("uname").getBytes("ISO8859-1"))
2、设置统一字符编码:request.setCharacterEncoding("GBK") ;
public void setCharacterEncoding(String env) throws UnsupportedEncodingException
GBK > GB2312 GBK是中文编码、GB2312 是简体中文编码
<%@ page contentType="text/html;charset=gbk"%>
< html>
< body>
< %
// 接收内容
/*
String name = request.getParameter("uname") ;
byte[] b = name.getBytes("ISO8859-1") ;
name = new String(b) ;
*/
// String name = new String(request.getParameter("uname").getBytes("ISO8859-1")) ;
request.setCharacterEncoding("GBK") ;
String name = request.getParameter("uname") ;
%>
< h1>输入内容为:<%=name%></h1>
< /body>
< /html>
2、如果传递的内容是数组(复选框的情况下、多个下拉列表项)使用 request 的以下方法取得数据:
public String[] getParameterValues(String name)
public String[] getParameterValues(String name)
demo03.html
<html>
< body>
< form action="demo04.jsp" method="post">
用户名:<input type="text" name="uname"><br>
兴趣:
<input type="checkbox" name="inst" value="篮球">篮球
<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>
<input type="submit" value="提交">
< /form>
< /body>
< /html>
demo04.jsp
<%@ page contentType="text/html;charset=gbk"%>
< html>
< body>
< %
// 接收内容
request.setCharacterEncoding("GBK") ;
String name = request.getParameter("uname") ;
String inst[] = request.getParameterValues("inst") ;
%>
< h1>用户名为:<%=name%></h1>
< h1>兴趣为:
< %
for(int i=0;i<inst.length;i++)
{
%>
<%=inst[i]%>、
< %
}
%>
< /h1>
< /body>
< /html>
3、在开发中较为常用的表单控件:隐藏域将内容隐藏起来,使用户不能修改,之后随表单一起提交到服务器上显示
<input type="hidden" name="uname" value="mldn">
4、地址重写
http://localhost/test/basic/04/demo06.jsp?uname=Hello
通过地址重写,可以将内容传递到服务器端 —— 服务器端只认HTTP 协议,而不管接收的内容是以何种形式传送过来的
如果传递多个参数呢?
<a href="demo06.jsp?uname=MLDN&upass=LiXingHua">demo06.jsp</a>
http://localhost/test/basic/04/demo06.jsp?uname=Hello
通过地址重写,可以将内容传递到服务器端 —— 服务器端只认HTTP 协议,而不管接收的内容是以何种形式传送过来的
如果传递多个参数呢?
<a href="demo06.jsp?uname=MLDN&upass=LiXingHua">demo06.jsp</a>
5、getParameterNames 取得客户端所有请求的参数
public Enumeration getParameterNames()
Enumeration:枚举
Enumeration:枚举
demo7.html
<html>
< body>
< form action="demo08.jsp" method="post">
用户名:<input type="text" name="uname"><br>
密码:<input type="password" name="upass"><br>
兴趣:
<input type="checkbox" name="**inst" value="篮球">篮球
<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>
<input type="submit" value="提交">
< /form>
< /body>
< /html>
demo08.jsp 体会下面代码的优点,不用考虑请求参数的个数
<%@ page contentType="text/html;charset=gbk"%>
< %@ page import="java.util.*"%>
< html>
< body>
< %
// 接收内容
request.setCharacterEncoding("GBK") ;
Enumeration enu = request.getParameterNames() ;
%>
< %
while(enu.hasMoreElements())
{
String name = (String)enu.nextElement() ;
if(name.startsWith("**"))
{
String temp[] = request.getParameterValues(name) ;
%>
<h1><%=name%> -->
< %
for(int i=0;i<temp.length;i++)
{
%>
<%=temp[i]%>、
< %
}
%>
</h1>
< %
}
else
{
%>
<h1><%=name%> --> <%=request.getParameter(name)%></h1>
< %
}
}
%>
< /h1>
< /body>
< /html>
6、功能:取得客户端 IP 地址public String getRemoteAddr()
总结:只要是客户端信息,在服务器端都可以通过 request 对象取得