Java web的内置对象

JSP中的九个内置对象

No.内置对象类型描述
1pageContextjavax.servlet.jsp.PageContextJSP的页面容器
2requestjavax.servlet.http.HttpServletRequest得到用户的请求信息
3responsejavax.servlet.http.HttpServletResponse服务器向客户端的回应信息
4sessionjavax.servlet.http.HttpSession用来保存每一个用户的信息
5applicationjavax.servlet.ServletContext表示所有用户的共享信息
6configjavax.servlet.ServletConfig服务器配置,可以取得初始化参数
7outjavax.servlet.jsp.JspWriter页面输出
8pagejava.lang.Object表示从该页面中表示出来的一个Servlet实例
9exceptionjava.lang.Throwable表示JSP页面所发生的异常,在错误页中才起作用
四种属性范围:
pageContext:只在一个页面中保存属性,跳转之后无效。 
request:只在一次请求中保存,服务器跳转后依然有效。 
session:在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用。 
application:在整个服务器上保存,所有用户都可以使用 

属性操作方法

No.方法类型描述
1public void setAttribute(String name,Object o)普通设置属性的名称及内容
2public Object getAttribute(String name)普通根据属性名称取得属性
3public void removeAttribute(String name)普通删除指定的属性
page属性范围(pageContext范围)
page属性范围(使用pageContext表示,但是一般来讲都习惯于将这种范围称为page范围)表示将一个属性设置在本页上,跳转之后无法取得

request属性范围 
如果要在服务器跳转之后属性可以继续保存下来,则可以使用request属性范围操作,request属性范围表示的是在服务器跳转之后,所有设置的内容依然会被保留下来 

关于request属性范围的理解 
request表示的是客户端的请求,正常情况下,一次请求服务器只会给予一次回应,那么这个时候如果是服务器端跳转,请求的地址栏没有改变,所以也就相当于回应了一次,而如果地址栏改变了,就相当于是发出了第二次请求,则第一次请求的内容肯定就已经消失了,所以无法取得。 

session属性范围 
如果现在希望一个属性设置之后,可以在任何一个与设置页面相关的页面中取得的话,则就可以使用session属性范围,使用session设置属性之后,不管是客户端跳转还是服务器端跳转,只要属性设置了就都可以取得 

application属性范围
如果现在希望设置一个属性,可以让所有的用户(每一个session)都能看得见的话,则可以将属性范围设置成application,这样属性就保存在了服务器之上。

深入研究page属性范围 
之前研究过的page属性范围中使用的是pageContext进行属性设置的,但是从javax.servlet.jsp.PageContext类中可以发现,有以下的一种设置属性的方法 
public void setAttribute(String name,Object value,int scope)PageContext类中存在四个表示属性范围的常量,可以直接通过这些常量指定scope的内容:
public static final int PAGE_SCOPE
public static final int REQUEST_SCOPE
public static final int SESSION_SCOPE
public static final int APPLICATION_SCOPE
request内置对象 
request内置对象是使用最多的一个对象了,其主要作用是用来接收客户端发送而来的请求信息,例如:请求的参数、发送的头信息等都属于客户端发来的信息,request是javax.servlet.http.HttpServletRequest接口的实例化对象,表示此对象主要是应用在HTTP协议上
对应接口:public interface HttpServletRequest extends ServletRequest

request内置对象的常用操作

No.方法类型描述
1public String getParameter(String name)普通接收客户端发来的请求参数内容
2public String[] getParameterValues(String name)普通取得客户端发来的一组请求参数内容
3public Enumeration getParameterNames()普通取得全部请求参数的名称
4public String getRemoteAddr()普通得到客户端的IP地址
5void setCharacterEncoding(String env) throws UnsupportedEncodingException普通设置统一的请求编码
6public boolean isUserInRole(String role)普通进行用户身份的验证
7public Httpsession getSession()普通取得当前的session对象
8public StringBuffer getRequestURL()普通返回正在请求的路径
9public Enumeration getHeaderNames()普通取得全部请求的头信息的名称
10public String getHeader(String name)普通根据名称取得头信息的内容
11public String getMethod()普通取得用户的提交方式
12public String getServletPath()普通取得访问的路径
13public String getContextPath()普通取得上下文资源路径
request.setCharacterEncoding("GBK") ;
接收请求参数 

equest内置对象中的getParameter()方法可以接收一个表单的文本框中输入的内容,如果有一组参数(同名参数)传递的话,则就必须使用getParameterValues()方法进行接收。
接收全部请求参数的名称
在request内置对象中还有一个灵活的方法就是getParameterNames(),本方法可以返回所有请求参数的名称,但是此方法返回值的类型是Enumeration,所以需要使用hasMoreElements()方法判断是否有内容以及使用nextElement()方法取出内容。
显示全部的头信息
JAVA的WEB开发使用的是HTTP协议,主要的操作就是基于请求和回应,但是在请求和回应的同时也会包含一些其他的信息(例如:客户端的IP、Cookie、语言等),那么这些信息就称为头信息。 
要想取得头信息的名称可以直接通过request内置对象的getHeaderNames(),而要想取出每一个头信息的内容,则需要使用getHeader()方法。 
request对象的主要功能是用于接收用户发来的请求信息
接收参数的方法:getParameter()getParameterValues()getParameterNames()
取得客户端IP地址可以使用getRemoteAddr()
取得上下文名称可以使用getContextPath()
头信息是指附加在请求上一起发送到服务器上的内容。

response对象

response对象的主要作用是用于对客户端的请求进行回应,将WEB服务器处理后的结果发回给客户端。response对象属于javax.servlet.http.HttpServletResponse接口的实例,HttpServletResponse接口的定义如下:
public interface HttpServletResponse extends ServletResponse

response对象的常用方法

No.方法类型描述
1public void addCookie(Cookie cookie)普通向客户端增加Cookie
2public void setHeader(String name,String value)普通设置回应的头信息
3public void sendRedirect(String location) throws IOException普通页面跳转

设置刷新头信息

之前曾经讲解过,客户端在进行请求的时候会发送许多额外的信息,那么这些就是头信息,服务器端也可以根据需要向客户端设置头信息,在所有的头信息的设置中,定时刷新页面的头信息使用的是最多的,直接使用setHeader()方法,将头信息名称设置为refresh,同时指定刷新的时间。

刷新的HTML 指令
<META HTTP-EQUIV="refresh" CONTENT="3;URL=hello.htm">
    
在JSP中除了可以通过头信息的方式完成跳转,也可以使用response对象的sendRedirect()方法直接完成页面的跳转。 
两种跳转的区别是什么?
<jsp:forward>属于服务器端跳转,跳转之后地址栏的信息并不会有任何的改变,而response.sendRedirect()属于客户端跳转,跳转之后地址栏是会改变的,变为跳转之后的页面地址。 
在使用request范围属性的时候,只有是服务器端跳转才能够将request属性保存到跳转页,而如果是客户端跳转,则无法进行属性的传递。 
如果使用的是服务器端跳转的话,则执行到跳转语句之后会立刻进行跳转,如果使用的是客户端跳转,则是在整个页面执行完之后才执行跳转。
操作Cookie 
Cookie是浏览器所提供的一种技术,这种技术让服务器端的程序能将一些只须保存在客户端,或者在客户端进行处理的数据,放在使用中本身的计算机,不须通过网络的传输,因而提高网页处理的效率,而且也能够减少服务器端的负载。但是由于Cookie是服务器端保存在客户端的信息,所以其安全性也是很差的。
在JSP中专门提供了javax.servlet.http.Cookie的操作类。 

Cookie定义的常用方法

No.方法类型描述
1public Cookie(String name,String value)构造实例化Cookie对象,同时设置名字和内容
2public String getName()普通取得Cookie的名字
3public String getValue()普通取得Cookie的内容
4public void setMaxAge(int expiry)普通设置Cookie的保存时间,以秒为单位
设置Cookie 
所有的Cookie是由服务器端设置到客户端上去的,所以要向客户端增加Cookie的话,必须使用response对象的以下方法:
public void addCookie(Cookie cookie) 
response表示的是服务器端对客户端的回应
可以通过setHeader()方法设置一个响应的头信息
通过response可以向客户端设置cookie,通过request可以取得客户端设置的全部Cookie
response对象属于的sendRedirect()方法属于客户端跳转,而<jsp:forward>属于服务器端跳转

session对象

在开发中session对象最主要的用处就是完成用户的登陆(login)、注销(logout)等常见功能的,每一个session对象都表示不同的访问用户,session对象是javax.servlet.http.HttpSession接口的实例化对象,所以session只能应用在HTTP协议中。

HttpSession接口的主要方法

No.方法类型描述
1public String getId()普通取得SESSION ID
2public long getCreationTime()普通取得SESSION的创建时间
3public long getLastAccessedTime()普通取得SESSION的最后一次操作时间
4public boolean isNew()普通判断是否是新的SESSION(新用户)
5public void invalidate()普通让SESSION失效
6public Enumeration getAttributeNames()普通得到全部属性的名称
取得Session Id
当一个用户连接到服务器之后,服务器会自动为此session自动分配一个不会重复的Session Id,服务器依靠这些不同的Session Id来区分每一个不同的用户,在WEB中可以使用HttpSession接口中的getjavaId()方法取得这些编号。

通过序列化的方式保存session

在Tomcat中可以通过配置server.xml文件,将每一个用户的session在服务器关闭时序列化到存储介质(存储介质可以是文件或数据库)上保存,这样即使服务器重新启动了,也可以通过反序列化的方式,从指定的存储介质上反序列化session。

属性作用:
className:session的管理器操作类,Tomcat通过此接口完成序列化管理;
debug:Session管理器的跟踪级别;
saveOnRestart:配置服务器重新启动前对session的处理,可以配置truefalse两中选项,如果为true则会在容器关闭前将有效的session保存,重新启动后重新载入;
maxActiveSession:可以活动的session的最大数,如果设置为-1,则表示不受限制,超过最大限制会将session对象转移到Session Store中;
minIdleSwap:一个session不活动的最短时间,单位为秒,如果设置为-1,则表示不受限制,超过该时间会将session对象转移到Session Store中;
maxidleSwap:一个session不活动的最长时间,单位为秒,如果设置为-1,则表示不受限制,超过该时间会将session对象转移到Session Store中,该session不在内存中保存;
maxidleBackup:session的最长时间,单位为秒,如果设置为-1,则表示不受限制,超过该时间会将session对象备份到Session Store之中,但该Session对象依然存在于内存之中。
<Store>元素:定义实现持久化session的操作类及指定的文件存放位置,本程序将序列化的sessijavaon保存在了“d:\temp”文件夹之中,每一个保存的session都是通过文件保存的,文件的命名规范是“sessionid.session”。
登陆及注销
在各个的系统中几乎都会包括用户登陆验证及注销的功能,那么此功能就完全可以使用session实现,具体的思路是:当用户登陆成功之后,设置一个session范围的属性,之后在其他需要验证的页面中判断是否存在此session范围的属性,如果存在,则表示已经是正常登陆过的合法用户,如果不存在,则给出提示,并跳转回登陆页提示用户重新登陆,用户登陆之后可以进行注销的操作。
取得用户的操作时间

在session对象中,可以通过getCreationTime()方法取得一个session的创建时间,也可以使用getLastAccessedTime()方法取得一个session的最后一次操作时间,那么通过这两种操作,就可java以计算出一个session的操作时间。
session对象最主要的功能就是用于登陆验证操作
当用户第一次连接到服务器上时会自动分配一个新的session id

application对象

application对象是javax.servlet.ServletContext接口的实例化对象,从单词上翻译表示的是整个Servlet的上下文,ServletContext代表了整个容器的操作 
No.方法类型描述
1String getRealPath(String path)普通得到虚拟目录对应的绝对路径
2public Enumeration getAttributeNames()普通得到所有属性的名称
3public String getContextPath()普通取得当前的虚拟路径名称
String path = application.getRealPath("/") ;
对于application对象而言,在WEB中也可以使用getServletContext()方法进行替代。
String path = this.getServletContext().getRealPath("/") ; java
application表示的是整个上下文的资源环境;java
在实际中可以通过this.getServletContext()方法来代替application的使用;
通过getRealPath()方法可以取得一个虚拟目录对应的真实路径。

WEB安全性及config对象

从最初的Tomcat服务器配置开始,就一直强调在WEB目录之中必须存在一个WEB-INF的文件夹,但是,一些细心的读者可以发现,现在即使列出了WEB目录中的全部内容,WEB-INF也不会显示出来,那么既然此目录无法被外部所看见,则肯定其安全性就很高,所以,保存在此目录中的程序肯定安全性是最高的。 
config对象是javax.servlet.ServletConfig接口的实例化对象,主要的功能是取得一些初始化的配置信息。
常用方法:
public String getInitParameter(String name)
public Enumeration getInitParameterNames()
将页面资源保存在WEB-INF文件夹之中是最安全的,但是必须通过映射路径才可以访问。
通过config对象可以取得初始化的配置参数。java

out对象

out对象是javax.servlet.jsp.JspWriter类的实例化对象,主要的功能就是完成页面的输出操作,使用println()print()方法输出,但是从实际的开发来看,直接使用out对象的几率较少,都会使用表达式完成输出的操作。
out对象定义了如下的几个操作:java
public int getBufferSize()
public int getRemaining()
int buffer = out.getBufferSize() ;		// 得到全部缓冲区大小
int available = out.getRemaining() ;	// 得到未使用的缓冲区大小
int use = buffer - available ;		// 得到使用的缓冲区大小

pageContext对象

pageContext对象是javax.servlet.jsp.PageContext类的实例,主要表示的是一个JSP页面的上下文,在此类中除了之前讲解过的属性操作之外,还定义了以下的一些方法:
public abstract void forward(String relativeUrlPath) throws ServletException,IOException
public void include(String relativeUrlPath) throws ServletException,IOException
public ServletConfig getServletConfig()
public ServletContext getServletContext()
public ServletRequest getRequest()java
public ServletResponse getResponse()
public HttpSession getSession()
pageContext.forward("page02.jsp?info=hello") ;
String info = pageContext.getRequest().getParameter("info") ;
pageContext中可以取得request、session等主要内置对象;
通过 pageContext对象可以完成页面的跳转功能。java
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java Web课件是一份专门设计用于教授Java Web开发的教学材料。 Java Web是一种基于Java语言和相关技术的Web开发技术。它结合了Java的强大功能和Web的广泛应用范围,使开发者能够构建出功能强大、安全可靠的Web应用程序。 Java Web课件通常包含以下内容: 1. 基础知识介绍:对Java Web开发的原理和基本概念进行解释和讲解,包括JavaWeb开发环境和工具、Servlet和JSP的基本用法等。 2. 开发环境搭建:指导学习者如何配Java Web开发环境,包括安装和配Java开发工具(如Eclipse、IntelliJ IDEA等)、配Servlet容器(如Tomcat、Jetty等)。 3. Servlet开发:介绍Servlet的工作原理和生命周期,详细讲解Servlet的编写和部署,包括处理HTTP请求和响应、使用请求参数、会话管理等。 4. JSP开发:讲解JSP的基本语法和用法,包括JSP指令、脚本和表达式等,还介绍了JSP中的内对象和JSTL等标签库的使用。 5. 数据库访问:介绍数据库的基本概念和使用,包括使用JDBC连接数据库、执行SQL语句等。 6. MVC模式:介绍使用MVC(Model-View-Controller)模式进行Web应用程序的开发,包括设计模式、数据模型、视图和控制器等。 7. Web框架:介绍常见的Java Web框架,如Spring MVC、Struts2等,讲解框架的原理和使用方法,以及如何在项目中集成和应用这些框架。 8. 安全性和性能优化:讲解Java Web应用程序的安全性和性能优化方法,包括数据加密、会话管理、代码优化等。 Java Web课件通过理论讲解和实例演示,帮助学习者逐步理解和掌握Java Web开发的核心技术和方法。通过课件的学习,学习者可以快速入门Java Web开发,并能够独立设计、开发和部署Java Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翱翔-蓝天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值