文档章节

【JSP笔记】第四章 JSP内置对象【下】

石头Sky
 石头Sky
发布于 2016/09/24 22:53
字数 1639
阅读 12
收藏 0

1.什么是session  

 

  • 表示客户端与服务器的一次会话。
  • Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这段时间。
  • session实际上是一个特定的时间概念。
  • 保存在服务器当中,和用户一一对应。

2.session对象

  • 是一个JSP内置对象。
  • 在第一个JSP页面被装载是自动创建,完成一次客户端与服务器端的会话管理。
  • 从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器的结束,被称作一个会话。
  • 当一个客户访问一个服务器是,可能在服务器几个页面之间切换,服务器应当通过某种办法值得这是一个客户,这就需要session对象。
  • session对象是HttpSession类的实例。

常用方法:

long getCreationTime():返回session创建时间。

  • import="java.util.*,java.text.*" 
  • ........................
  •     <%
  •     SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss") ;
  •     Date d=new Date(session.getCreationTime());
  •    
  •     %>
  •     session创建时间:<%=  sdf.format(d) %>

public String getId():返回session创建时JSP引擎为它设的唯一ID号。

public Object setAttribute(String name,Object value):指定名称将对象绑定到次会话。

public Object getAttribute(String name):返回与此会话中指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null

String[] getValueNames():返回一个包含此session中所有可用属性的数组。

int getMaxInactiveInterval():返回两次请求间隔多长时间 此session被取消(单位秒)

 

3.Session的生命周期

创建:

当客户端第一次访问某个JSP火这Servlet的时候,服务器会为当前会话创建一个SessionId,

每次客户端想服务器端发送请求时,都会将此SessionId携带携带过去,服务端会对此SessionId进行校验。

活动:

某次会话当中通过超链接打开的新页面属于同一次会话。

只有当前会话页面没有全部关闭,重新打开的浏览器窗口访问同一项目资源时属于同一次会话。

除非本次会话的所有页面都关闭后再重新访问某个JSP或者Servlet将会创建新的会话。

注意事项:原来的会话还存在,只是这个旧的SessionId仍然存在与服务端,只不过再也没有客户端会携带它交于服务端校验。

销毁:

  1. 调用session.invalidate()
  2. Session过期(超时)
  3. 服务器重新启动。

4.application对象:

实现了用户间数据的共享,可存放全局变量。

开始于服务器的启动,终止于服务器的关闭。

在用户的前后链接或不同用户之间的连接中,可以对application对象的同一属性进行操作。

在任何地方对application对象属性的操作,都将影响到其他用户对此的访问。

服务器的启动和关闭决定了application对象的生命。

application对象是ServletContext类的实例。

常用方法:

public void setAttribute(String name,Object value):使用指定名称将对象绑定。

public Object getAttribute(String name)返回此对话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null.

Enumeration getAttrbuteNames()返回所有可用属性名的枚举

String getServerInfo():返回JSP(Servlet)引擎名和版本号。

 

5.page对象:

就是指向当前JSP页面本身,有点像类中的this指针。他是java.lang.Object类的实例。

常用方法:

class getClass():返回此Object的类。

int hashCode():返回此Object的hash码。

boolean equals(Object obj):判断此Object是否与指定的Object对象相等。

void copy(Object obj):把此Object拷贝到指定的Object对象中。

Object clone():克隆此Object对象。

String toString():把此Object对象转换成String类的对象。

void notify():唤醒一个等待的线程。

void notifyAll():唤醒所有等待的线程。

void wait(int timeout)使一个线程处于等待直到timeout结束或被唤醒。

void wait():使一个线程处于等待 直到被唤醒。

 

6.pageContext对象:

提供了对JSP页面内所有的对象及名字空间的访问。

可以访问到本页所在的session,也可以取本页面所在的application的某一属性值。

相当于页面中所有功能的集大成者。

本类名也叫pageContext.

常用方法

JspWriter getOut():  返回当前客户端响应被使用的JspWriter流(out)。

HttpSession getSession():返回当前页中的HttpSession对象(session)

Object getPage():  返回当前页的Object对象(page)

ServletRequest getRequest(): 返回当前页面的ServletRequest对象(request)

ServletResponse getResponse():返回当前页面的ServletRequest对象(response)

void setAttribute(String name,Object attribute):设置属性及属性值。

Object getAttribute(String name,int scope):在指定范围内取属性值。

int getAttributeScope(String name):返回某属性的作用范围。

void forward(String relativeUrlPath):使当前页面重导到另一页面,

void include(String relativeUrlPath):在当前位置包含另一文件。

 

7.Config对象:

config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所用到的参数(通过属性名和属性值构成)记忆服务器的有关信息(通过传递一个ServletContext对象),

常用方法:

ServletContext getServletContext():返回包含服务器相关信息的ServletContext对象。

String getInitParameter(String name): 返回初始化参数的值,

Enumeration getInitParameterNames():返回Servlet初始化所需 所有参数的枚举。

 

8.Exception对象:

使一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象,

如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。

他实际上是java.lang.Throwable的对象。

常用方法:

String getMessage():返回描述异常的消息。

String toString():返回关于异常的简短描述消息。

void pringStackTrace():显示异常和栈轨迹。

Throwable FillInStackTrace():重写异常的执行栈轨迹。

9.阶段小案例:用户登录小例子

login.jsp

<h2>登录界面</h2>
    <form action="dologin.jsp" method="post">
    <label>用户名</label>
    <input type="text" name="name"><br>
    <label>密&nbsp&nbsp码</label>
    <input type="password" name="password" vale=""><br>
    <input type="submit" value="登录">
    </form>

dologin.jsp

//中文乱码
	request.setCharacterEncoding("utf-8");
	String username="";
	String password="";
	username=request.getParameter("name");
	password=request.getParameter("password");
	
	if("admin".equals(username)&&"admin".equals(password)){
		//传递用户名值
		session.setAttribute("loginUsers",username);
		request.getRequestDispatcher("login_success.jsp").forward(request,response);
	}else
	{
	 response.sendRedirect("login_failure.jsp");
	}

login_success.jsp

<h2>登录成功</h2><br>
    <%
    String  ssname="";
    //防止用户名为空
    if(session.getAttribute("loginUsers")!=null){
    ssname=session.getAttribute("loginUsers").toString();
    }
     %>
    <a>欢迎会员<font color=red ><%= ssname %></font> 登录</a>      

 

© 著作权归作者所有

石头Sky
粉丝 4
博文 20
码字总数 6222
作品 0
郑州
程序员
私信 提问
Jsp 和 Servlet 有什么不同?

面试中被问到了 Jsp 和 Servlet 有什么不同?在这里总结分享下。 回答思路先分别进行基本介绍,然后分析说明两者相同点和不同点。 基本介绍 Servlet: Servlet 是一种服务器端的Java应用程序...

几个栗子
2018/08/22
0
0
jsp servlet Action获取request,respone,session等

Servlet Jsp Struts2 HttpServletRequest request内置对象 ServletActionContext.getRequest() 实现ServletRequestAware接口 HttpServletRespone reponse内置对象 ServletActionContext.get......

长平狐
2013/01/06
236
0
浅谈ServletContext 与application的异同

servletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图。ServletContext实例是通过 getServletContext()方法获得的,由于HttpServlet继承Servlet的关系GenericServlet类...

小欣妹妹
2017/11/01
0
0
初识 JSP---(注释/小脚本/声明/指令/动作/内置对象)

注释 java : // / / /** */ html : jsp <%-- --%> jsp注释和html注释的区别 jsp注释对jsp引擎有作用,当jsp引擎看到这个注释后,生产servlet文件是会忽略他 html注释对jsp引擎没有作用,jsp...

姜白告
2018/08/03
0
0
Tomcat 容器与servlet的交互原理

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器...

watermelon11
02/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

UserInputControls用户输入控制

enum UserInputControls { kGovernedByOrthoMode = 0x0001,//正交模式管理 kNullResponseAccepted = 0x0002,//允许输入空 kDontEchoCancelForCtrlC = 0x0004,//ctrl C 模式不能重复......

一个小妞
31分钟前
1
0
分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。 2)我们总是害怕我们的这台服务器停机,造成...

群星纪元
33分钟前
5
0
Kanban VS Scrum:哪个是最好的敏捷项目管理框架

“我们使用敏捷开发。”在与软件开发团队交流时,你会听到很多这样的说法。根据统计,2018年全球约有90%的开发人员在使用敏捷开发。Choerodon猪齿鱼团队也是其中之一。 但是,敏捷并不统一。...

Choerodon
37分钟前
3
0
vue select 慢一步

我在使用vue的select的时候,@change事件里面,写一个axios拿到数据,然后修改某个变量,按理修改变量会立即呈现在页面上面,但实际情况是,值是变更了,但是页面上的效果慢了一步,非常奇怪...

朝如青丝暮成雪
41分钟前
2
0
分布式架构 核心知识体系

1.问题 1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分...

小刀爱编程
44分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部