请你谈谈你对JSP内置对象的理解?

一、请你谈谈你对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存值(将数字47存到key里面),该属性默认在page范围内  
pageContext.setAttribute ("key" , 47) ; 
//jsp页面下的内容
<body>
<%
 pageContext.setAttribute("key", 47);//第一个参数是String类型的,第二个是Object类型的
 String ss=pageContext.getAttribute("key").toString();//注意这里是返回Object类型的,
 //通过toString转为String类型的,getAttribute是(通过键:key)取值的

%>
欢迎访问首页
<%=ss %>
</body>
3.request:指的是客户端浏览器发送的一次请求,随着一次请求的完成就结束了。
        // 按照参数名称,获取获取请求中的参数值,注意返回值为String类型的
		// request.getParameter("name");
		// 根据目标地址,获取RequestDispatcher请求转发对象
		// request.getRequestDispatcher("");
		// 在请求转发前,存入KV键值对
		// request.setAttribute("key","value");
		// 在请求转发后,根据key获取value
		// request.getAttribute("key");
       // 获取当前应用在服务器端的真实路径
		String realPath = request.getRealPath("");
		System.out.println("项目运行时的服务器真实路径:" + realPath);

		String contextPath = request.getContextPath();
		System.out.println("项目运行时的应用的访问名称:" + contextPath);
		
		String method = request.getMethod();
		System.out.println("当前请求的方式:" + method);
		
		// 获取发起本次请求的客户端IP地址
		String remote = request.getRemoteAddr();
		System.out.println("客户端的IP地址:"+remote);
		
		// 获取服务器本地的IP地址
		String local = request.getLocalAddr();
		System.out.println("服务器的IP地址:"+local);

4.response:指的是服务器端对客户端的请求作出的响应
 response.setContentType("text/html;charset=utf-8");//注意将这句放在out之前,设置不会出现中文乱码在客户端
 PrintWriter out=response.getWriter();//用于向客户端输出提示
//进行重定向
response.sendRedirect("list_employee.jsp");
//getOutputStream返回到客户端的输出流对象
ServletOutputStream out=response.getOutputStream();
5.session:指的是一次会话(包含若干次"请求"), Session会话的生命周期:
// 会话开始:客户端的第1次"请求"
// 会话结束:1.客户端浏览器关闭;2.客户端超时(Tomcat默认为30分钟,);3.服务器关闭;
conf\web.xml在这里进行客户端的超时设置
<session-config>   
        <session-timeout>30</session-timeout>   
</session-config>
	// 获取当前Session会话对象
		HttpSession session = request.getSession();
		
		System.out.println("Session ID: "+session.getId());
		
		//	将当前KV键值对,存入Session会话(服务器端)
		// session.setAttribute("key", "value");
		
		//	从当前Session会话中,根据key获取value
		// session.getAttribute("key");
		
		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");//将value存到key中
application.getAttribute("key");//通过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();//用于关闭out的

<%@ 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>
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页