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提交不能超 ...
随机推荐
- μC/OS-Ⅲ系统中的任务就续表
μC/OS-Ⅲ支持任意数目的不同优先级.一般情况下64级优先级就足够了. 在μC/OS-Ⅲ中所有已经就绪等待运 行的任务都被放入一个我为的“就续表”(ready list)中.就续表包括两部分:一个就 ...
- VBA嘘嘘嘘(1)——将Excel数据填入到已存在的Word模板表格(实例应用)
傻瓜可以写出机器读懂得代码,但写出让人能读懂的代码的是优秀程序员 Sub 填充() Application.ScreenUpdating = False 'ScreenUpdating 是控制你的ex ...
- OC NSString 基本操作(用到补充持续更新)
1.将字符串拆分成数组 NSString *string = @"1,2,3,4"; NSArray *array = [string componentsSeparatedByS ...
- Mysql VARCHAR的最大长度到底是多少
MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以上的版本中,varchar数据 ...
- 算法导论----贪心算法,删除k个数,使剩下的数字最小
先贴问题: 1个n位正整数a,删去其中的k位,得到一个新的正整数b,设计一个贪心算法,对给定的a和k得到最小的b: 一.我的想法:先看例子:a=5476579228:去掉4位,则位数n=10,k=4, ...
- C++软件添加dump调试打印日志
#include <DbgHelp.h> #pragma comment(lib, "dbghelp.lib") LONG WINAPI TopLevelExcepti ...
- jquery点击获取子元素ID值
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- java并发包:线程池 executorservice
1.newCachedThreadPool() -缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse.如果没有,就建一个新的线程加入池中 -缓存型池子通常用于执行一些生存期很短的异步型 ...
- UVa 1391 Astronauts (2SAT)
题意:给出一些宇航员他们的年龄,x是他们的平均年龄,其中A任务只能给年龄大于等于x的人,B任务只能给小于x的人,C任务没有限制.再给出m对人,他们不能同任务.现在要你输出一组符合要求的任务安排. 思路 ...
- String类和StringBuffer类的区别
首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...