内置对象(9种)
在JSP的页面中,我们可以通过一个对象名称直接调用相应的方法,而不是需要进行实例化。该类的对象叫做内置对象。
page:代表当前页面对象
在jsp页面中通过对比page和this可以看出,两者均指向同一对象
pageContext:
代表当前页面的上下文对象
out:输出对象
exception:处理页面中产生的异常信息 使用方式
config:获取到当前页面的初始化的参数值
request:代表一次请求。主要是从客户端获取到所请求的信息内容。在该过程中,如果使用post进行提交,那么很可能会产生乱码,解决方案:
- setCharacterEncoding(“string字符编码”):将所传输的内容按照指定的编码进行格式化。
- 可以通过给指定的字符串进行字节数组转换,同时指定对应的编码 使用new String(“String字符串”,“UTF-8”)
在url地址中,是可以重新编辑请求数据的,除此外,还有可能利用一些第三方的框架或者是使用Socket发起请求,那么此时,如果后端没有做任何的防御性判断,有可能会产生异常。
转发: request.getRequestDispatcher(跳转的目标页面),使用forward(request,response)跳转页面,,只能跳转到自身项目下的页面
转发和重定向的区别:
- 请求次数不同:转发请求一次,重定向请求两次
- 地址栏不同:转发地址栏不变,重定向地址栏发生变化
- 是否共享数据:转发属于一次请求,数据共享,重定向属于两次请求,则数据不共享
- 跳转限制:转发只能跳转至自身项目下的页面,重定向可以跳转至任意的url
- 发生行为不同:重定向的是客户端行为,转发是服务端行为
response:代表一次响应
sendRedirect(String page):实现一次重定向,page可以是一个页面,也可以是一个外部链接。
session:代表一次会话
当用户进入到网站系统中,就会开始一次会话。在Tomcat中默认过期时间时30分钟。可以通过session.setMaxInactiveInterval(时间[s]为单位)设置session的过期时间,可以通过session.getMaxInactiveInterval()获取到过期时间的设置。通过getId()可以获取到每个用户自己的JSESSIONID,该ID是由客户端cookie所产生的。使用setAttribute(String,object)设置session范围内的对象,可以通过getAttribute(String)获取到对应的对象。当调用invalidate()方法时,会注销session,使其失效,如果调用了removeAttribute(key)这个方法,就会从当前session中移除掉对应的key的session属性。
application:代表一次应用级的作用域
include指令
使用指令方式
<%@ include file="xxx.jsp"%>
先将页面拼合在一起,然后再运行。如果在被拼合的页面内包含有本页面中同名的变量,那么会产生异常。
使用jsp的行为元素
<jsp:include page="页面名称" />
先完成自身页面的编译,然后再进行拼接。
总结:如果页面是静态的,那么比较适合使用指令方式进行拼接。
如果页面是动态的,那么使用jsp的行为元素更加适合。