一、为什么需要用到JSP
JSP是简写 Servlet 编写的一种技术,他将Java代码和HTML语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写
使用JSP在网页上打印一个时间点新建一个JSP页面,在body 节点内 <% %> 即可编写java代码,以下仅展示关键代码
<body>
<%
Date date = new Date();
System.out.print(date);
%>
</body>
二、JSP的运行原理
JSP的本质是Servlet,每个JSP页面在被第一次访问时,JSP引擎会将它编译成一个Servlet源程序,接着再把这个Servlet源程序编译成.class类文件,然后再由WEB容器像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
三、JSP页面的隐含对象:没有声明就可以使用的对象
咱先来看看JSP页面编译过后的源码
public void _jspService(HttpServletRequest request , HttpServletResponse response)
throws java.io.IOException,ServletException{
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
//使用 <% %> 编写的代码,在此位置可以用到上述代码提到的8个隐含对象
//(实际上还有一个exception 的隐含对象)
}
① request:HttpServletRequest 的对象,用于获取请求参数
② response:HttpServletResponse 的对象(在JSP页面中几乎不会调该对象的方法)
③ pageContext:页面的上下文,是PageContext 的对像,可以从该对象中获取到其他8个隐含对象,也可以从中获取到当 前页面的其他信息
④ session:代表浏览器与服务器的一次会话,是 HttpSession 的一个对象
⑤ application:代表当前 WEB 应用,是 ServletContext 的一个对象,可以获取页面的初始化参数
⑥ config:当前 JSP 对应的 Servlet 的 ServletConfig 对象(几乎不用)若需要访问当前 JSP 配置的初始化参数,需要通过 映射的地址才可以(在Web.xml 文件中配置JSP文件的映射地址)
⑦ out:JspWriter对象,调用out.println()方法 将信息打印到HTML页面上
⑧ page:指向当前 JSP 对应的 Servlet 对象的应用,但为 Object 对象,只能调用Object 类的方法(几乎不使用,需要了 解自行查询)
⑨ exception: 在特殊的情况下才可以使用,在声明了 page 指令的 isErrorPage 的值为 true 时才可以使用 ,声明方法如下:
<%@ page isErrorPage="true" %>
你有几个对象?(滑稽脸)
在JSP页面中使用隐含对象(只展示部分对象的使用)
<%
Date date = new Date();
System.out.print(date);
%>
%
//date是上面代码中声明过我们才可以使用
String time = date.toString();
//以下是没有声明就可以使用的对象
//获取请求参数
String name = request.getParameter("name");
String passowrd = request.getParameter("password");
//结果为 true
System.out.println(response instanceof HttpServletResponse);
%>