您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > JSP >

Servlet/JSP 容器开发手记4-Request Parameter

来源:未知 责任编辑:智问网络 发表时间:2013-10-07 00:59 点击:

请求参数的来源

1. 请求 URL 的查询串, 如 /localhost/abc/test?abc=ddd&bbb=ccc, 在问号后面的字符串
2. POST 请求时, 如果 Content-Type = "application/x-www-form-urlencoded", 则参数来自请求内容(格式同查询串)

对于第一种情况, 请求参数可以在任何情况下使用 getParameter 系列方法读取, 采用 ISO-8859-1 编码

对于第二种情况, 则有点复杂, 它涉及到 ServletRequest 以下几个方法

getParameter 系列方法
getCharacterEncoding
getInputStream
getReader

getCharacterEncoding

一般情况下, 请求 characterEncoding 来自于 Content-Type 的 charset 参数, 如果 charset 参数未设, 则为 null

getInputStream 和 getReader (纠正手记1的错误)

这两个方法用于读取请求内容, 并且不能同时使用, 如果使用其中一个后再试图使用另一个, 则抛出 IllegalStateException
getReader方法返回 BufferedReader 对象, 该对象使用 getCharacterEncoding 对字符串进行编码, 如果为 null, 则使用 ISO-8859-1

getParameter 系列方法

当参数来自于请求内容时, 由于要读取请求内容而用到流, 所以

1. 当使用 getParameter 系列方法之前使用了 getInputStream 和 getReader 方法, 则不能使用 getParameter 系列方法得到请求参数
2. 当使用 getParameter 系列方法后再使用流, 则流应该已到了结尾, 此时可以得到请求参数
3. 使用 getCharacterEncoding 对参数编码, 如果为 null, 则使用 ISO-8859-1
4. 不直接使用 getInputStream 或 getReader 方法来得到流用以解析参数, 因为这会影响状态, 造成 getInputStream 或 getReader 方法抛出 IllegalStateException

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • JSP与Servlet
    • 自己动手写MiniBBS系列(基本篇)之用户登录
    • JSP取当前日期
    • JDBC 入门(一)
    • 打开一个jsp页面默认查询所有数据,调用action
    • 使用JSP标签库验证用户的输入(2)完
    • WIN98/2000下的jsp服务器
    • 自定义JSP标签(tag)浅议
    • Struts学习傻瓜式入门篇
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1