Jsp&Servlet学习 --- HttpServletRequest的使用

来源:互联网 发布:50岁知天命是什么意思 编辑:程序博客网 时间:2024/05/17 22:40

HttpServletRequest接口

HttpServletRequest相关API
HttpServletRequest接口继承自ServletRequest接口,ServletRequest定义了一些取得通用信息的方法,如getParameter(),getInputStream()等方法。HttpServletRequest定义了HTTP取得相关信息的方法。

请求信息的取得

可以使用getQueryString()取得Http请求的查询字符串,也可以使用getParameter()方法指定请求参数名称来取得相应的值。如果一个请求参数有多个值,可以使用getParameterValues()取得一个String数组。
getParameterNames()返回一个Enumeration对象,包括所有请求参数的名称。

编码设置

对浏览器的响应编码设置:resp.setContentType("text/html;charset=utf-8");
设置请求对象处理字符串时的编码:req.setCharacterEncoding("utf-8");
设置jsp的编码:<%@ page pageEncoding="utf-8"%>

请求的转发与包含

如果想要把请求给别的Servlet/Jsp处理,可以使用使用HttpServletRequest的getRequestDispatcher()方法取得RequestDispatcher实例,运行时可以制定要转发请求的相对URL或绝对URL,取得实例后就可以使用forward()方法来转发请求,转法时将HttpServletRequest和HttpServletResponse对象作为参数传入,后续的Servlet/Jsp就可以继续使用这两个对象。

RequestDispatcher dispatcher = req.getRequestDispatcher("some.do");dispatcher.forward(req, resp);

如果要执行forward()方法,表示目前的Servlet/Jsp不进行响应,而是将响应的职责交给下一个转发的对象。因此在只想forward之前,不能对浏览器有任何确认的回应,否则会出现IllegalStateException异常,任何未确认的输出在forward()之前会自动清除。
如果要在目前的Servlet/Jsp响应,中间想其他的Servlet/Jsp包括进来回应,则可以使用RequestDispatcher的include()方法,dispatcher.include(req, resp);

ServletRequest的属性

在请求的转发过程中,如果有必须共享的数据,可以将之设置为请求范围属性,或成为ServletRequest属性。方法是使用setAttribute(String name, Object o),通过getAttribute(String name)取得对应名字的属性。如:

int status = 0;req.setAttribute("status", 0);//设置属性System.out.println(req.getAttribute("status"));//取得属性

原文链接

0 0
原创粉丝点击