JSP(Java Server Page),由Sun公司倡导,许多公司参与,于1999年(与我年龄一样!!!)推出的一种Web服务设计标准。

注释

HTML注释:

1
<!--需要注释的HTML内容-->

JSP注释:

1
<%--需要注释的JSP内容--%>

JSP引擎把HTML注释交给用户,因此用户在浏览器中查看源代码时可看到HTML注释部分,但引擎会忽略JSP注释,即在编译JSP时忽略JSP注释部分

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ page import="java.util.Date" %>
<%-- Created by IntelliJ IDEA.
User: 刘方涵
Date: 2019/9/9 Time: 22:09
To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=GB2312" language="java" %>
<html>
<body>
<%
Date date=new Date();
%>
<!--这是html注释-->
<!--<%=date%>-->
</body>
</html>

浏览器端源代码:
<html>
<body>


<!--这是html注释-->
<!--Tue Sep 10 08:56:28 CST 2019-->
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: 刘方涵
Date: 2019/9/9
Time: 22:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=GB2312" language="java" %>
<html>
<body>
<%
Date date=new Date();
%>
<!--这是html注释-->
<%--<%=date%>--%>
</body>
</html>

浏览器端源代码:
<html>
<body>


<!--这是html注释-->

</body>
</html>

Java代码块(程序片)

java代码块也被称为JSP脚本,是使用<% %>括起来的部分,其中可以编写java代码。在其中编写的代码会被JSP引擎翻译至内置的Servlet中的_jspService()方法中作为方法中的java语句出现。

注意:jsp代码块可以放置到jsp页面的任何位置,可以放置任意数量。但他们都会按照顺序放置到Servlet中的_jspService()方法中。也就是说,其执行顺序与其在jsp中页面的出现顺序一致。

1
2
3
4
5
<%
System.out.println("JSP");
%>

会输出到控制台,不会在浏览器显示

(1)声明的变量不能添加权限访问修饰符

(2)不能定义方法(本身就在方法中,不允许方法的嵌套定义)

(3)不能添加静态语句块

声明语句块

JSP的生命语句块使用<%! %>括起来,生命语句块的内容将被JSP引擎翻译到Servlet的类体中,没有包含到哪个方法中。

声明语句中可声明实例变量、实例方法、静态方法、静态代码块等内容,这里面占有的内存空间直到引擎关闭才释放

1
2
3
<%!
int sum=0;
%>

表达式块

<%= %>,其中%与=之间不能存在空格,表达式块中插入表达式,这个表达式必须能求值。表达式的值有服务器负责计算,并将计算结果用字符串形式发送到用户端显示。

1
<%= sum(x)%>

经过编译后语句为out.print(sum(x));

内置对象

内置对象名(引用名) 类型
pageContext javax.servlet.jsp.PageContext
request javax.servlet.http.HttpServletRequest
session javax.servlet.http.HttpSession
application javax.servlet.ServletContext
response javax.servlet.http.HttpServletResponse
config javax.servlet.ServletConfig
out javax.servlet.jsp.JspWriter
page java.lang.Object
exception java.lang.Throwable

JSP指令

格式:

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

JSP共包含三种指令:page指令(页面指令)、include指令(包含指令)、taglib指令(标签库指令)

page指令

常用:

charset是指服务器发往客户端展现时的编码;

page指令属性名 解释
pageEncoding 设置当前JSP页面所用的字符编码格式。即用户在浏览器中通过右击查看编码所看到的编码格式,默认相应类型为html
contentType “MIME类型;charset=编码”
import 用于完成在JSP页面中导入指定的类,其被JSP引擎翻译为Servlet中的import语句
errorPage errorPage=”jsp文件”,页面发生错误时跳转到指定页面,但页面的路径不会发生改变
isErrorPage true/false,是否显示错误信息
session 默认为true

include指令

1
<%@include file="文件的URL"%>

在翻译之前进行的include,作用是在JSP页面出现该指令处,静态的插入一个文件。

静态插入:当前的JSP页面和插入的文件合并成为一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译为java文件

注意:

JSP页面的contentType属性只能唯一,所以要包含的文件必须和外面的文件contentType一致,否则500错误

两个文件之间可以共享变量,如果不想共享变量,需要在两个文件中设置不同的变量名

1
text/html是以html的形式输出,比如就会在页面上显示一个文本框。text/plain形式就会在页面上原样显示这段代码。

很多大公司在使用JSP进行网站制作时,明确规定不允许使用Java代码块以及表达式,因为这会使得页面看起来杂乱无章,取而代之的为EL表达式,JSTL标签等等

JSP动作

动作标记是一种特殊标记,它影响JSP运行时的功能

1
2
3
<jsp:动作名称 属性名=属性值 属性名=属性值……></jsp:动作名称>

<jsp:动作名称 属性名=属性值 属性名=属性值……/>

forward动作

1
2
3
4
5
<jsp:forward page="要转向的页面"/>

<jsp:forward page="要转向的页面">
param 子标记
</jsp:forward>

该指令的作用是:从改指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。

注意:当前页面使用forward动作标记转向后,尽管页面看到了转向后页面的效果,但浏览器地址栏中显示的仍为转向前的URL地址,因此,如果刷新浏览器的显示,将再次执行当前浏览器地址中显示的JSP页面

include动作

1
2
3
4
5
<jsp:include page="文件的URL"/>

<jsp:include page="文件的URL">
param 子标记
</jsp:include>

include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖当前的JSP页面,优点是页面的执行速度快;而include动作标记是在jsp页面运行 时才处理文件,被处理的文件在逻辑和语法上独立于当前的JSP页面,优点是可以使用param子标记更灵活的处理所需要的文件

param动作

1
<jsp:param name="名字" value="指定给param的值">

param标记不能单独使用,需作为jsp:include,jsp:forward,jsp:plugin标记的子标记使用

相关文章
评论
分享
  • JavaEE开发准备

    个人电脑硬件配置: Windows 10 64位家庭中文版 8G运行内存 Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz 1.Java JDK安装及配置(1)下载和安装首先进入oracle网站中Ja...

    JavaEE开发准备
  • JSP综合作业

    预备:数据库本次作业选择的数据库为MYSQL,采用的数据库管理工具为Navicat Premium12。MYSQL下载地址为https://dev.mysql.com/downloads/mysql/ 使用Navicat连接数据库。 ...

    JSP综合作业
  • JSP实现简单的购物车

    主要知识点:jsp指令标记、动作标记、内置对象request、response、session等的使用。 直接上代码: login.jsp: 1234567891011121314151617181920212223242526272...

    JSP实现简单的购物车
  • Java工具类

    API(Application Programming Interface)1.包装类Java是面向对象的语言,但其中存在基本类型,违背了面向对象的思想。 包装类是基本类型与引用类型之间交换的桥梁 类型 包装类 byte ...

    Java工具类
  • Java设计模式

    设计模式:设计模式常用的有23种。设计模式是一种设计经验的总结,为了解决某些场景下的某一类的问题,是一种通用的解决方案 创建型(5):解决对象创建的过程 结构型(7):把类或对象通过某种形式结合在一起 行为型(11):解决类或对象之间...

    Java设计模式
  • Scanner类的学习

    Scanner类导包:java.util 创建对象:Scanner input =new Scanner(System.in); 使用: int value = input.nextInt(); ​ String va...

    Scanner类的学习
  • 引用类型对象方法返回值问题

    想要通过对象方法交换两个数组中的值 目前采用了两种方法: (1)一次交换二者数组中的值 (2)交互两数组的数组名 (1) 1234567891011121314151617181920212223242526272829303132...

    引用类型对象方法返回值问题
  • Java入门到入土

    Java体系12345678910111213141516171819202122基础部分(JavaSE):1.面向对象的编程思想2.集合3.I/O流 底层MVC4.文件5.缓存6.反射、注解数据库(JDBC)+WEB(JavaEE)...

    Java入门到入土
  • Windows下neo4j的安装

    neo4j是一个高性能的NOSQL图形数据库,他将结构化数据存储在网络上而不是表中。他是一个嵌入式的、基于磁盘的、具备完全的事物特性的Java持久化引擎,neo4j也可看做是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。——百度...

    Windows下neo4j的安装
  • java实现类FTP程序

    继承程序设计实验,实验说明如图所示: 集成程序设计实验 TCP实现首先说明下基于TCP实现的功能: (1)能够实现多用户的同时连接 (2)用户执行成功的命令会在其他用户终端上显式说明 (3)当前用户数以及在线情况会在服务端实时显...

    java实现类FTP程序
Please check the comment setting in config.yml of hexo-theme-Annie!