JSP内置对象,一篇连小白都看得懂得笔记
内置对象
定义:在JSP页面中,我们可以通过一个对象名直接调用相应的方法,而不需要实例化,该类的对象被称为内置对象。
首先JSP内置对象有9种:
page:代表当前页面对象,通过实验看到了以下结果,证明page与this对象是同一个对象
它的地址值由这些组成:
重点是:将hashCode码通过Integer.toHexString转换成十六进制字符串。
pageContext:代表当前页面的上下文对象。
out:输出对象。
exception:处理页面中产生的异常信息。
config:获取到当前页面的初始化的参数值
**request:**代表一次请求,主要是从客户端获取到所请求的信息内容,在该过程中,如果使用post提交的话,那么很有可能会产生乱码。
解决方案有3种:
第一种:通过request对象调用setCharacterEncoding(“String字符串编码格式”):将所传输的内容按照指定的编码进行格式化。
例子:
第二种:可以将产生乱码的字符串,通过new String ()的方式进行字节数组转换,同时指定原来的编码格式,和想要转换的编格式。第三种:通过修改tomcat服务器里面的server.xml文件里面的connector标签里面的内容,添加上URIEocding=“要设置的编码格式”,也可以达到转换编码格式的效果。
在url地址中,是可以重新编辑请求数据的,除此之外,还有可能利用一些第三方的框架或者是使用scoket发起请求,那么此时,如果后端没有做任何防御性判断,有可能会产生异常。
转发
通过request.getRequestDispatcher(“跳转的目标页面”),使用forward(request,response)方法来实现转发功能。
重定向
通过response.sendRedirect(“要跳转的页面”)
转发与重定向的区别:
有五点:
1.请求次数:
重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求,转发是服务器收到请求后为了完成响应跳转到一个新的地址;重定向至少请求两次,转发请求一次。
2.地址栏不同:
重定向地址栏会发生变化,是实打实的页面跳转,而转发地址栏不会发生变化,通俗点说,重定向是网页的跳转,而转发是程序的跳转。
3.是否共享数据:重定向是两次请求不共享数据,转发是一次请求共享数据(在request级别使用信息共享,使用重定向必然出错)。
4.跳转限制:
重定向可以跳转到任意URL,而转发只能跳到本站点资源。也就是重定向是网页的跳转,转发是程序的跳转。
5.发生的行为不同:
重定向是客户端行为,而转发是服务器端行为。
response:
代表一次响应。
使用response.sendRedirect(String page)实现一次重定向,page可以是一个页面,也可以是一个外部链接。
session:
代表一次会话,当用户进入到网站系统中,就会开始一次会话,在Tomcat中,默认时间为30分钟。可以通过setMaxInActiveInterval(时间[s])设置session的过期时间,可以通过getMaxInActiveInterval()获取到过期时间的设置,通过getId()方法获取到每个用户自己的JsessionId,该id是由客户端Cookie所产生的。使用setAttribute(String ,Object)来设置session范围内的对象,可以通过getAttribute(String key)获取到对应的对象,当调用invalidate()方法时,会将当前的session对象全部注销,使其失效,如果调用了removeAttribute(String key)这个方法,就会从当前session对象中移除掉对应的key的session属性。
方法总结:
application::
代表一次应用级的作用域。
include指令
1.使用指令方式:
<% include file = “xxx.jsp” %>
先将页面拼接到一起,然后再运行编译。如果在被拼接页面中包含了本页面的同名变量,就会产生异常。
2.使用jsp的行为元素
<jsp:include page = “页面名称”>
先完成自身的编译,再进行拼接。
总结:
如果页面是静态的,那么比较适合使用指令形式进行拼接,如果是动态页面,可以采用jsp的行为指令进行拼接。