001jsp的基本知识-包括生命周期,怎么编译等等
4 Jsp基础
4.1 Jsp引入
Servlet的作用: 用java语言开发动态资源的技术!!!
Jsp的作用:用java语言(+html语言)开发动态资源的技术!!!
Jsp就是servlet!!!
4.2 Jsp的特点
1)jsp的运行必须交给tomcat服务器!!!!
tomcat的work目录: tomcat服务器存放jsp运行时的临时文件
2)jsp页面既可以写html代码,也可以写java代码。
(html页面不能写java代码 。而jsp页面可以写java代码)
4.3 体验jsp页面作用
需求:显示当前时间到浏览器上
可以把jsp页面当做html页面在tomcat中访问!!!
4.4 Jsp的执行过程
问题: 访问http://localhost:8080/day12/01.hello.jsp 如何显示效果?
1)访问到01.hello.jsp页面,tomcat扫描到jsp文件,在%tomcat%/work把jsp文件翻译成java源文件
(01.hello.jsp -> _01_hello_jsp.java) (翻译)
2)tomcat服务器把java源文件编译成class字节码文件 (编译)
(_01_hello_jsp.java -> _01_hello_jsp.class)
3)tomcat服务器构造_01_hello_jsp类对象
4)tomcat服务器调用_01_hello_jsp类里面方法,返回内容显示到浏览器。
第一次访问jsp:
走(1)(2)(3)(4)
第n次访问jsp:
走(4)
注意:
1)jsp文件修改了或jsp的临时文件被删除了,要重新走翻译(1)和编译(2)的过程
4.5 疑问
问题: 为什么Jsp就是servlet!!!
jsp翻译的java文件:
public final class _01_hello_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
HttpJspBase类:
public abstract class org.apache.jasper.runtime.HttpJspBase extends javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage {
结论: Jsp就是一个servlet程序!!!
servlet的技术可以用在jsp程序中
jsp的技术并不是全部适用于servlet程序!
Servlet的生命周期:
1)构造方法(第1次访问)
2)init方法(第1次访问)
3)service方法
4)destroy方法
Jsp的生命周期
1)翻译: jsp->java文件
2)编译: java文件->class文件(servlet程序)
3)构造方法(第1次访问)
4)init方法(第1次访问):_jspInit()
5)service方法:_jspService()
6)destroy方法:_jspDestroy()
3)->6)是servlet的生命周期。因为jsp就是servlet,所以servlet的生命周期就是jsp的生命周期。
5 Jsp语法
5.1 Jsp模板
jsp页面中的html代码就是jsp的模板
5.2 Jsp表达式
语法:<%=变量或表达式%>
作用: 向浏览器输出变量的值或表达式计算的结果
注意:
1)表达式的原理就是翻译成out.print(“变量” );通过该方法向浏览器写出内容
2)表达式后面不需要带分号结束。
5.3 Jsp的脚本
语法:<%java代码 %>
作用: 执行java代码
注意:
1)原理把脚本中java代码原封不动拷贝到_jspService方法中执行。
5.4 Jsp的声明
语法:<%! 变量或方法 %>
作用: 声明jsp的变量或方法
注意:
1)变量翻译成成员变量,方法翻译成成员方法。
5.5 Jsp的注释
语法: <%!-- jsp注释 --%>
注意;
1)html的注释会被翻译和执行。而jsp的注释不能被翻译和执行。
6 Jsp的三大指令
6.1 include指令
作用: 在当前页面用于包含其他页面
语法: <%@include file="common/header.jsp"%>
注意:
1)原理是把被包含的页面(header.jsp)的内容翻译到包含页面(index.jsp)中,合并成翻译成一 个java源文件,再编译运行!!,这种包含叫静态包含(源码包含)
2)如果使用静态包含,被包含页面中不需要出现全局的html标签了!!!(如html、head、 body)
6.2 page指令
作用: 告诉tomcat服务器如何翻译jsp文件
<%@ page
language="java" --告诉服务器使用什么动态语言来翻译jsp文件
import="java.util.*" --告诉服务器java文件使用什么包
导入包,多个包之间用逗号分割
pageEncoding="utf-8" --告诉服务器使用什么编码翻译jsp文件(成java文件)
contentType="text/html; charset=utf-8" 服务器发送浏览器的数据类型和内容编码
注意:在开发工具中,以后只需要设置pageEncoding即可解决中文乱码问题
errorPage="error.jsp"
isErrorPage="false"
buffer="8kb"
session="true"
isELIgnored="false"
%>
6.3 taglib指令
总结:
1)编码实战:
1.1 servlet应用
1.2 初步了解软件开发流程
2)Jsp基础
2.1 Jsp的执行原理(翻译-》编译-》servlet的生命周期)
2.2 语法(jsp表达式,jsp脚本)
2.3 指令
include指令
page指令
001jsp的基本知识-包括生命周期,怎么编译等等相关推荐
- 3.1 Fragment理论知识及其生命周期,看这一片就够了
点此进入:从零快速构建APP系列目录导图 点此进入:UI编程系列目录导图 点此进入:四大组件系列目录导图 点此进入:数据网络和线程系列目录导图 一.Fragment 是什么? Fragment 是一种 ...
- 知识图谱|各生命周期主流算法 实践
知识图谱是大数据时代知识表示的主要形态之一,是人工智能应用不可或缺的基础资源,自2012年提出至今,受到学术界和产业界越来越多的关注. 伴随着人工智能浪潮,知识图谱迅速发展,已经在语义搜索.问答系统. ...
- maven scope 属性和生命周期
2019独角兽企业重金招聘Python工程师标准>>> maven的dependency参数 scope的分类 1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还 ...
- Vue选项式 API 的生命周期选项和组合式 API
Vue2.Vue3 生命周期的变化 正好在看Vue的官方文档,也正好比对一下,做一下笔记 选项式 API 的生命周期选项的变化 这里我们会发现Vue3对Vue2的生命周期钩子似乎没有做大的调整 修改 ...
- Maven构建的生命周期详解
以下引用官方的生命周期解释https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html: 一.构建生命 ...
- 2知识图谱的生命周期
知识图谱的生命周期 @知识图谱 知识建模--建立本体ontolog 建什么 概念.实体的类型 概念/实体的关联关系 要求:可靠性 方法 自顶向下--专家手工形成数据模式 自底向上--实体--类 利用现 ...
- 软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
文章目录 软件危机 软件的定义 软件危机典型表现 产生软件危机的原因 消除软件危机的方法 软件工程 什么是软件工程 软件工程的本质特征 软件工程的基本原理 软件工程方法学 传统方法学 面向对象方法学 ...
- 软件测试基础知识(二)------------等价类划分法、边界值分析法、场景法、错误推测法、bug定义/类型/优先级/生命周期/跟踪管理
等价类划分法 是把程序的输入域划分成若干个子集合(等价类),然后从每个子集合(等价类)中选取少数具有代表性的数据作为测试的输入数据. 在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的.--- ...
- 安卓基础知识之Activity篇(一):Activity生命周期
安卓基础知识系列旨在简明扼要地提供面试或工作中常用的基础知识,让对安卓还不太熟悉的小伙伴更快地入门.同时自己在工作中,也没法完全记住所有的基础细节,写这样的系列文章,可以让自己形成一个更完备的知识体系 ...
最新文章
- lvs的调度算法有几种_LVS:三种负载均衡方式比较
- swarm部署集群_WildFly Swarm –将Java EE应用程序部署为独立的Jar
- 工业交换机和工业级光纤收发器的区别
- 如何成功构建大规模 Web 搜索引擎架构?
- mysql manage keys_相传mysql 5.5 对于非聚集索引增删有很大的改善… 你信吗?
- mysql嵌套loop循环_mysql游标嵌套循环
- java关键字汉化_java关键字是什么
- gridcontrol值为0时设置为空_汇总:MySQL 8.0 运维便捷命令
- Linux服务器基本安全加固
- Matlab|Simulink打开mdl/slx等文件报错:lnvalid block diagram name supplied. Valid block diagram names ...
- 2022新轻量级个人免签支付源码+手动审核邮件短信推送
- 千万不要用memset函数对二维数组进行初始化
- 《密码学系列》—— 流密码
- 2021年最牛福利!阿里巴巴社招面试真题惨遭外泄,现在全部分享给大家!
- WM开发常用资源下载 (转自黎波老师博客)
- java当前时间减一年_Java获取时间,将当前时间减一年,减一天,减一个月
- 基于微信小程序的食堂窗口自助点餐系统
- Arduino与Proteus仿真实例-电子相册仿真
- 中国人数学能力很差?
- 2014、2015年国家级虚拟仿真实验教学中心入选名单
热门文章
- php+mysql防注入字符串过滤_php 防sql注入过滤代码
- JavaWeb项目启动时,tomcat会启动两次的原因(之一)和解决方案
- tcpdf中文解决方案
- druid 异常 com.alibaba.druid.pool.GetConnectionTimeoutException
- 解决js动态改变dom元素属性后页面及时渲染问题
- 分享一个完整的Mybatis分页解决方案
- AngularJS控制器中的#39;this#39;与$ scope
- 在文件中查找和替换,覆盖文件不起作用,它清空了文件
- jdbc获取数据库元数据,获取数据库列表,获取数据库基本信息,获取指定数据库中的表信息,获取指定表中的字段信息
- Makefile:Makefile中的调试打印方法