jsp九大内置对象

1 内置对象概览

  • 内置对象的意思就是系统new好了,不需要用户自己进行new
  • web容器已经为用户准备好了

  • 九大内置对象

内置对象类型描述
pageContextrow 1 col 2JSP页面容器
requestrow 2 col 2得到用户的请求信息
responserow 2 col 2服务器想客户端回应信息
sessionrow 2 col 2保存一个用户的信息
applicationrow 2 col 2保存所有用户的共享信息
configrow 2 col 2服务器配置,可以获得初始化参数
outrow 2 col 2页面输出
pagerow 2 col 2
exceptionrow 2 col 2

在这个内置对象中要掌握继承的关系,包括接口的继承关系

2 四种属性范围

在JSP中提供了四种属性的保存范围,所谓的保存范围就是一个设置的对象可以在多少个页面中保存并可以继续使用

2.1 四种对象

  • page范围:pageContext对象完成,只是在一个页面中保存属性,跳转之后无效
  • request:只在一次请求中保存,服务器跳转后依然有效
  • session:在一次会话范围中,无论何种跳转都可以使用,但是新开的浏览器无用
  • aplication:在整个服务器上保存,所有用户都可以使用

2.2 通用的方法

方法描述
public void setAttribute(String name,Object o)设置属性的名称及内容
public Object getAttribute(String name)根据属性名称取得属性
public void removeAttribute(string name)删除指定的属性
  • pageContext

只可以在本页面取到值

 <%
        
    pageContext.setAttribute("username", "zhaodi");
 %>
      
    <%="pageContext获取的值:"+pageContext.getAttribute("username") %>
     
  • request

只要是服务端跳转,那么request属性范围表示的是在服务器端跳转之后,所有设置的内容依然会被保留下来


request.setAttribute("req","req_zhaodi");

String req = (String)request.getAttribute("req");
  • session

不管是服务器端还是客户端跳转,session设置属性之后,都是可以被取到的

  • application

保存在服务器上面,所有的用户都可以拿到,如果服务器重启了,则无法取得

  • 能用page就不用request,能有request就不用session,能用session就不用application

2.3 深入pageContext

通过pageContext这个类可以操作四种属性范围;

  • 方法

pageContext.setAttribute(String name,Object value,int scope);

。。。getAttribute(String name,int scope);

。。。removeAttribute(String name,int scope);

这个方法可以设置属性的范围

  • 范围

APPLICATION_SCOPE

PAGE_SCOPE

REQUEST_SCOPE

SESSION_SCOPE

3 request对象

主要的作用就是接受客户端发来的请求信息,如请求的参数,发送的头信息等都属于客户端发来的信息

  • 接受参数(单个,多个)
    <form action="index.jsp" method="post">
        username:<input name="username" value="" type="text">
        <input type="checkbox" name="fav" value="football">足球
    <input type="checkbox" name="fav" value="basketball">篮球
        <input type="submit" value="提交">
    </form>

。。。

<%
    String user_name = (String)request.getParameter("username");// 获取字符串数组
    String[]fav= request.getParameterValues("fav");// 获取字符串数组
 %>
     <%="从前台获取的username:"+user_name %>
  • 设置乱码问题
request.setCharacterEncoding("utf-8");
  • 获取头信息,IP地址,http提交形式(post,get....),访问路径

4 response

主要的功能就是服务器对客户端的回应,讲web服务器处理后的结果发回给客户端

4.1 通用的方法

方法描述
public void addCookie(Cookie cookie)向客户端增加cookie
public void setHeader(String name,String value)设置回应的头信息
public void sendRedirect(string location)页面跳转

4.2 设置头信息

  • 设置跳转
 response.setHeader("refresh","3;URL=hell.html")// 3s后跳转到hello页面

4.3 response.sendRedirect页面跳转

sendRedirect()方法可以页面跳转,这种跳转是客户端跳转,客户端无法传递request属性范围

response.sendRedirect("input.html");
  • 两种跳转的区别:
  1. :
    跳转后地址栏不变,执行到之后立即跳转,跳转之前的语句执行,跳转之后的语句不执行,可以传递request属性

  2. response.sendRedirect():跳转之前和跳转之后的语句都是执行的,地址栏改变了,不可以传递request属性

4.4 操作Cookie

  • Cookie是浏览器提供的一种技术,可以让服务器存储一些数据在浏览器端,提高网页处理效率,减轻服务器压力
  • 由于是保存在客户端的所以其安全性是比较差的
<%
    Cookie cookie = new Cookie("zhaodi","zhaodi");
    cookie.setMaxAge(100);
    response.addCookie(cookie);
    
    Cookie c1[] = request.getCookies();// 获取客户端的所有cookie
    
    for(Cookie c: c1){
    %>
        <%=c.getName() + ":"+c.getValue() %>
        
        <%
    }
     %>


现在 我们在浏览器是可以看到Cookie的


5 session内置对象

  • 通过session id区分每一个用户,每个浏览器连接到服务器上都有服务器分配一个不会重复的sessionId
  • 服务器关闭sessionid就不存在了

5.1 常用方法

方法描述
public String getId()取得session ID
public long getCreationTime取得session创建时间
public long getLastAccessedTime()取得session最后一次操作的时间
public boolean isNew()判断是否是新用户
public void invalidate()让sesesion失效
public void setAttribute(Stringname,Object value)设置属性
  • 主要用在用户是否登录验证用的最多的地方

会话跟踪技术

6 application

表示的是servlet的上下文

     String str = application.getContextPath();// 获得虚拟路径
     String st = application.getRealPath(str);//获得虚拟路径对应的绝对路径
  • getServletContext()的作用和application的作用是一样的

7 config(了解)

7.1 web安全性

WEB-INF这个文件夹用户是看不见的,安全性是最高的,但是必须通过映射路径才可以访问

  • 获取初始化的参数信息,初始刷的参数都是在web.xml里面配置的

8 out(了解)

9 pageContext

  • 主要是在JSP中使用,功能强大,几乎可以操做各种内置对象

  • 可以通过pageContext对象完成页面的跳转功能

pageContext.forward("input.html");// 服务端跳转,可以携带参数的

转载于:https://www.cnblogs.com/zhaod/p/8667101.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值