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提交不能超 ...
随机推荐
- JSON简介
JSON的全称是JavaScript Object Notion,即JavaScript对象符号,它是一种轻量级的数据交换格式,JSON的数据格式既适合人来读/写,也适合计算机本身解析和生成.最早 ...
- DeviceIoControl 应用层如何和驱动层通信?
调用的方法之一的DeviceIoControl 驱动层提供设备名 例如filedisk 在驱动层 首先先是注册列表 用winObj查看 filedisk的驱动对象 但是 这八个对象时怎么生成的呢? 我 ...
- leetcode6
好吧,今天晚上赶项目确实是做不了三道题目了,最近项目在网络编程方面有些进步,学到了东西,有时间再积累下来,很深的体会就是,和别人一起写代码,虽然蛋疼但是比自己一个人写要好点,不过发现自己对链表和排序什 ...
- TCP/IP 七层协议
- ajax属性 data--------------20160705
$.ajax({ type : "get", //这里get和post都可以 url : "cccccc.ccc", data: "name = xx ...
- christian louboutin ballerinas outlet
www.heelschuhe.de, Wie auch immer, Schneiden auf den Punkt; David und Connie in Vancouver: Wir hoffe ...
- DOM4J的使用
http://blog.csdn.net/redarmy_chen/article/details/12969219 http://blog.csdn.net/wlbing0625/article/d ...
- Linux/Unix 线程同步技术之互斥量(1)
众所周知,互斥量(mutex)是同步线程对共享资源访问的技术,用来防止下面这种情况:线程A试图访问某个共享资源时,线程B正在对其进行修改,从而造成资源状态不一致.与之相关的一个术语临界区(critic ...
- innerHTML属性
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- 线程的Abort方法有感
今天看CSDN上一个很老的帖子,有个人说Thread.Abort()方法调用之后一定会抛出异常,我对这个有点疑问. 于是自己做了一个测试demo,来研究Abort抛出异常的时机.废话少说,直接上代码: ...