jsp - request对象
request对象是jsp中重要的对象,每个request对象封装着一次用户请求,并且所有的请求参数都被封装在request对象中,因此,request对象是获取请求参数的重要途径。
web应用是请求/响应架构的应用,浏览器发送请求时通常总会附带一些请求头,还可能包含一些请求参数发送给服务器,服务器负责解析请求头/请求参数的就是jsp或者servlet,而jsp和servlet取得请求参数的途径就是request,request是HttpServletRequest接口的实例,提供如下的几个方法:
String getParameter(String paramName):获取paramName请求参数的值;
Map getParamterMap():获取所有请求参数名和参数值所组成的Map对象;
String[] getParameterValues(String name):paramName 请求参数的值,当该请求参数有多个值时,返回多个值组成的数组;
访问请求头:
String getHeader(String name):根据指定请求头的值。
java.Util.Enumeration<String> getHeaderNames():获取指定请求头的名称。
java.Util.Enumeration<String> getHeaders(String name):获取指定请求头的多个值。
对于开发人员来说,请求头和请求参数都是由用户发送到服务器的数据,区别在于请求头通常由浏览器自动添加,因此一次请求总是包含若干个请求头;而请求参数则通常需要开发人员控制添加,让客户端发送请求参数通常分为2种情况:
GET方式的请求:直接在浏览器地址栏输入访问地址所发送的请求或提交表单发送请求时,该表单对应的form元素没有设置method属性,或者设置method属性为get,这是get方式的请求。GET方式的请求会将请求参数的名和值转换成字符串,并附加在原URL之后,因此可以在地址栏中看到请求参数名和值。GET请求传送的数据较小,一般不能大于2KB。
POST方式的请求:这种方式通常使用提交表单(由form html元素表示)的方式来发送,且需要设置form元素的method属性为post。POST方式传送的数据量较大,通常认为POST请求参数的大小不受限制,往往取决于服务器的限制,POST请求传输的数据量总比GET请求传输的数据量大。而且POST方式发送的请求参数以及对应的值放在HTML HEADER中传输,用户不能在地址栏里看到请求参数值,安全性相对较高。
eg:
form1.jsp 页面:
request1.jsp 页面:
效果:
表单域注意事项:
并不是每个表单域都生成请求参数的,而是有name属性的表单域才生成请求参数。关于表单域和请求参数的关系遵循如下4点:
》 每个有name 属性的表单域对应一个请求参数。
》 如果有多个表单域有相同的 name 属性,则 多个表单域 只 生成一个请求参数,只是 该参数 有多个值。
》 表单域的 name 属性 指定 请求参数名,value 指定请求参数值。
》 如果某个表单域设置了disabled="disabled"属性,则该表单域不再生成请求参数。
GET 请求方式发送:
url?param1=value1¶m2=value2...
处理GET请求中的中文字符
第一种:
String rawQueryStr = request.getParameter("name");
String queryStr = java.net.URLDecoder.decode(rawQueryStr,"gbk");
第二种:
String str = request.getParameter("name");
byte[] bytes = str.getBytes("ISO-8859-1");
String name = new String(bytes, "utf-8");
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。