一、JSP简介

  JSP全称为Java Server Pages,是一种动态网页开发技术,可以在HTML界面中嵌入java代码,

  实现动态的提供数据。访问JSP时服务器会将JSP翻译成Servlet,访问JSP实际上就是访问Servlet。

二、JSP与Servlet

  我们先来看一个小实例,看下JSP与Servle之间的联系。

<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>Insert title here</title>
<%!
String name = "hcf";
String sex = "man";
String isAdult = null;
int age = 20;
%>
</head>
<body>
<%
if(age >= 18)
isAdult = "yes";
else
isAdult = "no";
%>
<h3><%= name %></h3>
<h3><%= sex %></h3>
<h3><%= age %></h3>
<h3>isAdult:<%= isAdult %></h3>
</body>
</html>

界面写完后,我们将这个jsp所属的项目部署到Tomcat上,直接访问这个界面

我们发现界面上显示的内容,就是按照我们代码的内容和逻辑来显示的。

之前说jsp最终会被服务器翻译成Servle,访问JSP实际就是访问Servlet。

我们来看下这个JSP生成的Servlet。

一般在apache-tomcat-7.0.53\work\Catalina\localhost\test01\org\apache\jsp目录下。

如果找不到可以采用Everything全局搜索"jsp.java".

这就是First.jsp生成的.java和.class文件。

我们打开.java文件会发现代码很多,我们主要看几个地方

我们可以发现这里的声明对应jsp中的声明部分,它是写在类中所有方法之外的,可看作是此类中所有方法的全局变量。

我们再来看该类中的一个方法:

  

可以看到最终显示的界面就是通过write、print这些语句打印出HTML界面,

jsp的判断部分(% %)和输出部分(%= %)在此方法中都能找到对应的代码。

看到这里就知道了,JSP中的HTML界面和java代码会转换成Servlet进行控制和输出。

三、脚本元素

  我们看之前的jsp文件中黄色高亮的部分的含义。

   <%! %>:声明,声明位置为jsp生成的Servlet类中所有方法之外,可看作全局变量。(只能写声明)

   <% %>  代码块,代码块所在的位置为_jspService()方法中,这部分内容可以写声明也可以写控制,但始终在_jspService()方法中。

   <%= %> :输出,相当于Servlet中的out.print(),生成位置在_jspService()方法中。

  <% %> <%=%>永远都是在_jspService()中生成,在Servle中的生成顺序按照jsp中位置的先后次序来。

  而<%!%>生成的位置是在这个类中,所有方法之外。

  

 

四、指令元素

  JSP指令主要用于设置页面相关属性和功能,如编码方式、数据类型等。

  4.1 page指令

  page指令顾名思义就是控制页面的指令。

  格式 :<%@ page  attribute="value"%>

  attribute:

    language:指定当前语言,一般是java。

    Encoding:指定当前界面编码方式。

    import:导入类,导入多个类时可用‘,’隔开。

    errorPage:发生错误时跳转的界面。(errorPage = "error.jsp");

    isErrorPage:指定当前页是否为错误处理界面。为true则代表为错误处理界面,可以使用exception对象。

    contentType:设置当前内容的类型。

PageAttribute.jsp

<!--     当前语音为java     内容类型为text/html    编码方式为 utf  (charset,Encoding这两种编码设置效果一样,选择一个就可以了)-->
<!-- charset和Encoding属性效果是一样的,任选一个就可以了 -->
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!-- 导入java.util包下和java.lang包下所有类 -->
<%@ page import = "java.util.*,java.lang.*" %> <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List<String> list = new LinkedList<>();
list.add(0, "零");
list.add(1, "一");
for(String temp:list){
out.println(temp + "<br>");
}
%>
</body>
</html>

接下来我们来看下errorPage,isErrorPage属性。 

PageAttribute.jsp 

<!--     当前语音为java     内容类型为text/html    编码方式为 utf  (charset,Encoding这两种编码设置效果一样,选择一个就可以了)-->
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!-- 导入java.util包下和java.lang包下所有类 -->
<%@ page import = "java.util.*,java.lang.*" %>
<!-- 发生错误则跳转到error.jsp界面 -->
<%@ page errorPage = "error.jsp" %> <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List<String> list = new LinkedList<>();
list.add(0, "零");
list.add(1, "一");
for(String temp:list){
out.println(temp + "<br>");
}
String com = null;
com.equals("");//此处有空指针异常。
%>
</body>
</html>

error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 设置当前页面为错误处理界面,可以使用exception -->
<%@ page isErrorPage = "true" %>
<%! String str = null;%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>this is error.jsp</h2><br>
<!-- 如果isErrorPage为false,则此处不能使用exception-->
   <!-- 此处的errorInfo是定义在_jspService()方法中的变量,不是全局变量-->
<% String errorInfo = exception.toString(); %>
<%= errorInfo %>
</body>
</html>

errorPage可以设置发生错误时的跳转页面,isErrorPage设置当前页面是否为错误处理界面。

  4.2 taglib指令

  taglib是导入标签库的指令。

  格式:<%taglib uri = "标签库地址" prefix = “”%>

  

  4.3include指令

  JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。

  包含的文件就好像是该JSP文件的一部分,会被同时编译执行。对于某些需要被多次重用文件可以采用

  incdlue指令,提高文件利用率。

  我们来看一个使用包含指令的小例子:

 menu.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href = "">随笔 </a>
<a href = "">文章 </a>
<a href = "">日记 </a>
<a href = "">评论 </a>
<a href = "">...</a>
</body>
</html>

include.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
  <!-- 使当前界面包含menu.jsp -->
<%@ include file = "menu.jsp"%><br>
this is my index
</body>
</html>

当前首页采用包含指令后,将指定的文件包含进了当前页面。

  

1.1(学习笔记)JSP(Java Server Pages)基础(脚本元素、指令元素)的更多相关文章

  1. jsp(java server pages):java服务器端的页面

    jsp(java server pages):java服务器端的页面 JSP的执行过程1.浏览器输入一个jsp页面2.tomcat会接受*.jsp请求,将该请求发送到org.apache.jasper ...

  2. Jsp (Java Server Pages)相关知识九大内置对象和四大作用域

    一.初识JSP Jsp页面的组成:静态内容.指令.表达式.小脚本.声明.标准动作.注释等元素构成 Url:统一资源定位符 Url组成:协议.主机名(包括端口号).路径 1.注释的方式: 1.HTML注 ...

  3. JSP - (Java Server Pages) - Java服务器界面

    JSP简介: 在HTML中嵌入Java脚本代码,由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码,然后将生成的整个页面信息返回给客户端: 一个JSP页面包含:静态内容(HTML静态文本), ...

  4. 什么是jsp(java server pages)

    JSP是一种运行在服务器端的脚本语言,是用来开发动态网页的技术,它是JAVA Web 程序开发的重要技术.本章介绍JSP技术的相关概念以及如何开发JSP程序,主要内容包括JSP技术简介.JSP的处理过 ...

  5. 学习笔记:Java的一些基础小知识之JVM与GC

      一.JVM是什么 Java虚拟机(英语:Java Virtual Machine,缩写为JVM),又名爪哇虚拟器,一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做.最早由太 ...

  6. 学习笔记之Java程序设计实用教程

    Java程序设计实用教程 by 朱战立 & 沈伟 学习笔记之JAVA多线程(http://www.cnblogs.com/pegasus923/p/3995855.html) 国庆休假前学习了 ...

  7. #学习笔记#jsp

    jsp简介 JSP(Java Server Pages)是JavaWeb服务器端的动态资源,它与html页面的作用是相同的,显示数据和获取数据. jsp: 作为请求发起页面,例如显示表单.超链接. : ...

  8. 学习笔记|JSP教程|菜鸟教程

    学习笔记|JSP教程|菜鸟教程 ------------------------------------------------------------------------------------ ...

  9. 什么是Java Server Pages?

    JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java servlet ...

随机推荐

  1. sperman系数

    https://baike.baidu.com/item/spearman%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0/7977847?fr=aladdin https:/ ...

  2. 转:强化学习(Reinforcement Learning)

    机器学习算法大致可以分为三种: 1. 监督学习(如回归,分类) 2. 非监督学习(如聚类,降维) 3. 增强学习 什么是增强学习呢? 增强学习(reinforcementlearning, RL)又叫 ...

  3. spring和Quartz的定时功能

    一:前沿 最近在做一个定时的功能,就是在一定时间内查询订单,然后告诉用户未付款,已付款等消息通知,而且要做集群的功能,这个集群的功能是指,我部署两套代码,其中一个定时的功能在运行,另外一个就不要运行. ...

  4. abstract 与interface区别

    1.abstract用于修饰类,interface用于修饰接口 2.抽象类中可以有抽象和非抽象方法,接口中只能定义抽象方法,不能有实现 3.抽象类必须被继承,interface被实现 4.抽象类有构造 ...

  5. [POJ1286&POJ2154&POJ2409]Polya定理

    Polya定理 L=1/|G|*(m^c(p1)+m^c(p2)+...+m^c(pk)) G为置换群大小 m为颜色数量 c(pi)表示第i个置换的循环节数 如置换(123)(45)(6)其循环节数为 ...

  6. float/文档流

    float : left | right | none | inherit; 文档流是文档中可显示对象在排列时所占用的位置. 浮动的定义: 使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻 ...

  7. 详解SHOW PROCESSLIST显示哪些线程正在运行列出的状态

    SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此信息.如果您有SUPER权限,您可以看到所有线程.否则,您只能看到您自己的线程( ...

  8. float和double类型的存储方式

    Float double 类型在计算机的存储方式 计算机中只认识10的二进制数,那么该如何存储小数呢? 那么我们先看Floa类型: Float在计算机(32位)中是4个字节的,具体地:第一位为符号位0 ...

  9. 配置Anaconda的jupyter notebook默认主页

    1. 在Anaconda Prompt里输:jupyter notebook --generate-config 然后找到这个文件:C:\Users\{YOUR NAME}\.jupyter\jupy ...

  10. python基础复习-1-2 数据类型-str、list、tuple、dict

    数据类型 数字 引号: 123 数值 '123' 字符串 整数:ini long 范围:(-2**31 - 2**31) num = 123 长整型 long (L) num = 123L 浮点型:f ...