JSP的简单理解
1.什么是JSP,什么是Servlet?
JSP本质上就是一个Servlet,它是Servlet的一种特殊形式,每个JSP页面都是一个servlet实例。
Servlet是由Java提供用于开发Web服务器应用的一个组件,运行在服务端,由Servlet容器管理,用来生成动态内容。
一个Servlet实例是实现了特殊接口Servlet的Java类,所有自定义的Servlet均必须实现Servlet接口。
2.JSP和Servlet有什么区别?
JSP是HTML页面中内嵌的Java代码,侧重于页面展示;
Servlet是HTML代码和Java代码分离,侧重于逻辑控制,MVC思想中JSP位于视图层,Servlet位于控制层。
JSP运行机制,如下图:
JAM只能识别Java类,并不能识别JSP代码!Web容器收到以.jsp为扩展名的url请求时,会将访问请求交给tomcat中jsp引擎处理,每个jsp页面第一次被访问时,jsp引擎将jsp代码解释为一个servlet源程序,接着编译servlet源程序生成.class文件,再有web容器servlet引擎去装载执行servlet程序,实现页面交互。
3.JSP有哪些域对象和内置对象及它们的作用?
四大域对象:
(1)pageContext page 域-指当前页面,在当前JSP页面有效,跳到其他页面无效。
(2)requst requst 域-指一次请求范围内有效,从http请求到服务器处理结束,返回响应的整个过程。
在这个过程中使用forward(请求转发)方式跳转多个jsp,在这些页面里你都可以使用这个变量。
(3)session session 域-指当前会话有效范围,浏览器从打开到关闭过程中,转发、重定向均可使用。
(4)application context 域-指只能在同一个web中使用,服务器未关闭或者重启,数据就有效。
九大内置对象:
对象名 | 对应类型 | 生命周期 | 作用域 | 功能描述 |
---|---|---|---|---|
Requst | HttpServletRequest (请求对象) | 一次请求 | 只在Jsp页面内有效 | 用于接收通过HTTP协议传送到服务器的数据(包括头信息,系统信息,请求方式以及请求参数等)。 |
Reponse | HttpServletResponse ( 响应对象) | 一次响应 | 只在Jsp页面内有效 | 表示服务器端对客户端的回应。主要用于设置头信息,跳转,Cookie等。 |
Session | HttpSession(会话对象) | 从存入数据后,默认30分钟后失效 | 会话内有效 | 用于存储特定的用户会话所需的信息。 |
Out | JspWriter(输出对象) | 用于在web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。 | ||
PageContext | PageContext (页面上下文对象) | 用于存取其他隐含对象,如:request、reponse、session、application等对象。(实际上,pageContext对象提供了对jsp页面所有对象及命名空间的访问。) | ||
Page | this (Object页面对象) | page对象代表jsp页面本身(this),只有在jsp页面内是合法的。 | ||
Exception | Throwable(例外对象) | 显示异常信息,必须在page指令中设定<%@page isErrorPage=“true”%>才能使用,在一般的jsp页面使用将无法编译JSP文件。 | ||
Application | ServletContext(应用程序对象) | 服务器启动发送第一个请求就产生了,知道服务器关闭。 | 用于存储和访问来自任何页面的变量,所有用户分享一个Application对象。 | |
Config | ServletConfig (配置对象) | 取得服务器的配置信息。 |