JSP(Java sever pages):一种用于开发动态web页面(资源)的技术。

jsp页面是在服务器上运行的一个页面,一个jsp页面就是一个类。写jsp就像在写html,jsp允许在页面中编写java代码,并允许开发人员在页面中获取request,response等web常用开发对象,实现与浏览器的交互。

JSP原理:

JSP 的执行过程:

(1) 客户端发出Request (请求);
(2) JSP Container 将JSP 翻译成Servlet 的源代码;
(3) 将产生的Servlet 的源代码经过编译后,加载到内存执行;
(4) 把结果Response (响应)发送至客户端。

JSP和Servlet的执行效率相差不大,只是第一次执行JSP页面时需要进行编译。
一般人都会以为JSP 的执行性能会和Servlet 相差很多,其实执行性能上的差别只在第一次的执行。因为JSP 在执行第一次后,会被编译成Servlet 的类文件,即为XXX.class,当再重复调用执行时,就直接执行第一次所产生的Servlet,而不用再重新把JSP编译成Servlet。因此,除了第一次的编译会花较久的时间之外,之后JSP 和Servlet 的执行速度就几乎相同了。
在执行JSP 网页时,通常可分为两个时期:转译时期(Translation Time)和请求时期(Request Time) 。

1. JSP文件先要被服务器翻译成Java文件(Servlet),在tomcat中翻译后的Java文件在tomcat下的 work/Catalina /localhost 中相应名字的应用目录里。
2. 编译成Java(Servlet)文件
3. 运行.class文件
Tomcat的全局配置文件$CATALINA_HOME/conf/web.xml
在Tomcat下的conf目录中的web.xml是服务器全局的配置文件,其中要想关闭列表显示叫要把
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
修改为true

JSP的组成元素:

1, 指令
page指令

<%@ page ..........%>

include指令静态引入,引入其他的网页,相当于将两个页面合成一个。公用一个request对象。

页面跳转可以直接在页面后面加?变量名=值(test.jsp?name=admin) 的方式传参数,这种静态包含不可以。
taglib指令---标准标签库(JSTL),Taglib指令用于在JSP页面中导入标签库

errorPage---定义当当前页面出错时跳转的页面--如果当前页面出错则跳转到该页面,注意,需要在出现错误的提醒界面有   isErrorPage="true"

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>出现错误的提醒页面</h1>
<h3><%=exception.getMessage() %></h3>
</body>
</html>

2, 表达式
<%=变量名%>

<%=sum %>

3, 脚本
<% 代码内容 %>

<%
    for(int i=1;i<=5;i++){
        sum=sum*i;
    }
%>

单个脚本片段的Java语句可以是不完整的,但是整个页面中组合的Java语句必须是完整的。

4, 声明
<%! 代码声明 %>

可用于定义jsp页面转换成servlet程序的静态代码块,成员方法和变量。可以单独定义在一个声明中,也可以定义到同一个声明中。声明中不能使用九大内置对象。

<%!int sum=1;
%>

5, 注释

JSP注释:<%-- … --%>,转化阶段消失,只能被开发人员看到

JAVA注释://、/**/、/***/,编译阶段消失

HTML注释:<!-- … -->, 不会消失,在页面中也能看到

6, 一些静态内容

jsp中html内容称为模板元素,jsp模板元素定义了网页基本骨架,即定义了页面结构和外观。

JavaWeb(一)JSP基础组成的更多相关文章

  1. JavaWeb chapter9 JSP基础

    1.  Servlet的缺陷 一个动态网页中,大部分内容都是HTML代码等固定不变的内容,编写和修改HTML非常不方便,令人厌恶: 部署Servlet是繁琐而且容易出错的任务:(Servlet3.0规 ...

  2. JavaWeb之 JSP基础

    什么是JSP JSP的全称是java server page, java服务页面.是提供java服务的页面~ 那么和Servlet有什么区别呢?JSP的页面既可以写java代码~也可以写html代码哦 ...

  3. JAVAWeb入门之JSP基础知识

    也是到了考试周,很多课都结了,准备去学点新东西.随后就开始自学JAVAWeb. 要学习JAVAWeb,首先需下面的知识: a)      HTML/CSS/JS(前端页面),XML,JSON,vue ...

  4. JavaWeb基础-Jsp基础语法

    jsp基础语法 JSP的组成 静态内容.指令.表达式.小脚本.声明.注释 JSP的生命周期 用户发出index.jsp ,服务端判断是否是第一次请求,若是第一次请求,则tomcat中的JSP引擎中的文 ...

  5. Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识

    JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...

  6. JavaEE系列之(一)JSP基础知识详解

    一.JSP基础语法     1.JSP简介        JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签.JSP是一种动态网页 ...

  7. JSP基础笔记

    主要内容:1. JSP基础2. Cookie3. HttpSession ================================ JSP基础 1. jsp的作用: * Servlet: &g ...

  8. JavaWeb开发技术基础概念回顾篇

    JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...

  9. Java匹马行天下之JavaWeb核心技术——JSP

    JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要在特定的web服务器上运行,分为web服务器和web客 ...

  10. Servlet&jsp基础:第五部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

随机推荐

  1. Hadoop生态系统图解

    Hadoop生态架构图 参考文章: Hadoop生态系统介绍 HDFS架构 1.NaneDode:主节点,**存储文件的元数据**如文件名,文件目录结构,文件属性(生成时间,副本数量,文件权限),以及 ...

  2. JS将文件以form表单一样提交到后台

    这是很简单.. HTML <div> <input type="file" id="myfile"> <input type=&q ...

  3. ORM的概念, ORM到底是什么

    一.ORM简介         对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使 ...

  4. 使用gulp实现文件压缩及浏览器热加载

    一.安装gulp 首先,你要安装过nodejs,如果没有安装过的同学请自行下载.  先再命令行里输入   npm install gulp -g   下载gulp 二.创建gulp项目 创建一个你需要 ...

  5. MySQL 启动参数说明及性能优化建议

    [mysqld] port = 3306 serverid = 1 socket = /tmp/mysql.sock skip-name-resolve #禁止MySQL对外部连接进行DNS解析,使用 ...

  6. 扩展entity framework core 实现默认字符串长度,decimal精度,entity自动注册和配置

    报道越短,事情越严重!文章越短,内容越精悍! 文章以efcore 2.0.0-preview2.测试验证通过.其他版本不保证使用,但是思路不会差太远.源代码 目标: 1.实现entity的自动发现和m ...

  7. python2.7 + selenium3.4.3浏览器的选择

    大家都知道,selenium2对火狐浏览器兼容性比较好,和谷歌和IE相比,好处是无需安装相应的driver.exe来支持启动浏览器,但是缺点是最高支持火狐47版本. 现在selenium3出来了,是不 ...

  8. 【原创】Easyui tree filter 过滤本地数据无效的原因

    Easyui tree filter 过滤本地数据无效的解决方式    正确使用方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  9. 终结 finalize()和垃圾回收(garbage collection)

    1.为什么要有finalize()方法? 假定你的对象(并非使用new)获得了一块"特殊"的内存区域,由于垃圾回收器只知道释放那些经由new分配的内存,所以他不知道该如何释放该对象 ...

  10. 24. leetcode 409. Longest Palindrome

    409. Longest Palindrome Given a string which consists of lowercase or uppercase letters, find the le ...