JSP基础——属性保存范围和request对象
JSP属性保存范围
JSP中提供了四种属性保存范围,分别为page,request,session及application。
1、page范围,指设置的属性只在当前页面有效。通过pageContext的setAttribute()方法来设置属性,通过pageContext的getAttribute()来取得属性.
代码范例:
<%
pageContext.setAttribute("name","James");
%>
<%
String str=(String)pageContext.getAttribute("name");
%>
2、request范围,指属性在一次请求范围内有效。如果页面从一个页面跳转到另一个页面,那么该属性就失效了。这里的跳转指的是客户端跳转。服务器端跳转使用<jsp:forward>,该属性仍然有效。
通过request的setAttribute()方法来设置属性,通过request的getAttribute()方法来取得属性。
代码范例:
主页面:
<%
request.setAttribute("name","James");
%>
<a href="aa.jsp">跳转到aa</a>
跳转页面:
<%
String str=(String)request.getAttribute("name");
%>
3、session范围,也就是客户浏览器与服务器一次会话范围内,如果和服务器断开连接,那这个属性就失效了。
通过session的setAttribute()方法来设置属性,通过session的getAttribute()方法来取得属性。
如果重新打开浏览器,就不能获得session范围属性了,因为会话已经结束。
4、application范围,指整个服务器范围,直到服务器停止以后才会失效。
通过application的setAttribute()方法来设置属性,通过application的getAttribute()方法来取得属性。
只要服务器不重启,就能够在任何页面中获得application范围保存的属性,重新打开浏览器也可以。
5、移除属性:通过调用相应对象的removeAttribute()方法就可以移除指定属性。
Request对象
request对象不但可以用来设置和取得request范围变量,还可以用来获得客户端请求参数,请求的来源,表头,cookies等。
1、获得客户端请求参数,包括:
getParameter(String name) 获得参数名为name的参数值;
getParameterNames() 返回一个Enumeration,获得所有参数的名称;
getParameterValues(String[] name) 获得参数名为name的所有参数
getParameterMap() 返回Map,获得所有参数封装的Map实例。
代码范例:
首先使用表单提交一个参数:
<form action="request.jsp" method="post">
用户名:<input type="text" name="username"/>
<input type="submit" value="提交"/>
</form>
在request.jsp页面中,接收参数:
<%
String username=request.getParameter("username");//如果为中文的话,需要设置pageEncoding。
out.println(username);
%>
代码范例:获取所有的参数名称,
主页中设置多个参数,表单提交:
<form action="request.jsp" method="post">
用户名:<input type="text" name="username"/>
密码:<input type="password" name="userpassword"/>
<input type="submit" value="提交"/>
</form>
在request.jsp页面中接收所有参数:
<%
Enumeration e=request.getAParameterNames();
while(e.hasMoreElements()){
String str=(String)e.nextElement();
out.println(str);
}
%>
通过搭配getParameterNames()和getParameter(),可以很方便的获取所有参数的参数值,对上述代码进行修改:
<%
Enumeration e=request.getAParameterNames();
while(e.hasMoreElements()){
String str=(String)e.nextElement();
String strRequest=request.getParameter(str);
out.println(str+":"+strRequest+"<br/>");
}
%>
有些情况下一个参数可能拥有多个参数值,比如多选框,多选列表。要接收多个参数值,就需要使用request对象的getParameterValues()方法。
<form action="request.jsp" method="post">
用户名:<input type="text" name="username"/>
密码:<input type="password" name="userpassword"/>
喜欢的运动:
<input type="checkbox" name="sport" value="pingpang">乒乓球
<input type="checkbox" name="sport" value="basketball">篮球
<input type="checkbox" name="sport" value="football">足球<br/>
<input type="submit" value="提交"/>
</form>
在request.jsp页面中修改代码:
<%
String[] strArr=request.getParameterValues("sport");
out.println("喜欢的运动:");
for(String str:strArr){
out.println(str);
}
%>
最后,可以通过request对象的getParameterMap()方法来获得封装所有参数值的Map对象。通过该Map对象可以获得指定参数的参数值。
代码范例:
<%
Map mapParamter=request.getParameterMap();
String[] strUsername=(String[])mapParamter.get("username");
……
%>
JSP基础——属性保存范围和request对象的更多相关文章
- jsp中国文字形式提交,request对象获取乱码
jsp表单提交中文字符,request对象获取时乱码解决方法 第一种: 在request对象获取页面Charset中的"C"大写,且页面无中文字符,最好用英文,否则MyEclips ...
- Servlet&jsp基础:第五部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 03-【request对象获取请求的数据 & request对象存取值】
request概述(封装了客户端所有的请求数据) request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest.在 ...
- 通过Request对象对cookie的设置、获取
<html> <head></head> <body> <% request.setCharacterEncoding("UTF-8&q ...
- request对象和response对象的作用和相关方法
response对象(响应) 响应行 状态码 :setStatus(int a) 设置状态码 302重定向 304控制缓存 响应头 setHeader() 一个key对应一个value addHead ...
- 【JSP】JSP基础学习记录(三)—— JSP的9个内置对象
本节说一下JSP中的9个内置对象.这9个内置对象都是Servlet API接口的实例,只是JSP规范对他们进行了默认初始化(由JSP页面对应Servlet的_jspService()方法来创建这些实例 ...
- JSP内置对象——out对象/request对象
在这个科技高速发展的时代,迫使我们的脚步一刻都不能停下. 在这个for循环语句当中,我们可以直接使用jsp内置对象中的out对象来给浏览器打印输出,那么这个out对象就是一个内置对象, 在这里,我们使 ...
- JSP内置对象——request对象
request对象request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息.系统信息.请求方式和请求参数等. 通过request对象提供的各种方法可以处理客户端浏览器提交的 ...
- JSP中Out和Request对象详解
内置表示不需要new便可直接使用. 一.基础知识 1.缓冲区:IO最原始是一个一个字节的读取,这就像吃米饭的时候一粒一粒的吃,很没有效率,这时候就有了碗,一碗一碗的吃,岂不痛快. 2.Get提交不能超 ...
随机推荐
- SQL经典面试题及答案
1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2 ...
- UIScrollView内容缩放
•有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理 也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScr ...
- 【图像处理】【SEED-VPM】2.接口
—————————————————————————————————————————————————————————————— 对比 ①最好是HDMI: ②分量也是高清的范围,得是比点对点的HDMI低一 ...
- C# 进程和线程
一.进程和线程 进程是对一段静态指令序列的动态执行过程,是系统进行资源分配和调度的基本单位.与进程相关的信息包括进程的用户标志.正在执行的已经编译好的程序.程序和数据在存储器中的位置等.同一个进程有可 ...
- IOS 学习 开发 自定义 UINavigationController 导航
文件目录如下:基本导航顺序: root -> First -> Second -> Third.其中,FirstViewController作为 navigation堆栈的rootv ...
- eclipse 启动失败(找不到jvm)
今天启动eclipse时提示了一个错误 在网上找到的解决方法是在eclipse的快捷方式中加入Java的JVM的路径,方法如下: 右键eclipse快捷方式 ->属性 在目标中 如果只有 D: ...
- WebStorm常用配置
设置 快捷键设置 可以采用多种风格,这里采用Visual Studio风格,便于习惯使用其它IDE的用户迁移. JavaScript版本设置 JavaScript的主流版本已升至ESMAScript6 ...
- 同上! 下拉复选框 点击当前的checkbox 选中后面li 添加到指定区域
(function() { $(".cxbtntj").click(function(){ console.log($("#jsLi1").attr(" ...
- TypeScript Handbook 1——基本类型(翻译)
原文出处: http://www.typescriptlang.org/Handbook 基于对web开发的需要和对安神的崇拜,打算学习一下typescript. 能力有限,基本属于在自己认识的基础上 ...
- iOS学习之判断是否有网络的方法
在实际开发中, 会有这样一个需求: 用户在有网的状态下会直接从网络请求数据, 在没网的情况下直接从本地读取数据. 下边的方法可以判断是否有网络. - (BOOL)connectedToNetwork ...