jsp概述及原理

JSP全称是Java Server Pages,中文名叫java服务器页面,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP实际上就是Servlet。可以理解为:jsp = html + java

注意:

  • servlet:服务器端的小应用程序。主要功能为:获取表单数据、处理业务逻辑、分发转向。
  • jsp:适合编写输出动态内容,但不适合编写java逻辑。

jsp的原理:jsp文件翻译称为.java文件;.java文件编译生成.class文件。

jsp的基本语法

JSP的脚本
小脚本 <% java代码 %>
表达式 <%= 表达式 %> 等价于out.print(表达式);
声明
<%!declaration; [ declaration; ]+ ... %> 表示在类中定义全局成员,和静态块。
JSP注释
JSP注释:<%-- 被注释的内容 --%> 特点:网页源代码中不可见。安全,省流量
网页注释: 特点:网页源代码中可见。不安全,费流量

jsp的3个指令

JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。

page指令
语法:
<%@ 指令名称 属性1="属性值1" 属性2="属性值2"...%>
或者:
<%@ 指令名称 属性1="属性值1"%>
<%@ 指令名称 属性2="属性值2"%>
如:解决中文乱码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

作用:用于定义JSP页面的各种属性
属性:(基本上使用默认的就行)

  • import 和java代码中的import是一样的
    比如:

    <%@ page import="java.util.Date,java.util.List"%>

    JSP会自动导入以下的包:

    import java.lang.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
  • session: 是否会自动创建session对象。默认值是true。
  • buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置输出数据的缓存大小,默认是8kb。
  • errorPage: 如果页面中有错误,则跳转到指定的资源。
    errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。如果不写“/”则代表相对路径。
  • isErrorPage: 是否创建throwable对象。默认是false。
  • contextType: 等同于response.setContextType("text/html;charset=utf-8")。
  • pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。
  • isELIgnored: 是否支持EL表达式。 默认是false

include指令
静态包含:把其它资源包含到当前页面中。
<%@ include file="..." %>
动态包含:
<jsp:include page="..."></jsp:include>

两者的区别:
翻译的时间段不同
静态包含:在翻译时就把两个文件合并
动态包含:不会合并文件,当代码执行到include时,才包含另一个文件的内容。

原则:能用静态包含就不用动态包含。

taglib指令
作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

jsp的6个动作

  • jsp:include 在页面被请求的时候引入一个文件。
  • jsp:useBean 寻找或者实例化一个JavaBean。
  • jsp:setProperty 设置JavaBean的属性。
  • jsp:getProperty 输出某个JavaBean的属性。
  • jsp:forward 把请求转到一个新的页面。
  • jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记。
  • jsp:element 定义动态XML元素
  • jsp:attribute 设置动态定义的XML元素属性。
  • jsp:body 设置动态定义的XML元素内容。
  • jsp:text 在JSP页面和文档中使用写入文本的模板。

JSP 隐式对象

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

  • request HttpServletRequest类的实例。
  • response HttpServletResponse类的实例。
  • out JspWriter类的实例,用于把结果输出至网页上。
  • session HttpSession类的实例。
  • application ServletContext类的实例,与应用上下文有关。
  • config ServletConfig类的实例。
  • pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问。本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
  • page 类似于Java类中的this关键字。
  • Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象。
    附:四大域对象
  • PageContext : pageConext 存放的数据在当前页面有效,开发时使用较少。
  • ServletRequest: request 存放的数据在一次请求(转发)内有效。
  • HttpSession: session 存放的数据在一次会话中有效。使用的比较多。
  • ServletContext: application 存放的数据在整个应用范围内都有效,因为范围太大,应尽量少用。
Last modification:February 15, 2018
If you think my article is useful to you, please feel free to appreciate