JSP基本用法(一)运行机制和语法
一、概述
JSP是一种建立在Servlet规范功能上的动态网页技术,在网页文件中嵌入Java代码和JSP标记用于产生动态内容。
本文简单介绍JSP的运行机制和JSP的语法。
二、JSP的运行机制
JSP文件在用户第一次请求时,会被编译成Servlet,再由这个Servlet处理用户的请求。

JSP容器管理JSP页面生命周期分为两个阶段:转换阶段和执行阶段,当有一个对JSP页面的客户请求到来时,JSP容器将JSP页面转换为Servlet源文件,然后调用javac工具编译源文件生成字节码文件,接下来,Servlet容器加载转换后的Servlet类,实例化一个对象处理客户端的请求,请求处理完成后响应对象被JSP容器接收,容器将HTML格式的响应信息发送给客户端。
三、JSP的语法
JSP页面一般由元素和模板数据组成。元素是必须由JSP容器处理的部分,模板数据JSP容器不处理。
元素分为三种类型:指令元素、脚本元素和动作元素。
1 指令元素
主要用于为转换Servlet阶段提供整个JSP页面的相关信息,指令不回产生任何输出。
1.1 page指令:作用于整个JSP页面,定义了与页面相关的属性,用于和JSP容器通信
page指令有15个属性:
<%@ page
language="java" //指定在脚本元素中使用的脚本语言
import="com.test.Person" //指定在脚本环境下可以使用的类
extends="className" //指定JSP页面转换后的Servlet类从哪一个类继承
session="true" //指定页面是否参加到HTTP会话中,若为true则在JSP页面中可以使用隐含的session对象
buffer="none" //指定out对象使用的缓冲区大小
autoFlush="true" //指定当缓冲区慢的时候,缓存的输出是否应该自动刷新
isThreadSafe="true"//指定对JSP页面的访问是否是线程安全的
info="info_text" //指定页面的相关信息
errorPage="error_url" //指定当JSP页面发生异常时,将转向哪一个错误处理页面
isErrorPage="false" //指定当前的页面是否是另一个页面的错误处理页面
contentType="text/html; charset=ISO-8859-1" //指定相应页面的MIME类型和字符编码
pageEncoding="ISO-8859-1" 指定页面使用的字符编码,如果设置了该属性,则页面使用该属性指定字符集,没有设置则使用contextType属性指定的字符集
isErrorPage="false" //定义在JSP页面中是否执行或忽略EL表达式
deferredSyntaxAllowedAsLiteral="false" //指示在JSP页面的模板文本中是否允许出现字符序列
trimDirectiveWhitespaces="false" //指示模板中的空白怎么处理
%>
在包com.test包中新建一个Person类,在JSP中使用import引入该类即可使用:
<%@ page import="com.test.Person" %>
<html>
<head>
<title>Hello JSP</title>
</head>
<body>
<%
Person p=new Person("xujian",25);
String name=p.getName();
String age=p.getAge()+""; String info=name+":"+age;
out.write(info);
%>
</body>
</html>
1.2 include指令:用于在JSP页面中静态包含一个文件,可以是JSP页面、HTML网页、文本文件或一段Java代码
<html>
<head>
<title></title>
</head>
<body>
<%@ include file="date.jsp" %>
</body>
</html>
1.3 taglib指令:允许页面使用用户定制的标签
2 脚本元素
脚本元素包括三个部分:声明、脚本端和表达式:
2.1 声明:用于声明在JSP页面的脚本语言中使用的变量和方法
在JSP中有两种声明变量的方法,一种是在<%! %>内,一种是在<% %>内,它们是有区别的:声明在<%! %>内的变量和方法是一个类内的变量和方法,也就是成员变量和成员方法。声明在<%%>内的变量是一个方法的变量也就是局部变量。另外,如果在<% %>内添加一个method()方法那么该程序就会报错,这样声明一个方法等于就是一个类里的方法里又声明了个方法结果肯定是错误的。

2.2 脚本段:在请求处理期间要执行的Java代码段
<html>
<head>
<title>Hello JSP</title>
</head>
<body>
<%out.write("hello world!"); %>
</body>
</html>
在JSP容器转换JSP页面为Servlet类时,页面中代码段会按照出现的次序依次被转换为_jspService()方法中的代码。
2.3 表达式
表达式脚本元素是Java语言中完整的表达式,在请求处理时计算这些表达式,计算的结果将被转换为字符串,插入到输出流中。
<%@ page import="java.util.Date" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>Hello JSP</title>
</head>
<body>
现在的时间:<%= new Date().toLocaleString() %>
</body>
</html>
3 动作元素
动作元素为请求处理阶段提供信息,有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签。一个标准动作是嵌入到JSP页面的一个标签,在页面被转换为Servlet期间,当JSP容器遇到这个标签,就用预先定义的对应与该标签的Java代码来代替它。
JSP规范中定义了了20个标准的动作元素。
JSP基本用法(一)运行机制和语法的更多相关文章
- JSP基础总结(运行机制、脚本元素、指令元素、动作元素)
JSP的运行机制: 1.转译阶段:JSP页面转换成Servlet类: 2.请求阶段:Servlet类执行,将相应结果发送至客户端. 流程解释: 1.用户访问某个JSP页面 2.服务器找到相应的JSP页 ...
- <关于JSP技术>运行机制及语法概述(附对本次同济校内ACM选拔赛决赛的吐槽)
(一)JSP运行的机制 JSP是一种建立在Servlet规范功能之上的动态网页技术,它们都是在通常的网页文件中嵌入脚本代码,用于产生动态内容,不过和ASP不同的是JSP文件中嵌入的是Java代码和JS ...
- Java基础介绍运行机制笔记
1. 基础知识点图解 编程语言核心结构:变量.基本语法.分支.循环.数组.…… Java面向对象的核心逻辑:OOP.封装.继承.多态.接口…… 开发Java SE高级应用程序:异常.集合.I/O.多线 ...
- javascript运行机制
太久没更新博客了,Javascript运行机制 Record it 1.代码块 JavaScript中的代码块是指由<script>标签分割的代码段.例如: <script type ...
- JavaWeb三大组件——过滤器的运行机制理解
过滤器Filter 文章前言:本文侧重实用和理解. 一.过滤器的概念. lFilter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有 ...
- PHP的运行机制与原理(底层) [转]
说到php的运行机制还要先给大家介绍php的模块,PHP总共有三个模块:内核.Zend引擎.以及扩展层:PHP内核用来处理请求.文件流.错误处理等相关操作:Zend引擎(ZE)用以将源文件转换成机器语 ...
- ASP.NET运行机制原理
ASP.NET运行机制原理 一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去另一台电脑上访问文件一样,只不过 ...
- ASP.NET运行机制原理 ---浏览器与IIS的交互过程 自己学习 网上查了下别人写的总结的很好 就转过来了 和自己写的还好里嘻嘻
一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去访问一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问 ...
- struts2运行机制
struts2是web应用中一个常用的mvc框架,下面探讨一下其内部运行机制: 1.从客服端浏览器输入的url后,客服端通过http协议发送一个请求到服务器(tomcat),Tomcat收到这个请求之 ...
随机推荐
- 【转】【Python】Python发送邮件(常见四种邮件内容)
在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下,Shell脚本发送邮件告警是件很简单的事,有现成的邮件服务软件或者调 ...
- 【转】【Python】Python3爬虫实现自动登录、签到
工具:Fiddler 首先下载安装Fiddler,这个工具是用来监听网络请求,有助于你分析请求链接和参数. 打开目标网站:http://www.17sucai.com/,然后点击登录 好了,先别急着登 ...
- gtest日志在工程项目中的应用
网上有各种gtest的入门教学,这里就不一一重复了.本文的目的是讲解如何将gtest应用于工程应用中.利用测试驱动开发这样的理论,来先写测试代码,当自动化测试跑通以后,主工程的代码也就编写完了. 这里 ...
- List转DataTable(反射) ; 将泛型集合类转换成DataTable ; 将集合类转换成DataTable
public class ConvertX { #region 将集合类转换成DataTable /// <summary> /// 将集合类转换成DataTable /// </s ...
- Xianfeng轻量级Java中间件平台:权限管理
权限管理:是通过系统对用户的行为进行控制的一套业务规则,可以做得很简单,比如通过硬编码的方式进行控制,也可以做得很复杂,比如通过一些复杂的权限模型去实现一些复杂的权限控制,比如菜单访问权限.按钮操作权 ...
- VoltDB
VoltDB VoltDB,一个内存数据库,提供了 NoSQL 数据库的可伸缩性和传统关系数据库系统的 ACID 一致性. VoltDB是一个内存中的开源OLTP SQL数据库,能够保证事务的完整性( ...
- MySQL binlog日志操作详解
MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. bi ...
- Git的杀手级功能之 一 远程仓库
Git的杀手级功能之一:远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上. 一.注册GitHub账号,然后和本地Git仓库来关联免费获得Git远程仓库来学校git的远程仓 ...
- springboot中@EnableAsync与@Async注解使用
springboot中@EnableAsync与@Async注解使用 @Async为异步注解,放到方法上,表示调用该方法的线程与此方法异步执行,需要配合@EnableAsync注解使用. 1.首先演示 ...
- .OFF 格式文件
转载:http://blog.sina.com.cn/s/blog_643634b80102v166.html 物体文件格式(.off)文件通过描述物体表面的多边形来表示一个模型的几何结构,这里的多边 ...