关于后端:JSP四大作用域和九大内置对象

2次阅读

共计 8520 个字符,预计需要花费 22 分钟才能阅读完成。

jsp 是运行在服务端的程序

JSP 有九个内置对象(又叫隐含对象),不须要事后申明就能够在脚本代码和表达式中随便应用

JSP 九大内置对象分为四类:

  • 输入输出对象:out 对象、response 对象、request 对象
  • 通信管制对象:pageContext 对象、session 对象、application 对象
  • Servlet 对象:page 对象、config 对象
  • 错误处理对象:exception 对象

jsp 四大作用域:

page 范畴:只在一个页面保留数据(javax.servlet.jsp.PageContext(抽象类))

request 范畴:只在一个申请中保留数据(javax.servlet.httpServletRequest)

Session 范畴:在一次会话中保留数据,仅供单个用户应用(javax.servlet.http.HttpSession)

Application 范畴:在整个服务器中保留数据,全副用户共享(javax.servlet.ServletContext)

九种对象简介:

  1. out 对象:用于向客户端、浏览器输入数据。
  2. request 对象:封装了来自客户端、浏览器的各种信息。
  3. response 对象:封装了服务器的响应信息。
  4. exception 对象:封装了 jsp 程序执行过程中产生的异样和错误信息。
  5. config 对象:封装了应用程序的配置信息。
  6. page 对象:指向了以后 jsp 程序自身。
  7. session 对象:用来保留会话信息。也就是说,能够实现在同一用户的不同申请之间共享数
  8. application 对象:代表了以后应用程序的上下文。能够在不同的用户之间共享信息。
  9. pageContext 对象:提供了对 jsp 页面所有对象以及命名空间的拜访。

《2020 最新 Java 根底精讲视频教程和学习路线!》

1.page 对象

page 对象有点相似与 java 编程中的 this 指针,他指向了以后 jsp 页面自身。
page 对象是 java.lang.object 类的一个实例

page 对象领有一个 toString 办法,上面是官网定义的办法介绍:



1.  public String toString() {2.      return getClass().getName() + "@" + Integer.toHexString(hashCode());
    
3.  }
    
4.  包名 + 类名 +@+hashcode 值
    

 page 对象的办法:

办法名

阐明

toString

将以后我的项目的信息打印进去

getClass

返回以后的 object 类

hashCode

返回 page 对象的 hashCode 值

equals

用于比拟对象是否与以后对象雷同

2.request 对象

request 对象封装了从客户端到服务器收回的申请信息。

request 对象办法介绍:

办法名

阐明

isUserInRole

判断认证后的用户是否属于某一成员组

getAttribute

获取指定属性的值, 如该属性值不存在返回 Null

getAttributeNames

获取所有属性名的汇合

getCookies

获取所有 Cookie 对象

getCharacterEncoding

获取申请的字符编码方式

getContentLength

返回申请注释的长度, 如不确定返回 -1

getHeader

获取指定名字报头值

getHeaders

获取指定名字报头的所有值, 一个枚举

getHeaderNames

获取所有报头的名字, 一个枚举

getInputStream

返回申请输出流, 获取申请中的数据

getMethod

获取客户端向服务器端传送数据的办法

getParameter

获取指定名字参数值

getParameterNames

获取所有参数的名字, 一个枚举

getParameterValues

获取指定名字参数的所有值

getProtocol

获取客户端向服务器端传送数据的协定名称

getQueryString

获取以 get 办法向服务器传送的查问字符串

getRequestURI

获取发出请求字符串的客户端地址

getRemoteAddr

获取客户端的 IP 地址

getRemoteHost

获取客户端的名字

getSession

获取和申请相干的会话

getServerName

获取服务器的名字

getServerPath

获取客户端申请文件的门路

getServerPort

获取服务器的端口号

removeAttribute

删除申请中的一个属性

setAttribute

设置指定名字参数值

request 对象演示:

实现一个简略的用户注册信息界面,将注册信息发送到欢送界面上。

用户注册界面表单设置:



1.  <form action="do_register.jsp" method="post">
    
2.      用户名:3.      <input type="text" name="userName"><br>
    
4.      技能:5.      <input type="checkbox" name="skills" value="java">java
    
6.      <input type="checkbox" name="skills" value="python">python
    
7.      <input type="checkbox" name="skills" value="ruby">ruby
    
8.      <input type="checkbox" name="skills" value="golang">golang
    
9.      <br>
    
10.      <input type="submit" value="提交">
    
11.      <input type="reset" value="重置">
    
12.  </form>
    

用户注册信息处理界面应用 getParameter 办法将用户的表单信息提取进去



1.  String name=request.getParameter("userName");
    
2.  String[] skillArr=request.getParameterValues("skills");
    

将 skillArr 数组转换成字符串:



1.  String skills="";
    
2.  if (skillArr!=null&&skillArr.length>0){
    
3.      for (String skill:skillArr
    
4.           ) {
    
5.          skills=skills+skill+" ";
    
6.      }
    
7.  }
    

将数据应用 setAttribute 保存起来



1.  request.setAttribute("userName",name);
    
2.  request.setAttribute("skills",skills);
    

应用 jsp 的 forword 指令将页面跳转到 welcome.jsp

<jsp:forward page="welcome.jsp"></jsp:forward>

setAttribute 和 getAttribute 用于在 web 组件之间共享信息
getparameter 办法用于接管服务器通过 set 和 post 办法传输的数据
留神没有 setparameter 办法

welcome.jsp 页面配置:



1.  <html>
    
2.  <head>
    
3.      <title> 技能展现界面 </title>
    
4.  </head>
    
5.  <body>
    
6.  信息展现界面:<br><br>
    
7.  <%--<%=%> 这是表达式 <%%> 这是 jsp 程序处理 --%>
    
8.  姓名:<%=request.getAttribute("userName")%><br>
    
9.  技能:<%=request.getAttribute("skills")%>
    
10.  </body>
    
11.  </html>
    

3.session 对象

session 对象:是一个 jsp 内置对象,它在第一个 jsp 被装载时主动创立,实现会话期治理。从一个客户关上浏览器并连贯到服务器开始,到客户敞开浏览器离  开这个服务器完结(或者超时),被称为一个会话。当一个客户拜访一个服务器时,可能会在这个服务器的几个页面之间切换,服务器该当通过某种方法晓得这是一个客户,就须要创立 session 对象。

http 是无状态的连贯协定,须要应用 session 来寄存用户每次的登陆信息

session 对象办法:

办法名

阐明

getAttribute

获取指定名字的属性

getAttributeNames

获取 session 中全副属性名字, 一个枚举

getCreationTime

返回 session 的创立工夫

getId

获取会话标识符

getLastAccessedTime

返回最初发送申请的工夫

getMaxInactiveInterval

返回 session 对象的生存工夫单位千分之一秒

invalidate

销毁 session 对象

isNew

每个申请是否会产生新的 session 对象

removeAttribute

删除指定名字的属性

setAttribute

设定指定名字的属性值

接下来通过一个登陆的小例子来演示下 session 对象的利用:

登陆表单设置:



1.  <form action="do_login.jsp" method="post">
    
2.      userName:<input type="text" name="userName"><br/>
    
3.      password:<input type="password" name="password"><br/>
    
4.      <input type="submit" value="submit">
    
5.      <input type="reset" value="reset">
    
6.  </form>
    

登陆逻辑解决界面,应用 getParameter 获取到用户名和明码:



1.  String userName=request.getParameter("userName");
    
2.  String password=request.getParameter("password");
    

对用户名和明码进行判断:



1.  if (userName!=null&&password!=null){2.      session.setAttribute("userName",userName);
    
3.      response.setHeader("refresh","2;URL=welcome.jsp");
    
4.  }
    

在欢送界面应用 getAttribute 获取以后的用户名:



1.  <%if(session.getAttribute("userName")!=null){%>
    
2.  <%--getAttribute 办法是应用指定的 key 获取 session 中的 value 值。获取到的是一个 object 对象
    
3.  在应用的时候须要依据具体的类型进行类型转换。4.  这里取出的是一个字符串,间接调用会应用他的 toString 办法,因而不必进行转换 --%>
    
5.  欢送 <%=session.getAttribute("userName")%>
    
6.  <a href="logout.jsp"> 登记 </a>
    
7.  <%}else{%>
    
8.  请先登陆
    
9.  <a href="login.jsp"> 登陆 </a>
    
10.  <%}%>
    

判断 session 对象是否是新创建



1.  <%if (session.isNew()){%>
    

3.  <br/>
    
4.  <br/>
    
5.  欢送新用户
    
6.  <%}else{%>
    
7.  <br/>
    
8.  <br/>
    
9.  欢送老用户
    
10.  <%}%>
    

在登出界面里革除 session 对象信息,并跳转到欢送界面中去:



1.  session.invalidate();// 革除掉 session 对象
    
2.  response.setHeader("refresh","2;URL=welcome.jsp");
    

4.application 对象

application 对象代表以后的应用程序。存在于服务器的内存空间中。
利用一旦启动便会主动生成一个 application 对象。如果利用没有被敞开,
此 application 对象便始终会存在。直到利用被敞开
application 的生命周期比 session 更长。
利用:
为多个用户共享全局信息。比方以后的在线人数等。

application 对象办法:

办法名

阐明

getAttribute

获取利用对象中指定名字的属性值

getAttributeNames

获取利用对象中所有属性的名字, 一个枚举

getInitParameter

返回利用对象中指定名字的初始参数值

getServletInfo

返回 Servlet 编译器中以后版本信息

setAttribute

设置利用对象中指定名字的属性值

能够应用 application 对象来实现页面拜访次数记录的性能:



1.  <%
    
2.      Object obj=application.getAttribute("counter");
    
3.      if (obj==null){4.          application.setAttribute("counter",new Integer(1));
    
5.          out.println("该页面被拜访了 1 次 <br/>");
    
6.      }else {7.          int countValue=new Integer(obj.toString());
    
8.          countValue++;
    
9.          out.println("该页面被拜访了"+countValue+"次 <br/>");
    
10.          application.setAttribute("counter",countValue);//java 会主动装箱
    

12.      }
    
13.  %>
    

5.out 对象

out 对象是一个输入流,用来向浏览器输入信息,除了输入各种信息外还负责对缓冲区进行治理。

out 对象办法介绍:

办法名

阐明

print 或 println

输入数据

newLine

输入换行字符

flush

输入缓冲区数据

close

敞开输入流

clear

革除缓冲区中数据, 但不输入到客户端

clearBuffer

革除缓冲区中数据, 输入到客户端

getBufferSize

取得缓冲区大小

getRemaining

取得缓冲区中没有被占用的空间

isAutoFlush

是否为主动输入

6.response 对象

response 对象次要用于对客户端的申请进行回应。
以及解决 http 的连贯信息,例如设置 http 文件头,设置 cookie 对象等。

response 对象办法:

办法名

阐明

addCookie

增加一个 Cookie 对象

addHeader

增加 Http 文件指定名字头信息

containsHeader

判断指定名字 Http 文件头信息是否存在

encodeURL

应用 sessionid 封装 URL

flushBuffer

强制把以后缓冲区内容发送到客户端

getBufferSize

返回缓冲区大小

getOutputStream

返回到客户端的输入流对象

sendError

向客户端发送错误信息

sendRedirect

把响应发送到另一个地位进行解决

setContentType

设置响应的 MIME 类型

setHeader

设置指定名字的 Http 文件头信息

7.pageContext 对象

pageContetx 对象是 jsp 页面中所有对象性能的最大集成着。
应用他能够拜访所有的 jsp 内置对象。

pageContext 对象办法:

办法名

阐明

forward

重定向到另一页面或 Servlet 组件

getAttribute

获取某范畴中指定名字的属性值

findAttribute

按范畴搜寻指定名字的属性

removeAttribute

删除某范畴中指定名字的属性

setAttribute

设定某范畴中指定名字的属性值

getException

返回以后异样对象

getRequest

返回以后申请对象

getResponse

返回以后响应对象

getServletConfig

返回以后页面的 ServletConfig 对象

getServletContext

返回所有页面共享的 ServletContext 对象

getSession

返回以后页面的会话对象

8.exception 对象

exception 对象示意 jsp 引擎在执行代码时抛出的异样
如果想要应用 exception 对象,那么须要配置编译指令的 isErrorPage 属性为 true

即在页面指令中设置:<%@page isErrorPage=“true”%>

9.config 对象

config 对象示意以后 jsp 程序的配置信息,获取服务器的配置信息
个别我的项目中,jsp 被用作模版技术,也就是位于表示层
而位于表示层的 jsp 文件个别是不须要配置信息的
所以此对象在 jsp 程序中其实很少应用
config 对象是 servletConfig 类的一个实例。

config 对象办法:

办法名

阐明

getServletContext

返回所执行的 Servlet 的环境对象

getServletName

返回所执行的 Servlet 的名字

getInitParameter

返回指定名字的初始参数值

getInitParameterNames

返回该 JSP 中所有的初始参数名, 一个枚举

jsp 内置对象总结:

Jsp 内置对象

性能

次要办法

out

向客户端输入数据

print() println() flush() clear() isAutoFlush() getBufferSize()   close() …………

request

向客户端申请数据

getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() …………..

response

封装了 jsp 产生的响应, 而后被发送到客户端以响应客户的申请

addCookie() sendRedirect() setContentType()

flushBuffer() getBufferSize() getOutputStream()

sendError() containsHeader()……………

application

 

 

config

示意 Servlet 的配置, 当一个 Servlet 初始化时, 容器把某些信息通过此对象传递给这个 Servlet

getServletContext() getServletName() getInitParameter()   getInitParameterNames()……………

page

Jsp 实现类的实例, 它是 jsp 自身, 通过这个能够对它进行拜访

flush()………

pagecontext

为 JSP 页面包装页面的上下文。治理对属于 JSP 中非凡可见局部中己经命名对象的该问

forward() getAttribute() getException() getRequest() getResponse()   getServletConfig()

getSession() getServletContext() setAttribute()

removeAttribute() findAttribute() ……………

session

用来保留每个用户的信息, 以便跟踪每个用户的操作状态

getAttribute() getId()   getAttributeNames() getCreateTime() getMaxInactiveInterval()

invalidate() isNew()

exception

反映运行的异样

getMessage()…………

练习:编写一个 jsp 程序,实现用户登录,当用户输出明码谬误时,将页面重定向到谬误提醒 页,并在该页

           面显示 30 秒后,主动返回用户登录页面

1. 登录界面 index.jsp



1.  <form name="form1" method="post" action="deal.jsp">
    
2.    用 户 名:<input name="userName" type="text" value="userName">  <br>
    
3.  密    码:<input name="pwd" type="password" value="pwd"><br>
    
4.  <input type="submit" name="Submit" value="登录"> 
    
5.  <input name="Reset" type="reset" id="Reset" value="重置">
    
6.  </form>
    

2. 判断明码,用户名界面 deal.jsp

<%
request.setCharacterEncoding("GB18030");
String userName=request.getParameter("userName");
String pwd=request.getParameter("pwd");
if("mr".equals(userName)&&"mrsoft".equals(pwd)){// 设定数据库明码用户名
    out.println("<script language='javascript'>alert(' 登录胜利 ');window.location.href='index.jsp';</script>");
    
}else{response.sendRedirect("error.jsp");// 重定向
    
}
%>

3. 谬误页面 error.jsp



1.  <%
    
2.  response.setHeader("refresh", "5;URL=index.jsp");// 重定向页面
    
3.  %>
    
4.  您输出的用户名或明码谬误,请从新登录!

链接:https://blog.csdn.net/qq_4058…

正文完
 0