request对象是JSP中重要的对象。
主要作用有三个:
1. 获取请求参数。每个request对象封装着一次用户请求,所有的请求参数都被封装在requst中。
常用方法:
String getParameter(String paramName); 获取paramName请求参数的值。
String[] getParameterValues(String paramName); 当请求参数有多个时,返回一个数组。
例如客户端存在多个name = "check"的复选框。
那么它们参数传递的形式就是:xx.jsp?check="val1"&check="val2"&...
在xx.jsp中获取就要用到该方法。
2. 操作request范围的属性。
常用方法:
request.setAttribute(String attrName, Object attrValue); 将attValue设置成request范围的属性
Object getAttribute(String attName); 获取request范围的属性
3. 执行forward 或 include
常用方法:
【注意】调用下面方法的对象必须是RequestDispatcher,
所以必须先用request.getRequestDispatcher(String path)获取RequestDispatcher对象
forward(ServketRequest request, ServletResponse response); 执行forward
eg: getRequestDispatcher("/a.jsp").forward(request,response);
使用request的getRequestDispatcher(String path)方法时,path字符串必须以斜线开头。
include(ServketRequest request, ServletResponse response); 执行include
eg: getRequestDispatcher("/a.jsp").forward(request,response);
【example】
index.jsp:
<form action="first.jsp" method="post">
输入取款金额:<input type="text" name="money"/><br>
<input type="submit" value="提交"/><br>
</form>
first.jsp:
<%
double money = Double.parseDouble(request.getParameter("money"));
if(money <= 500){
out.println("给你"+ money +"元");
}else{
List list = new ArrayList();
list.add(0,1000);
list.add(1,2000);
list.add(2,3000);
request.setAttribute("list",list);
request.getRequestDispatcher("/second.jsp").forward(request,response);
%>
<%--<jsp:forward page="second.jsp" />--%>
<%
}
%>
重定向可以使用jsp的动作指令<jsp:forward page=""/>,也可以使用RequestDispatcher.forward(request, response)方法
second.jsp:
<%
out.println("输出金额:"+request.getParameter("money"));
out.println("<br>");
List list = (ArrayList)request.getAttribute("list");
Iterator iter = list.iterator();
while(iter.hasNext()){
String val = iter.next().toString();
out.println(val);
out.println("<br>");
}
%>
【转】servletRequest 和 HttpServletRequest 的区别:
filter中的参数是ServletRequest,而struts的action中execute方法参数是HttpServletRequest
HttpServletRequest继承ServletRequest,Servlet里有doGet、doPost方法 ,没有doPut方法,是和form的get post对应的.
servletRequest是接口,httpServletRequest是实现,但是有些方法是httpServletRequest独有的,比如getSession()。httpServletRequest增加了和HTTP相关的一些方法。
而所谓的request(在JSP中使用的)其实只是规范中的一个名称而已。
你可以在JSP中使用out.println(request)来看看这个类的名字。