JSP 之 三大指令、四大基本语法、七大动作、九大内置对象

JSP

什么是JSP?

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
JSP的本质是servlet,因此servlet里的对象可当作jsp的对象处理。


为什么需要JSP?

servlet

  • 优点:逻辑处理方便
  • 缺点:页面表现麻烦

JSP

  • 优点:页面表现方便
  • 缺点:处理逻辑麻烦

所以要互补使用,一般采用:JSP+Servlet+Javabean


JSP本质

Jsp就是servlet, 所以jsp也是java类,通过jsp引擎把jsp转译成了servlet。

XML中JSP的定义
JSP 之 三大指令、四大基本语法、七大动作、九大内置对象_第1张图片
通过对后缀为.jsp 和.jspx的servlet进行映射。
JSP 之 三大指令、四大基本语法、七大动作、九大内置对象_第2张图片
其映射的jsp经过该java类处理。
该类中包含的信息就是JSP的语法规则。

执行步骤:

  1. 浏览器输入:http://localhost/j314/testjsp/hi.jsp
  2. tomcat收到*.jsp请求,则会到org.apache.jasper.servlet.JspServlet
    处理(tomcat的web.xml中有配置)。
  3. JspServlet调用相应的java类,及jsp引擎根据hi.jsp生成的java类(位于:tomcat子目录work下面:hi_jsp.java,
    hi_jsp.class)。
  4. 执行hi_jsp.class。将HTML数据输出给tomcat。Tomcat再将这些数据输出给客户端。

JSP三大指令

一、page指令:page 指令指明与JSP容器的沟通方式

page 指令里的常用属性如下:

<%@ page
language=“Java” 选择编码语言
import=“importList” 导入java类库(唯一可以重复使用的属性,其他属性最多只能使用一次)
contentType=“contentTyepInfo” 内容的类型
session=“true|false” 是否开启Session
isThreadSafe=“true|false” 是否线程安全,默认为true
info=“infoText”
errorPage=“errorPageUrl” 指定错误页面:如果发生异常,则会跳到这个错误页面
isErrorPage=“true|false” 指定当前这个页面是否为错误页面。如果其他的页面发生错误,就会调到这里来。
%>

二、include指令:

include指令是在JSP页面被转换成Servlet之前将指定的文件包含进来。这种特性允许你创建可重用的导航栏、联系人信息部分、页面计数等。(重复利用的理解:比如说,可能有多页面都需要用到某个标题页面,就可以把这个公共的标题页面使用include指令包含进来,然后在其他的页面中直接导入标题页面就行了)

include指令共有两种形式

1、静态导入(多个页面编译成一个页面,耦合性高,解析执行速度快)
格式:

<%@include file="fileURL"%> 

过程:

在JSP程序的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。

举例:
新建一个content.jsp文件
JSP 之 三大指令、四大基本语法、七大动作、九大内置对象_第3张图片

将该页面引入进index.jsp
这里写图片描述

运行效果如下:
JSP 之 三大指令、四大基本语法、七大动作、九大内置对象_第4张图片

注意:
include静态包含,只能包含静态的资源,编译后形成一个文件。其实,title.jsp和content.jsp合起来只形成一个.java文件,最后编译为一个.class文件。

2、动态导入(生成两个java源文件,不会互相干扰)
格式:

<jsp:include page="fileURL">jsp:include> 

注意:
动态包含的主要区别在于,其每个页面单独生成JAVA源文件,不会互相干扰。

二、taglib指令:


JSP四大语法

一、注释

在jsp页面中,注释共有三种形式。

1.HTML注释

2.我是JAVA注释

<% //我是JAVA注释 %>

3.我是JSP注释

<%--  我是JSP注释 -->

jsp注释是最强大的,其注释的内容,即使在JAVA源文件中也不会显示,实现了完完全全的注释!

二、声明

格式:

<%!  %>

声明中 常常用于声明变量。

例如:

<%! int a=5 %>

在<%! %>里面写的东西是jsp生成的这个类的成员变量
JSP 之 三大指令、四大基本语法、七大动作、九大内置对象_第5张图片

还有一种是声明在脚本段中的变量

<% b=5 %>

JSP 之 三大指令、四大基本语法、七大动作、九大内置对象_第6张图片
在<% %>里面写的东西在_jspservice方法中,是局部变量

三、表达式

格式:

<%=  a   %>

其本质是out.print 用于输出信息到网页端
JSP 之 三大指令、四大基本语法、七大动作、九大内置对象_第7张图片

四、脚本段

格式:

<%  int a=5;method();   %>

内可嵌入java代码。


JSP七大动作

一、jsp:forward(请求转发)

格式:

<jsp:forward page="content.jsp">jsp:forward>

Java生成文件:
这里写图片描述

从图中可以看出,其实现的底层是调用了一个请求转发,同时如果调用成功,会直接return 掉,后续代码不继续执行。

二、jsp:plugin(插入插件)

元素用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),而这种显示需要在浏览器的java插件
格式:

<jsp:plugin type="" code="">jsp:plugin>

属性

  • type=”bean | applet” .将被执行的插件对象的类型,你必须得指定这个是Bean还是applet,因为这个属性没有缺省值.
  • code=”classFileName” 将会被Java插件执行的Java
    Class的名字,必须以.class结尾。这个文件必须存在于codebase属性指定的目录中.
  • codebase=”classFileDirectoryName” 将会被执行的Java
    Class文件的目录(或者是路径),如果你没有提供此属性,那么使用的jsp文件的目录将会被使用.
  • name=”instanceName” 这个Bean或applet实例的名字,它将会在Jsp其它的地方调用.
  • archive=”URIToArchive, …”
    一些由逗号分开的路径名,这些路径名用于预装一些将要使用的class,这会提高applet的性能.
  • align=”bottom | top | middle | left | right” 图形,对象,Applet的位置,有以下值:

    • bottom
    • top
    • middle
    • left
    • right
  • height=”displayPixels” width=”displayPixels”
    Applet或Bean将要显示的长宽的值,此值为数字,单位为象素.

  • hspace=”leftRightPixels” vspace=”topBottomPixels”
    Applet或Bean显示时在屏幕左右,上下所需留下的空间,单位为象素.
  • jreversion=”JREVersionNumber | 1.1” Applet或Bean运行所需的Java Runtime
    Environment (JRE) 的版本. 缺省值是 1.1.
  • nspluginurl=”URLToPlugin” Netscape
    Navigator用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp
  • iepluginurl=”URLToPlugin”
    IE用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp

三、jsp:usebean(引入javabean)

格式:

<jsp:usebean id="对象名" class="包名.类名" scope="作用范围(request/page/application/session)">jsp:usebean>

用于引入javabean,通常配合setProperty以及setProperty使用

四、jsp:setProperty(在bean中设置一个或多个属性)

格式:

setProperty name="javaBean对象id" property="javaBean对象属性名(javabean引入的方法名,可填入 * 来引入全部方法" setProperty>

用于设置属性,只有设置了属性后,才可以获取相应的属性。
可使用通配符 * ,来将引入的javabean中的全部属性设置。就相当于可以调用usebean中引入的java类的全部属性。

五、jsp:getProperty(获取属性)

格式:

name="javaBean对象id" property="javaBean对象属性名" />

例如:
这里写图片描述

这里写图片描述

六、jsp:include(动态导入页面)

格式:

<jsp:include page="fileURL">jsp:include> 

注意:
动态包含的主要区别在于,其每个页面单独生成JAVA源文件,不会互相干扰。

七、jsp:param(传递参数)

到达跳转页面可以通过 request.getParameter(“参数名”)方式取出参数值
jsp:param操作被用来以“名-值”对的形式为其他标签提供附加信息。它和
jsp:include、jsp:forward一起使用。
格式

param name="paramName" value="paramValue"/>
其中,name为与属性相关联的关键词,value为属性的值。

例如
includeAction.jsp


<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title>Includetitle>
head>
<body>
    <%double i = Math.random();%>
    <jsp:include page="come.jsp">//加载come.jsp
    <jsp:param name="number" value="<%=i%>" />//传递参数
jsp:include>
body>
html>

come.jsp


<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title>cometitle>
head>
<body bgcolor=cyan>
  <Font Size=3>
  <%//获得includeAction.jsp传来的值:
    String str = request.getParameter("number");
    double n = Double.parseDouble(str);
  %>
    The value form includeAction is:<br> <%=n%>
Font>
body>
html>

九大内置对象

九大内置对象,包括
4大作用域对象(pageContext、request、session、application)[作用域范围从低到高]+
3大打酱油对象(page[页面对象]、config[配置对象]、exception[例外对象])+
2大输出对象(out[输出对象]、response[响应对象])

一、request(请求对象)

“request” 对象代表的是来自客户端的请求,例如我们在FORM表单>中填写的信息等,是最常用的对象。关于它的方法使用较多的是getParameter、getParameterNames,getParameterValue,
通过调用这几个方法来获取请求对象中所包含的参数的值.

二、response(请求对象)

“response” 对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议使用,需要向客户端发送文字时直接使用“out” 对象即可。

三、session(请求对象)

“session” 对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。

四、application(请求对象)

“application” 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。

五、out(请求对象)

“out” 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了print和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。

六、config(请求对象)

“config” 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。

七、page(请求对象)

“page” 对象代表了正在运行的由JSP文件产生的类对象,一般不建议使用。

八、exception(请求对象)

“exception” 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage=”true “%>”的JSP文件中使用

九、pageContext(请求对象)

封装了当前jsp页面的运行信息,它提供了返回jsp页面的其他隐式对象的方法 :
getRequest(), getResponse(), getPage()
getServletContext() , getApplication(), getOut()
getSession(), getException(), getServletConfig()

由于Jsp就是servlet,因此,jsp九大内置对象,就是servlet的九个对象。因此可查阅javaEE的api,来了解九大对象的具体方法。

你可能感兴趣的:(servlet)