02.JSP内置对象
一、内置对象:不再由用户进行实例化而可以直接使用的对象,一共九种,一定要清楚的记住每种内置对象的类型,以方便查询文档。
二、四种属性保存范围
1, 属性保存范围:指一个设置的对象,可以经过多少个其他的页面后仍然可以访问的保存范围。
2, 四种属性范围:
A,page范围,由pageContext对象完成,只能在一个页面中保存属,跳转之后无效
B,request范围,只在一次请求中保存,服务器跳转之后依然有效(客户端跳转无效)
C,session范围,在一次会话范围中,无论何种跳转都可以使用,而且从跳转之后的页面新开一个页面也可以使用,但是新开的浏览器无法使用访问跳转后的页面无法使用。对于服务器而言,每一个连接到它的客户端都是一个session
D,application范围,在整个服务器保存,所有用户都可以使用。属性设置后,无论如何跳转,无论是否是新开的浏览器,都可以访问。
特别注意:A,四种属性设置优先性,page>request>session>application,范围越窄,服务器压力越小
B,可以通过pageContext设置四种属性范围
3, 属性设置方法:每种属性都有以下三种方法
范例:page:只能在本页面使用设置的属性
request:可以在服务器跳转之后的页面访问设置的属性,而且具有传递性
session:在一个页面设置的属性,可以被同一会话的其他跳转页面使用
application:在一个页面中设置的属性,可以在服务器未关闭期间,被其他跳转页面,或者新打开的浏览器页面使用
4,通过pageContext设置四种属性范围:
pageContext.setAttribute(String name,Object value,int scope),其中scope取四种常量PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE,APPLICATION_SCOPE分别表示设置四种属性范围
对应的,取得不同属性也需要设置scope值:pageContext.setAtttribute(String name,int scope)
三、request对象
1, 作用:主要用来接收客户端(或其他页面)发送来的请求消息,如请求的参数,发送的头信息。
request是javax.servlet.http.HttpServletRequest接口的实例化对象,表示此对象主要应用在http协议上。HttpServletRequest接口的父接口ServletRequset却只有HttpServletRequest一个子接口,不将其合并成一个接口,是为从长远考虑,因为现在主要使用的是http协议,说不定以后会出现其他协议,这样新的协议可以直接继承ServletRequest接口
2, 参数传递
a, request的所有方法都是围绕如何接收参数及头信息,接受的参数包括表单提交过来的文本,密码,单选框,复选框,其中复选框需要以数组的形式接收,public String[] request.getParameters(“***”)
b,地址重写的方式传递参数:在一个jsp页面的url路径后面添加 ?param1=value1¶m2=value2…..即可向该页面传递参数
c, 表单提交时,method的post与get方式的区别:
post方式:提交后的地址栏为目标地址,且只能用于表单提交
get方式:提交后的地址栏变成目标页面地址,且会以地址重写的方式显示,则传递时肯定会受到地址栏长度的限制
且get方式要求表单数据必须是ASCIll字符
点击刷新,post会重新提交数据,get无影响;且post方式比get方式安全性高。
总结:get是向服务器索取数据的一种请求,查询键值对是通过请求的URL发送的;post是向服务器提交数据的一种请求,查询键值对是通过请求的HTTP消息主体中发送的
d,获取所有参数名称:Enumeration getParameterNames(),返回Enumeration对象,可用nextElement()逐个获取参数
3, 显示头信息
头信息:在请求和回应中包含的其他信息,如客户端IP,Cookie,语言等。请求头信息可以用request的Enumeration getHeaderNames()和request.getHeader方法取得头信息名及内容
4, 其他操作
通过request对象可以取得客户端的IP地址,请求方式,访问的路径,上下文路径名称等
直接打开jsp属于get请求方式
上下文路径名称很重要,可以取得项目根路径,通过它方便的访问同一项目中其他文件夹中的内容
5, 总结
getAttirbute与getParameter的区别:
四、response对象
1, 功能:主要用于服务器回应客户端请求。是HttpServletResponse接口的实例,同request类似,HttpServletResponse的父接口ServletResponse也只有一个子接口
2, 方法:
设置头信息
定时刷新:
定时跳转:
这种跳转只有在服务器处理后才有效果,当页面跳转之后,如果直接后退,没经过服务器处理,则不会跳转
html本身有设置头信息的功能:
通过设置头信息的定时跳转属于客户端跳转,地址栏会改变
页面跳转
也属于客户端跳转
小结:客户端跳转也服务器端跳转区别
服务器端跳转:地址栏不变,可以传递request属性,属于无条件跳转,跳转后面的语句不再执行,所以如果有用JDBC连接数据库的话,必须在服务器跳转之前关闭。<jsp:forward page=””/>
客户端跳转:地址栏改变,不能传递request属性,跳转后面的语句将继续执行。
服务器跳转是客户端发送一个jsp或Servlet资源请求,这个资源又将请求转到另一个服务器资源,然后才响应客户端,即一次请求,一次响应
客户端跳转是客户端发送一个资源请求,服务器响应,客户端再根据这个响应中URL地址,再发送一次请求,然后服务器再次响应即两次请求,两次响应
服务器跳转:
- <jsp:forward page=””/>
- pageContext.forward()
- request.getRequestDispatcher(“1.jsp”).forward(request,response)
客户端跳转:
- 链接跳转:<a href=””></a>
- 表单提交
- 重定向Response.sendRedirect(“”)
- 设置头信息定时跳转,包括response.setHeader()和html自带设置头信息功能
Cookie:浏览器提供的一种技术,可以让一些服务器端程序或者在客户端进行处理的数据,放在浏览器本地计算机中,不需通过网络传输,可以提高网页处理效率,减少服务器负载
设置并保存Cookie: 一个Cookie是由name跟value组成,setMaxAge()用于设置Cookie保存时间,不设置的话,一 个Cookie默认是暂时保存在浏览器上,关闭浏览器之后,Cookie消失。运行此jsp,则将c1,c2保存在客户端。
在另外一个页面取得Cookie:
注意:通过request对象取得Cookie;Cookie本身是存在安全隐患的
五、session对象
1,session id:对于每一个用户,其实就表示一个session,服务器靠session id 来区分这些用户。即每一个通过浏览器连接到服务器的用户都会由服务器分配一个不会重复的编号
通过pageContext操纵对内置对象方法
jsp页面运行时,会自动的设置一个Cookie,那个Cookie也即用户的session id
服务器关闭后,会重新分配session id
2,登陆验证及注销:验证是否登陆或是否处于登陆状态
原理:用户登录成功,则设置一个标志session属性,并跳转至welcome.jsp,在整个会话期间,这个属性一直有效,用户可以在不关闭浏览器且不注销的前提下,重复多次访问welcome.jsp而不需再次登陆验证。如果用户未登录,或关闭浏览器,或注销登陆,则标志session属性无效或会失效,此时如果直接访问welcome.jsp则会提示未登录。原理可参照淘宝网登陆注销及访问规则。
Login.jsp
注意,表单的提交页面为页面本身,如果登陆成功,则将loginState设置为标志属性有效,表示可以访问welcome页。
welcome.jsp:
如果登陆成功,则在整个会话期间(不关闭浏览器,不注销)则session属性loginState一直有效,可以重复多次直接访问welcome页而不用再次登陆验证
logout.jsp:
注销session属性,并跳转至登陆页,此时session属性失效,无法直接访问welcome页
3,判断是否是新用户
一次会话中,如果第一次打开此jsp页面,则显示欢迎新用户光临,否则显示你已经是老用户了
六、application对象
1, application是javax.servlet.ServletContext接口的实例化对象,代表整个Servlet上下文
2, 方法
当然,application也有自己setAttribute(),getAttribute(),removeAttribute()等属性方法
取得虚拟路径名称
在jsp中,有一个方法的功能可以与之完全对应:getServletContext()方法
String url1= getServletContext().getRealPath(“/”)或者String url2=this. getServletContext().getRealPath(“/”)都能取得虚拟目录的绝对路径。现在一般重点使用getServletContext()方法
七、web安全性与config对象
1, 将jsp资源保存在WEB-INF文件夹中是最安全的,但是必须通过映射路径才可以访问
2, 通过config对象可以取得初始化的配置参数
八、pageContext对象
1,pageContext对象是javax.servlet.jsp.PageContext类的实例,主要表示一个jsp页面的上下文,几乎可以操作所有的的内置对象
2,主要方法
跳转、包含、取得配置对象,和四种属性范围对象
跳转的同时,传递参数:
操作内置对象对象:
02.JSP内置对象的更多相关文章
- JavaWeb学习----JSP内置对象详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- jsp 内置对象(五)
1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必 ...
- jsp内置对象浅谈
jsp内置对象浅谈 | 浏览:1184 | 更新:2013-12-11 16:01 JSP内置对象:我们在使用JSP进行页面编程时可以直接使用而不需自己创建的一些Web容器已为用户创建好的JSP内置对 ...
- JSP内置对象-request
JSP内置对象即无需声明就可以直接使用的对象实例,在实际的开发过程中,比较常用的JSP对象有request,response,session,out和application等,笔者在本文章中将简单介绍 ...
- Jsp内置对象及EL表达式的使用
一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...
- Java遇见HTML——JSP篇之JSP内置对象(上)
一.JSP内置对象简介 1.1.内置对象简介 JSP内置对象是WEB容器中创建的一组对象,可以直接使用不需要new,如截图中的out 对象. JSP有九大内置对象: 五大常用对象: out.reque ...
- JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
- JSP内置对象详解
jsp中内置对象:request.response.session.applecation.out.pagecontesx.config.page.exception.cookie 1.request ...
- JSP内置对象(上)
在JSP中为了简化页面的开发提供了一些内置的对象.这些对象不需要由JSP的编写者通过new关键字实例化,他们都由容器实现和管理,在所有的JSP页面中都可以使用内置对象. JSP中共有9大内置对象: o ...
随机推荐
- 【转】python数据格式化之pprint
pprint – 美观打印 作用:美观打印数据结构 pprint 包含一个“美观打印机”,用于生成数据结构的一个美观视图.格式化工具会生成数据结构的一些表示,不仅可以由解释器正确地解析,而且便于人类阅 ...
- ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL
之前介绍了My Blog如何使用ADO.NET来访问SQL Server获取数据.本章将介绍如何使用My SQL来完成数据管理. 在使用My SQL之前需确保开发环境中安装了My SQL数据库和Con ...
- javascript正则表达式入门
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- django使用xlwt导出excel文件
这里只是mark一下导出的方法,并没有做什么REST处理和异常处理. 维护统一的style样式,可以使导出的数据更加美观. def export_excel(request): # 设置HttpRes ...
- ViewPager使用记录1——展示固定数据
ViewPager是v4支持库中的一个控件,相信几乎所有接触Android开发的人都对它不陌生.之所以还要在这里翻旧账,是因为我在最近的项目中有多个需求用到了它,觉得自己对它的认识不够深刻.我计划从最 ...
- servlet过滤器简化版
什么是过滤器 在struts2 中集成了过滤器,并可以根据需要选择合适自己的过滤器进行配置 , 过滤器:是基于函数回调的,运用java中的反射机制工作在struts2只能对于action起作用,在se ...
- Django(二)
QuerySet与惰性机制: 所谓惰性机制:Publisher.objects.all()或者所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个Que ...
- (转)log4j使用介绍
原文出自: log4j使用介绍 日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录.以下是个人经验,具体请参考Log4j文档指南. Log4j ...
- Python3爬虫登录模拟
使用Python爬虫登录系统之后,能够实现的操作就多了很多,下面大致介绍下如何使用Python模拟登录. 我们都知道,在前端的加密验证,只要把将加密环境还原出来,便能够很轻易地登录. 首先分析登录的步 ...
- Mybatis Mapper.xml 需要查询返回List<String>
当需要查询返回 List<String> <select id="getByIds" parameterType="java.lang.String&q ...