1.JSP介绍及三大元素

1.概念

1.概念:Java Server Pages,是一种`动态网页开发技术`
	动态网页开发技术:jsp,servlet,php,asp
	与html的区别:
		html是静态(数据)网页开发技术
		jsp是`(数据)动态`网页开发技术
	jsp页面允许我们在html代码中嵌入java代码
	简单理解:`jsp=html+java`
	jsp可写内容:
		html,css,js,image,java,EL表达式,第三方标签库(jstl,spring...)
	注意:jsp可以一行java代码都不写,也可以一行html代码不写

问题:Eclipse中创建的.jsp文件默认不是UTF-8的编码格式,解决办法?
在webapp文件夹下面新建JSP File时,输入jsp文件的名称下一步时,在底下有蓝色的字体JSP Templates点击之后在左面有一个JSP Files点击,之后找Encoding,选上UTF-8就好了,以后创建jsp文件就都是utf-8格式
jsp文件放在src/main/webapp/hello.jsp下

新建一个hello.jsp文件
在这里插入图片描述
hello.jsp中的内容,发布到tomcat中,访问之后
在这里插入图片描述

问题:hello.jsp是怎样变成hello_jsp.java的?
在tomcat的安装路径下面的work文件夹下,找到项目名,进入到里面找到对应的Java文件:hello_jsp.java 会看到hello_jsp extends HttpJspBase extends HttpServlet

2.jsp与servlet的关系

2.jsp与servlet的关系
简单理解:一个jsp页面就是一个servlet
原因:jsp页面被第一次访问的时候,被web容器(也就是tomcat服务器)编译成一个java类,
这个类`继承了HttpJspBase类`(`HttpJspBase类是HttpServlet的子类`),
所以说jsp是HttpServlet子类的子类,这个java类在tomcat的安装路径下面的`work`文件夹下,
`找到项目名`,进入到里面找到对应的Java文件:`hello_jsp.java` 
hello_jsp extends HttpJspBase extends HttpServlet

3.jsp的运行方式

3.jsp的运行方式
jsp运行在(拥有`jsp引擎`:在tomcat的安装路径里面的lib下`jasper.jar`作用)web容器内,例如tomcat服务器
jsp页面运行在服务器端,运行完后,`会把动态生成的html通过IO流写回浏览器,从而呈现效果`

在这里插入图片描述

4.jsp的生命周期

4.jsp的生命周期
	编译阶段
		jsp页面被访问时
		hello.jsp--翻译阶段-->hello_jsp.java--编译阶段-->hello_jsp.class
	初始化阶段
		jsp页面被访问时,创建一个servlet对象(一个jsp页面就是一个servlet),调用init()初始化
	运行阶段
		调用_jspService(),通过IO流把html标签写回浏览器,如果是java代码正常运行
	销毁阶段
		tomcat正常关闭时,对象销毁,destory()

5.JSP核心————三大元素

在这里插入图片描述
jsp案例代码:

<!-- 导入ArrayList包 -->
<%@ page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- taglib引入jstl标签库 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!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>Hello Word</h1>
	
		<!-- 声明成员属性 -->
		<%!	private int number; %>
		<!-- 声明成员方法 -->
		<%!
			public void method() {
				System.out.print("这是声明的一个方法");
			}
		%>
	
		<!-- 表达式 -->
		<%= 10 %>	<br>
		<%= 2*2 %>
		
		<!-- 脚本 -->
		<% 
			int a=0;
			System.out.println("a的值是:"+a);
			System.out.println("这是脚本的输出语句");
			method();
			ArrayList<String> list=null;
		%>	

		<!-- 指令标签静态导入,将其他页面导入到当前页面 -->
		<%@ include file="" %>

		<!-- 动作元素 -->
		<jsp:fallback>网络延迟过高</jsp:fallback>
		
		<jsp:forward page="login.jsp?username=tom">				
			page内容:jsp,servlet,html
		</jsp:forward>
		
		<jsp:forward page="login.jsp">				
			<jsp:param value="tom" name="username"/>
		</jsp:forward>
		
		 <jsp:include page=""> 
			动态导入,在当前jsp页面运行阶段发生
		</jsp:include>
		
		<jsp:param value="tom" name="username"/>
		
	</body>
</html>

浏览器结果:
在这里插入图片描述
java后台结果:
在这里插入图片描述
jsp的所有动作元素
在这里插入图片描述

在这里插入图片描述

6.动态导入和静态导入的比较:

静态导入动态导入
元素指令元素动作元素
语法<%@ include file="" %><jsp:include page=""></jsp:include>
发生翻译阶段运行阶段
效率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值