JSP简单学习

1.JSP原理

  • Java server Pages:Java服务器端页面。一个特殊的页面,既可以定义html标签,又可以定义Java代码

  • 原理:JSP本质上是一个Servlet,例如index.jsp,服务器启动后,浏览器访问index.jsp,在CATALINA_BASE目录下生成work目录,其中可以找到对应的index_jsp.class和index_jsp.java文件。

    其中,对应的类为index_jsp,继承了org.apache.jasper.runtime.HttpJspBase,在tomcat源码中HttpJspBase继承了HttpServlet。

    index_jsp.java文件中该类的_jspService方法中将index.jsp文件中的html标签输出到浏览器。

2.JSP脚本

  • jsp定义Java代码的地方

  • 定义方式

    1. <% 代码 %>:定义的Java代码,在_jspService方法中。 _jspService可以定义什么,该脚本就可以定义什么
    2. <%! 代码 %>:定义的Java代码,在jsp转换后的Java类中的成员位置,比如变量,静态代码块
    3. <%= 代码 %>:定义的Java代码,会输出到页面上
1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
hello
<%
System.out.println("hello jsp");
int i = 9;
%>
<%! private static int j;
static {
j=10;
}
%>
<%= i %>
</body>

3.JSP指令

  • 指令作用:用于配置JSP页面,导入资源文件

  • 格式:

    <%@ 指令名 属性名1=属性值1 属性名2=属性值2 %>

  • 指令分类

    1. page:配饰JSP页面

      • content-type:等于response.setContentType()。

        设置响应体的mime类型以及字符集

        设置当前jsp页面文件的编码(高级IDE可使用,如果是低级工具,则需要设置pageEncoding属性)

      • import:导包

      • errorPage:当前页面发生异常后,会自动跳转到指定的错误页面。比如在index.jsp中发生异常,那么指定errorPage=”500.jsp”,在500.jsp文件中输出服务器正忙信息。

      • isErrorPage:标识当前是否为错误页面。

        true:是错误页面,可以使用内置对象exception,获取异常信息并输出到日志文件中

        false:不是错误页面,默认值。

    2. include:导入页面的资源文件

      <%@include file=”top.jsp”%>

    3. taglib:导入资源

4.JSP内置对象

  • 在JSP页面中不需要获取和创建,可以直接使用的对象。

例如:在_jspService方法的参数中有request和response,那么在jsp中就可以直接使用,在 _jspService方法中定义了out对象,那么在jsp中也可以使用。

1
2
3
4
<%
String contextPath = request.getContextPath();
out.print(contextPath);
%>
  • jsp有九个内置对象:request、response、out、pageContext、session、application、page、config、exception

    1. out:字符输出流对象,将数据输出到页面上。

      • out.write()和response.getWriter()的区别

        在tomcat服务器真正给客户端做出相应之前,会先找response缓冲区数据,在找out缓冲区数据。response.getWriter()数据输出永远在out.write()之前

    2. 作用