Jsp的内置对象
内置对象 | 类型 | 属性范围 |
request | javax.servlet.http.HttpServletRequest | request |
response | javax.servlet.http.HttpServletResponse | page |
session | javax.servlet.http.HttpSession | session |
application | javax.servlet.ServletContext | application |
config | javax.servlet.ServletConfig | page |
pageContext | javax.servlet.jsp.PageContext | page |
out | javax.servlet.jsp.JspWriter | page |
page | java.lang.Object | page |
exception | java.lang.Throwable | page |
request:服务器端接受客户端以HTTP方式传送给它的数据
以便处理客户端的请求实现客户端/服务器端的交互!
重要方法:Methods inherited from interface javax.servlet.ServletRequest
getParameter, getParameterNames, getParameterValues
接受的数据中如何处理乱码问题:再编码
demo:request01.jsp 发送请求, request02.jsp接受请求
request01.jsp
<%@ page contentType="text/html;charset=gb2312" %> <html> <body> <form action="request02.jsp" method="post"> 英文名:<input type="text" name="en_name"></br> 中文名:<input type="text" name="cn_name"></br> <input type="submit" value="提交"> </form> </body> </html>request02.jsp
<%@ page contentType="text/html;charset=gb2312" %> <html> <body> 英文名:<%=request.getParameter("en_name")%></br> 中文名:<%=request.getParameter("cn_name")%></br> <!-- 不处理编码 --> 中文名:<%=new String(request.getParameter("cn_name").getBytes("ISO-8859-1"))%></br> <!-- 进行再次编码 --> </body> </html>request02.jsp输出结果
英文名:terry -->英文不需要处理
中文名:?????? -->没有再编码处理:输出乱码
中文名:李艺辉-->再编码处理:正常输出中文
当然也可以在request.getParameter之前
通过request.setCharacterEncoding("gb2312")处理中文编码问题
此种设置方法会设置整个页面统一的页面请求编码
对于复选框及多个下拉列表框时,接受值因为是返回多个值
所以使用java.lang.String[] getParameterValues(java.lang.Stringname),然后遍历数组输出结果!
隐藏域和地址重写的应用:request03.jsp发送请求,request04.jsp处理请求
request03.jsp
<%@ page contentType="text/html;charset=gb2312" %> <html> <body> <form action="request04.jsp" method="post"> 英文名:<input type="text" name="en_name"></br> 中文名:<input type="text" name="cn_name"></br> 诗人: <input type="checkbox" name="*poet" value="李白">李白 <!--多值用*区别,处理数组--> <input type="checkbox" name="*poet" value="杜甫">杜甫 <input type="checkbox" name="*poet" value="疯子">疯子 <input type="hidden" name="hiddenvalue" value="hello hiddenman"></br> <input type="submit" value="提交"> </form> <a href="request04.jsp?redirect=come from herf&action=fuck you">连接重定向</a> </body> </html>request04.jsp
<%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.util.*" %> <html> <body> 你的IP为:<%=request.getRemoteAddr()%></br> <% request.setCharacterEncoding("gb2312"); Enumeration enu = request.getParameterNames(); %> <% while(enu.hasMoreElements()){ String name = (String)enu.nextElement(); %> <%=name%>: <% if(name.startsWith("*")){ String tempValue[] = request.getParameterValues(name); for(int i=0;i<tempValue.length;i++){ %> <%=tempValue[i]%>、 <% } %> </br> <% }else{ %> <%=request.getParameter(name)%></br> <% } } %> </body> </html>result:
总结:只要是客户端的信息,服务器端都可以通过request对象取得,但是需要注意字符编码的问题!
更多关于request内置对象的方法应用请参阅J2EE的手册
javax.servlet.http
Interface HttpServletRequest
-
All Superinterfaces:
- ServletRequest