袁艺

个人站

欢迎来到我的个人站~


JSP

概述

jsp全名是 java server pages,他是建立在servlet规范之上的动态网页开发技术。在jsp文件中,html代码与Java代码共同存在,其中,html代码用来实现网页中静态内容的展示,java代码用来实现网页中动态内容的显示,扩展名为.jsp。

jsp技术所开发的web应用程序是基于Java的,他可以用一种简捷的方法从Java程序生成web页面,特征如下:

  • 跨平台
  • 业务代码分离
  • 组件重用
  • 预编译

运行原理

jsp的工作模式是请求/响应模式,客户端手心啊发出http请求,jsp程序收到请求后进行处理并返回处理结果。在一个jsp文件第一次被请求时,jsp引擎(容器)把该jsp文件转化为一个servlet,而这个殷勤本身也是一个servlet

1

jsp运行的具体过程如下:

  1. 客户端发出请求,请求jsp文件
  2. jsp容器先将jsp文件转换成一个java源文件,在转换过程中,如果发现jsp文件中存在任何语法错误,则终端转换过程,并向服务端和客户端返回出错信息。
  3. 如果转换成功,则jsp容器将生成的java源文件编译成相应的字节码文件,该class文件就是一个servlet,servlet容器会向处理其他servlet一样来处理它。

jsp基本语法

脚本元素

jsp脚本元素是指嵌套在<%和%>之间的一条或者多条java程序代码。通过jsp脚本元素可以将Java代码嵌入html页面中,jsp脚本元素主要包含如下三种类型:

  • jsp scriptlets
  • jsp声明语句
  • jsp表达式
  1. jsp scriptlets

    jsp scriptlets是一段代码段,当需要使用java实现一些复杂操作或控制时,可以使用它。<%Java 代码(变量、方法、语句等)%>

  2. jsp声明语句(定义的都是成员方法、成员变量、静态方法、静态代码块等,在整个jsp页面内有效) <%! 定义的变量或者方法等 %>

  3. 表达式 <%= expression%> 注意:表达式中的变量或者表达式后面不能有分号

jsp指令

  1. page指令 在jsp页面中,经常需要对页面的某些特性进行描述,例如页面的编码方式,jsp页面采用的语言等,这时使用page指令来实现 <% @page 属性名=“属性值” 属性名=“属性值”…… %> 2

  2. include指令 jsp页面如果需要包含一个文件可以通过include指令实现<%@ include file=”文件地址”%>;是编译期包含的 注意: 是将被包含的页面编译处理后将结果包含在页面中,两个资源是彼此独立执行的实体,是被动态引入的;是运行时包含的 ![9](https://raw.githubusercontent.com/yuanyi0510/yuanyi0510.github.io/master/images/bolg_images/jsp/9.PNG)
  3. taglib指令 用于页面引入标签库的 格式:<%@ taglib uri=”标签库地址”prefix=”前缀”%>

内置对象

3

out对象

在jsp页面,经常需要向客户端发送文本内容,可以使用out对象实现。out对象是javax.servlet.jsp.JspWriter类的实例对象,用来向客户端发送文本形式的实体内容。

4

从图中可以看出,在jsp页面中,通过out对象写入数据相当于将数据插入到jspwriter对象的缓冲区中,只有调用了servletResponse.getWriter()方法才能真正写入到servlet缓冲区。

5

6

pageContext对象

在jsp页面中,使用pageContext对象可以获取jsp的其他8个隐式对象,代表当前jsp页面的运行环境。pageContext对象获取隐式对象的方法如下图:

7

pageContext提供了存储数据的功能,如下图:

8

pageContext对象的作用范围:

PageContext.PAGE_SCOPE:页面范围

PageContext.REQUEST_SCOPE:请求范围

PageContext.SESSION_SCOPE:会话范围

PageContext.APPLICATION_SCOPE:web应用程序范围

EL表达式

格式

${表达式}

内置对象

10