JSP 基本用法

本篇博客记录jsp基本用法。关于jsp详细使用,请参考:传送门

目录

1. 简介
2. 原理
3. JSP的脚本
4. 指令
5. JSP的隐式对象

1. 简介

JSP(Java Server Pages,即:Java服务器页面),是一种跨平台的动态网页技术标准,由Sun Microsystems公司倡导、多家公司参与建立。它在HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

2. 原理

  1. Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
    2. JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
    3. JSP引擎将servlet编译成可执行类,生成.class字节码文件,并且将原始请求传递给servlet引擎。
    4. Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
    5. Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
    最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。

3. JSP的脚本

JSP定义Java代码的方式有三种

方式一:定义的Java代码的位置:在 service方法中,service方法中可以定义什么,该脚本中就可以定义什么

<% 代码 %>

方式二:定义的Java代码的位置:在jsp转换后的Java类的成员位置。【用的较少】

<%! 代码 %>

方式三:定义的Java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么

<%= 代码 %>

4. 指令

JSP指令用来设置整个JSP页面相关的属性
语法:

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

JSP中的三种指令标签:
指令 page:

<%@ page ... %>

可以配置的属性:

  1. contentType:等同于 response.setContentType()。作用:
    1. 设置响应体的MIME类型以及字符集
    2. 设置当前jsp页面的编码(只能是高级IDE才能生效。如果使用低级工具,如记事本,则需要设置pageEncoding属性设置当前页面的字符集)
<%@ page contentType="text/html;charset=UTF-8"  %>
  1. buffer:设置页面out输出对象的缓冲区大小,默认是8kb。比如:buffer="16kb"
  2. import:导包。比如:<%@ page import="java.util.List" %>
  3. errorPage:当前页面发生异常后,会跳转到指定的错误页面。比如:errorPage="500.jsp"
  4. isErrorPage:标识当前页面是否是错误页面。
    • false:默认值,不可以使用exception对象
    • true:可以使用内置对象exception。 比如:<% out.print(exception.getMessage()); %>输出错误信息到页面
  5. isELIgnored:是否忽略EL表达式
    • false:默认是,不忽略EL表达式,jsp引擎会解析表达式
    • true:忽略EL表达式,原样展示EL表达式内容
  6. include:完成页面包含的。导入页面的资源文件。

5. JSP的隐式对象

JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。

jsp有9个内置对象。

  • request:HttpServletRequest类的实例
    • 作用:一次请求访问的多个资源(转发)
  • session:HttpSession类的实例
    • 一次会话的多个请求间
  • pageContext:PageContext类的实例,代表整个JSP页面。可以获取其他8个内置对象.
    • 作用:当前页面共享数据。
  • application:ServletContext类的实例,与应用上下文有关
    • 所有用户间共享数据。
  • response:HttpServletResponse类的实例,相应对象
  • out:PrintWriter类的实例,用于把结果输出至网页上,字符输出流对象。可以将数据输出到页面上。和 response.getWriter() 类似
    • response.getWriter()和out.print()的区别
      • 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。response.getWriter()数据输出永远在out.print()之前。
      • 不推荐在jsp中使用response.getWriter()输出,容易影响布局。
  • config:ServletConfig类的实例
  • page:类似于Java类中的this关键字
    • 当前Servlet对象
  • exception:Exception类的对象,代表发生错误的JSP页面中对应的异常对象

其中有4个为域对象:request、session、pageContext、application

你可能感兴趣的:(JavaWeb,JSP)