JSP简介
Java动态网页技术标准(Java Server Pages)
JSP是为了改进Servlet输出动态的HTML复杂、烦琐等缺点而提出的,
JSP伪指令
伪指令用来设置全局变量,声明类、要实现的方法以及输出内容的类型等。
JSP声明指令
声明指令包括的是一段java代码
例:<%! int count =0;%>
例:<%! String color[] = {“red”,”green”,”yellow”};
String getColor(int i){
return color[i];
}
%>
声明<%!..%>的变量将作为全局变量
脚本<%…%>定义的变量作为局部变量
JSP脚本指令
脚本指令是镶嵌在JSP页面中的java代码
主要用于处理客户端的请求
<% String name = request.getParameter(“name”);
if (name != null) {
out.println("hello " + name);
}
%>
表达式不能使用分号结尾
JSP动作指令
动作指令是在请求处理阶段向JSP容器发送指令
JSP工作原理
一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet
JSP引擎使用javac把转换成的servlet的源文件编译成相应的class文件
对每一个请求,JSP引擎创建一个新的线程来处理请求
JSP生命周期
静态包含
在JSP源文件转换成对应Servlet源文件时将当前JSP文件和其包含的所有其他文件合并成一个Servlet文件
JSP中的include伪指令实现静态包含
include标准语法:<%@include file=“地址”%>
<%@include %>指令
包含文件中要避免使用等可能会影响原JSP网页中标签的元素
<%@include %>指令只有一个属性file
<%@include%>指令可以放在JSP页面的任意位置,其file所指的路径是相对路径
动态包含
动态包含是指客户端请求时,将请求转发给当前JSP文件包含的其他对象
使用JSP的include动作指令和forward动作指令实现动态包含
include 和forward相当与Servlet中的RequestDispatcher.include()和RequestDispatcher.forward()方法
include动作指令
include允许当前页面将客户端请求暂时转交给所包含的对象,一旦对象执行完毕,返回当前JSP页面
include动作指令相当于方法的调用
标准语法:<jsp:include page=“地址” flush=“true”>
动态包含的作用域范围
动态包含中的包含文件和被包含文件各自独立编译、执行,彼此之间不能访问各自定义的变量(即page作用域范围内的对象),只能共享request范围、session范围、application范围对象
参数的传递
静态包含不存在参数传递的问题
动态包含可以传递参数:
直接在包含动作中传递
使用jsp:param
使用request.set/getAttribute()方法
forward动作指令
forward动作指令允许将客户请求转发到另一个资源文件,即每当遇到此动作指令就停止执行当前的JSP,转而执行被转发的指定资源
语法格式:<jsp:forward page=“地址”/>
page属性必须存在,用于指定要包含的静态或动态文件,可以是字符串或表达式
forward指令与include动作指令
forward动作指令在调用转发操作后不会继续处理指令后的任何代码
include动作指令在调用转发操作后,完成转发操作后将继续处理指令后的代码
JavaBean满足的条件
必须有一个没有参数的公共构造方法
所有的属性必须有setter和getter方法,属性本身最好定义为私有的,已实现JavaBean的封装性
**
期末考试(要考)
**
JSTL的概念
• JSP标准标签库(JSP Standard Tag Library)是一个实现 Web 应用程序中常见的通用功能的定制标记库集
• 功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问
• JSTL标签库由几个子标签库组成,主要分为以下几种:核心标签、XML标签、格式化标签(I18N)、SQL标签、函数标签库
安装JSTL
• 将jstl.jar、standard.jar放在WEB-INF/lib目录下
jstl.jar提供了标签开发接口类
standard.jar 提供了标签库的实现类
• 在JSP中使用taglib伪指令导入JSTL标签库
<%@taglib prefix=“c” uri=“http://java.sun.com/jstl/core”%>导入JSTL核心标签库
通过<c:XXX>可以使用JSTL核心标签库标签