一、请你谈谈你对JSP内置对象的理解?
首先jsp的内置对象指的是在jsp页面系统中已经设置好了,这些对象无需开发人员显示的声
明就可以使用。可以通过内置对象实现jsp页面与servlet相互的访问。 jsp有9个内置对象,分别是
page、pageContext、request、response、session、application、out、config、exception。
1.page(相当于this)对象:指的是当前页面(当前JSP页面所对应的Servlet实例),Page对象是javax.servlet.jsp.HttpJspPage类的实例。用来处理JSP网页,它指的是JSP页面对象本身,或者说代表编译后的servlet对象,只有在JSP页面范围之内才是合法的。
2.pageContext:这个对象代表页面上下文,PageContext对象是javax.servlet.jsp.PageContext类的实例,使用该对象可以访问页面中的共享数据。使用pageContext可以访问page、request、session、application范围的变量。
pageContext.setAttribute ("key" , 47) ;
<body>
<%
pageContext.setAttribute("key", 47);
String ss=pageContext.getAttribute("key").toString();
%>
欢迎访问首页
<%=ss %>
</body>
3.request:指的是客户端浏览器发送的一次请求,随着一次请求的完成就结束了。
String realPath = request.getRealPath("");
System.out.println("项目运行时的服务器真实路径:" + realPath);
String contextPath = request.getContextPath();
System.out.println("项目运行时的应用的访问名称:" + contextPath);
String method = request.getMethod();
System.out.println("当前请求的方式:" + method);
String remote = request.getRemoteAddr();
System.out.println("客户端的IP地址:"+remote);
String local = request.getLocalAddr();
System.out.println("服务器的IP地址:"+local);
4.response:指的是服务器端对客户端的请求作出的响应
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
response.sendRedirect("list_employee.jsp");
ServletOutputStream out=response.getOutputStream();
5.session:指的是一次会话(包含若干次"请求"), Session会话的生命周期:
conf\web.xml在这里进行客户端的超时设置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
HttpSession session = request.getSession();
System.out.println("Session ID: "+session.getId());
Date creationDateTime = new Date(session.getCreationTime());
System.out.println("Session 的创建时间:"+creationDateTime);
Date lastAccessedDateTime = new Date(session.getLastAccessedTime());
System.out.println("本次会话最后一次访问时间:" + lastAccessedDateTime);
6.application:指的是"应用",application的生命周期:
ServletContext application = request.getServletContext();
application.setAttribute("key", "value");
application.getAttribute("key");
String realPath = application.getRealPath("");
System.out.println("应用真实路径:" + realPath);
System.out.println("应用访问名称:" + application.getContextPath());
System.out.println("Session超时时间:" + application.getSessionTimeout());
7.out对象:用于jsp页面中的java代码的内容输出
out.println("我是内置对象out的换行输出形式");
out.print("我是内置对象out的不换行输出形式");
out.close();
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.println("我是内置对象out的换行输出形式");
out.print("我是内置对象out的不换行输出形式");
%>
</body>
</html>
8.config对象:config对象中存储了一些Servlet初始化的数据结构,当Servlet初始化时,JSP容器通过config对象将这些信息传递给这个Servlet。一般在web.xml文件中配置Servlet程序和JSP页面的初始化参数。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
config.getInitParameter("name");//返回名称为name的初始化参数值(String类型的)
config.getServletContext();//返回ServletContext
config.getInitParameterNames();//获得初始化参数列表,返回的是一个枚举类型数组Enumeration<String>,注意无返回值
config.getServletName();//返回jsp页面编译后的servlet名称(String类型的)
%>
</body>
</html>
9. 内置对象exception对象:异常对象,只有当前页面的page指令中isErrorpage=true,方可使用。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="err.jsp"%>
<!DOCTYPE html>
<!--err.jsp-->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//可以使用内置对象exception统一处理异常
%>
</body>
</html>