一、为什么需要用到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);
%>