JSP指令 JSP内置对象及其常用方法

7 篇文章 0 订阅

JSP的指令

Page指令 常用的属性:

  • contentType:定义JSP的字符的编码和页面的响应的MIME类型
    如果是需要按照中文HTML显示,则使用如下形式:
    contentType="text/html;charset=UTF-8"

  • errorPage和isErrorPage
    errorPage用来指定当前页面出现异常或者错误的时候,跳转到哪一个页面进行处理
    isErrorPage是在处理异常的页面中指定,当前页面为处理页面。

  • import
    用来标明当前JSP页面中需要导入哪几个包中的类

  • language
    用来定义要使用的脚本语言

  • pageEncoding
    用来设置 JSP页面的字符集格式,默认值是ISO-8859-1
    如果想要显示中文,则设置为UTF-8

contentType和pageEncoding都是用来设置编码的,二者的区别:
在JSP中,如果pageEncoding存在,那么JSP的编码将由pageEncoding决定
否则由contentType中的charset决定,如果二者都不存在,将为ISO-8859-1编码

错误页的设置,要满足以下的条件:
指定错误出现时跳转的页面,通过errorPage属性进行设置
错误处理页面必须有明确的标识,通过isErrorPage进行设置
注意:错误页面的跳转属于服务器的跳转
拓展
服务器跳转和客户端跳转的区别:从最直观的角度进行区分
客户端跳转,URL地址栏会发生改变,服务器跳转,URL地址栏不发生改变。

include指令:分为静态包含和动态包含两种
注意:被包含的页面中尽可能的不要写多余的HTML标签和Body标签

  • 静态包含语法
    <%@ include file=“包含文件的路径”%>

  • 动态包含语法
    传递参数的包含:
    <jsp:include page=“要包含的文件的路径”>
    <jsp:param name=“参数名称” value=“参数值”/>
    </jsp:include>
    不传递参数的包含:
    <jsp:include page=“要包含的文件的路径”/>

  • 静态包含和动态包含的区别
    静态包含属于先包含后处理
    动态包含属于先处理再包含

forward指令
注意:属于服务器跳转
接受传递的请求参数,可以使用request对象提供的方法
String str = request.getParameter(参数名);
当参数名不存在的时候,返回结果为null

  • 跳转不传递参数
    <jsp:forward page=“要跳转的页面的路径”/>

  • 跳转并传递参数
    <jsp:forward page=“要跳转的页面的路径”>
    <jsp:param name=“参数名称” value=“参数值”/>
    </jsp:forward>

JSP的内置对象:

为了简化用户的开发,JSP给我们提供了9个内置对象
这些内置对象不需要我们程序员手动创建,都是由Web容器自动为我们进行实例化,我们直接使用即可。
JSP提供的9个内置对象:

  • pageContext:是javax.servlet.jsp.PageContext类的对象
    代表着JSP的页面容器。

  • request:是javax.servlet.http.HttpServletRequest接口对象
    代表用户的请求信息。

  • response:是javax.servlet.http.HttpServletResponse接口对象
    代表服务器向客户端响应的信息。

  • session:是javax.servlet.http.HttpSession接口对象
    代表每一个用户的信息。

  • application:是javax.servlet.ServletContext接口对象
    代表所有的用户在服务器上的共享信息

  • config:是javax.servlet.ServletConfig接口对象
    代表服务器的配置信息,通过此对象可以得到服务器的初始化参数

  • out:javax.servlet.jsp.JspWriter类的对象
    代表页面的输出对象,提供的方法基本都是向页面进行输出的。

  • page:是javax.lang.Object对象,表示从页面中表示出来的一个Servlet实例

  • exception:java.lang.Throwable对象,表示JSP页面所发生的异常。

4种属性范围:
指的是一个内置的对象中保存的属性,可以在多少个页面当中进行保存并且继续使用。

  • pageContext:只在一个页面中有效,进行跳转之后就无效
  • request:只在一次请求中保存属性,服务器跳转之后有效,客户端跳转之后无效
  • session:在一次会话中保存,无论任何跳转都有效,只要是关闭了浏览器,或者是会话超时,就无效
  • application:在整个服务器上都有效,只要重启服务器就无效

JSP对于4种能够保存属性的对象,提供了统一的对属性的操作方法:

  • public void setAttribute(String name,Object value);设置属性的名称以及属性的内容
  • public Object getAttribute(String name);通过属性的名称获取属性的内容
  • public void removeAttribute(String name);通过属性的名称删除属性

注意:关于request属性范围,为什么客户端跳转无效,服务器跳转有效
实际上客户端跳转是实现了两次请求以及两次响应,服务器跳转是一次请求一次响应

request对象常用的方法

  • setCharacterEncoding(String encode):用来设置请求对象的字符集格式。
  • getParameter(String name):通过请求参数的名称获取请求参数的值,此方法的返回值是String类型的。
  • getParameterValues(String name):通过请求参数的名称获取一组请求参数的值,返回值是String[ ]对象。
  • getHeader(String name):通过头信息的名称获取头信息的值,返回值是String类型。
  • getHeaderNames():此方法可以获取传递的所有的头信息的名称。
  • getMethod():获取当前请求的提交方式。
  • getRemoteAddr():获取请求的IP地址。
  • getServletPath():获取请求的路径。
  • getContextPath():获取请求的上下文路径。

response:作用:就是对客户端的请求进行回应,代表着HTTP的响应。
常用的方法

  • public void setHeader(String name,String value):设置响应的头信息。
  • public void sendRedirect(“要跳转的路径”):用来设置页面的跳转。
    使用此方法的跳转属于客户端的跳转。
    < jsp:forward >和reponse.sendRedirect()使用哪个跳转更好?
    < jsp:forward >:属于服务器的跳转,会立刻进行跳转。
    reponse.sendRedirect():属于客户端的跳转,等页面加载完毕之后再进行跳转。

操作Cookie
Cookie是浏览器所提供的一种技术,这种技术让服务器端的程序能够将一些只需要保存在客户端,或者在客户端进行处理的数据,放在本地计算机上,不需要通过网络的传输,因此提高了网页的处理的效率,而且也能减少服务器端的负载。但是由于Cookie是服务器端保存在客户端的信息,所以安全性较差。
Cookie类提供的常用方法

  • public Cookie(String name,String value):Cookie提供的构造方法,用来实例化Cookie对象,同时设置Cookie的名称以及对应的值。
  • public String getName():获取Cookie的名称。
  • public String getValue():获取Cookie中保存的值。
  • public void setMaxAge(int m):设置Cookie的最大的保存时间,保存时间是以秒为单位的。

所有的Cookie都是由服务器设置到浏览器中的,
我们想要向浏览器中增加Cookie
则必须使用response对象提供的方法:public void addCookie(Cookie cookie);
想要获取浏览器中存储的Cookie
我们需要通过request对象提供的方法:public Cookie[ ] getCookies();
我们在获取Cookie的时候,会自动获取一个我们没有存储过的JSESSIONID,
JSESSIONID是服务器自动保存到浏览器中的,代表每一个会话唯一的标识。

session对象:代表一次会话
在实际开发中session对象的最主要的作用就是完成用户的登录、注销等常见的操作。
每一个session对象都代表不同的访问的用户。
session对象常用的方法

  • public String getID:取得session的ID
  • pubilc long getCreationTime():取得session的创建时间
  • public long getLastAccessedTime():取得session的最后一次的操作的时间
  • public void invalidate():让session失效
  • public boolean isNew():判断是否是新的session
  • public Enumeration getAttributeNames():取得全部的属性的名称

application对象:代表着服务器对象或者说代表着服务器上下文
常用的方法:

  • String getRealPath():得到虚拟目录对应的绝对路径
  • public Enumeration getAttributeNames():取到所有属性名称
  • public String getContextPath():取得当前的虚拟路径的名称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值