您的位置:首页 > Web前端 > JavaScript

JSP内置对象requset学习

2013-08-07 09:23 225 查看
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.String name),然后遍历数组输出结果!

隐藏域和地址重写的应用: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: