Jsp内置对象的学习:
内置对象:jsp在转译成其对应的java文件(也就是Servlet)时,会默认在_jspService方法中声明创建几个对象。
特点:我们可以在jsp页面中声明java局部代码块,在代码块中直接使用内置对象。
对象:pageContext:页面上下文对象,此对象封存了另外8个对象。
注意:一个jsp页面一个pageContext对象。pageContext对象每次请求都会重新创建。
作用域:当前jsp页面
request:封存了请求相关数据,由服务器创建
session:解决了同一个不同请求之间的数据共享问题
application:ServletContext对象,解决了不同用户之间的数据共享问题
out:响应数据的对象,交于response对象,out对象底层使用了缓冲区。out对象的效率高于response
response:响应对象,设置编码格式
page:代表当前被执行的jsp转译的java文件的对象
config:ServletConfig对象,使用此对象完成资源的初始化。
exception:jsp页面的异常对象,封存了异常信息。
注意:对象的名字必须是转译好的java文件中声明的对象名。
<%@page language="java"%><%-- 声明转译的语言 --%> <%@page import="java.util.*,java.lang.*"%><%-- 声明转译时导入的java包文件--%> <%@page pageEncoding="utf-8"%><%-- 设置jsp的数据保存的编码格式--%> <%@page contentType="text/html; charset=utf-8"%><%-- 设置数据的响应编码格式--%> <%@page session="false"%><%-- 设置session的状态,默认为true,也就转译的servlet文件中默认session是开启的,使用false关闭--%> <%@page isErrorPage="true"%><%-- 默认为false ture表示开启exception异常对象的使用--%> <%@page errorPage="error.jsp"%><%-- 设置当jsp运行出现异常错误时跳转指定的页面--%> <%-- page指令的作用:设置jsp转译的时候的一些配置信息。 --%>
Jsp路径问题:
问题:在jsp页面中进行资源之间的跳转时,如果书写的是相对路径这样会造成如果当前文件的路径发生变更,从当前路径查找资源的相对路径都要重新进行书写。
解决:将相对路径编程绝对路径
使用:在jsp中路径中的第一个/表示服务器根目录。
示例:<a href="/虚拟项目名/资源路径">访问关键字</a>
注意:在Myeclipse中创建的jsp页面会自动生成路径处理代码basePath而basePath的值为当前项目根目录,并且在head标签中使用了<base href="<%=basePath%>">相当于将当前页面的资源全部默认定位为从项目根目录开始查找,我们就不需要写第一个/了
注意:basePath方式和添加/方法只能二选一。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; System.out.println(basePath); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'path.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> 我是path.jsp <a href="a/a.jsp">a.jsp</a> </body> </html>
资源路径总结:
Jsp 中路径:
1.相对路径:../../资源
2.绝对路径:/虚拟项目名/资源路径(也就是从webapps开始)
简单来说,绝对路径就是不管从外部还是内部访问,都能通过此路径找到文件夹;而相对路径就是相对与自身的,其他位置的文件和路径,只能通过内部访问,外部不能通过此路径访问到文件。