servlet的部分作用域和接口简介

今天继续纪录学习Servlet,主要讲解2个作用域和2个接口。

1.作用域--请求域(HttpServletRequest request)
作用范围:只在一次请求中有效
4个方法:void setAttribute(String name,Object obj);
Object setAttribute(String name)
void removeAttribute(String name)
Enumeration setAttributeName(),返回request中所有属性名的枚举
.

eg.


2.作用域--会话域(HttpSession session)Session();

浏览器发送一次请求到服务器,服务器首先判断,该请求是否携带一个SessionID值如果这次请求没有携带一个SessionID值,

服务器就知道了,这是第一次来访问该服务器浏览器与该服务器开始建立会话服务器会在相应请求的同时,将产生一个

SessionID,作为该次会话的标识再把这个SessionID发给浏览器,浏览器就拥有一个SessionID了,当再次访问该服务

器时,浏览器会携带那个SessionID,被传到服务器服务器首先判断该请求是否携带一个SessionID值,此时有了,代表

这不是一个新的会话的请求,如果浏览器两个请求之间的时间太长,超出服务器等待的时间,服务器会删除这个session

对象删除后,再次发送到该服务器,因为服务器里没有这个session对象了,就不能判断请求是否携带SessionID值

也就是说判断不出来,就认为这是一个新的会话开始,又会产生一个SessionID,作为这次新会话的标识又把这个SessionID

发给浏览器,浏览器就拥有一个新的SessionID了在会话开始时,服务器会自动分配一个空间(session对象),SessionID就在

session对象里。

获得SessionID:

System.out.println(session.getId());

jsp中可直接使用
eg.

用范围:该次会话期间一直有效
tomcat默认session有效期:30分钟。可修改,x为时间
<session- config>
<session- timeout>x</session- timeout>
</session- config>
写法示例:

httpSession session = request.getSession();
session.setAttribute("userName",username);

session失效方法及情况:

1.session.invalidate()执行后,session无效。
2.最大时间过后,session无效
3.浏览器和服务器没有配对的SessionID就表示session无效。

session示例:

通过页面登录跳转,request和session都获取到用户名nn:

回退网页,单独访问LoginSuccess.jsp页面,request没有获得值(说明是一次请求),而session仍然有值:

javax.servlet.ServletConfig接口:

ServletConfig接口用于描述Servlet本身的相关配置信息。一个Servlet对象都会对应一个ServletConfig对象,

ServletConfig对象表示Servlet配置信息对象,ServletConfig对象中封装了该Servlet对象在web.xml文件中的配置信息

ServletConfig接口中常用的方法

(1)Enumeration getInitParametersNames() 获取所有的初始化参数的name【要求在web.xml文件中有init-param的配置】

(2)String getInitParameter(String name) 通过初始化参数的name获取value【要求在web.xml文件中有init-param的配置】

(3)ServletContext getServletContext() 获取ServletConfig对象 

(4)String getServletName() 获取Servlet的名字,该方法了解即可

Servlet配置初始化参数,例如:

<servlet>
  <servlet-name>XXX</servlet-name>
  <servlet-class>Xxx</servlet-class>
  <init-param>
   <param-name>yyy</param-name>
   <param-value>xxx</param-value>
  </init-param>
</servlet>

实际代码:

常用方法示例:

javax.servlet.ServletContext接口:

ServletContext接口用于描述应用程序(server.xml中的一个Context配置,即一个虚拟目录)的相关信息。

相关方法:

Object getAttribute(String name)     返回servlet上下文中具有指定名字的对象,或使用已指定名捆绑一个对象。从Web应用

的标准观点看,这样的对象是全局对象,因为它们可以被同一servlet在另一时刻访问。或上下文中任意其他servlet访问。       

     void setAttribute(String name,Object obj)     设置servlet上下文中具有指定名字的对象。       

     Enumeration getAttributeNames()     返回保存在servlet上下文中所有属性名字的枚举。       

     ServletContext getContext(String uripath)     返回映射到另一URL的servlet上下文。在同一服务器中URL必须是以“/”开头的绝对

路径。       

     String getInitParameter(String name)     返回指定上下文范围的初始化参数值。此方法ServletConfig方法名称不一样,后者只

应用于已编码的指定servlet。此方法应用于上下文中所有的参数。       

     Enumeration getInitParameterNames()     返回(可能为空)指定上下文范围的初始化参数值名字的枚举值。  

关键代码(两个servlet,一个set,一个get):

set传递固定字段"name"

ServletContext application = getServletContext();
application.setAttribute("userName",
"name");   

get接收固定字段"name"

ServletContext application = getServletContext();
application.getAttribute("userName");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值