【JavaWeb】Jsp之三 Jsp内置requset学习

Jsp的内置对象

内置对象类型属性范围
requestjavax.servlet.http.HttpServletRequestrequest
responsejavax.servlet.http.HttpServletResponsepage
sessionjavax.servlet.http.HttpSessionsession
applicationjavax.servlet.ServletContextapplication
configjavax.servlet.ServletConfigpage
pageContextjavax.servlet.jsp.PageContextpage
outjavax.servlet.jsp.JspWriterpage
pagejava.lang.Objectpage
exceptionjava.lang.Throwablepage

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值