web_day38_JSP

一、JSP介绍

1、JSP概念

  • java server page :运行在服务器端的页面技术,它是建立在Servlet规范之上的动态网页开发技术,jsp也是一个servlet
  • 如果用户访问服务器的是一个静态资源,那么直接响应过去
  • 如果是一个动态资源,那么需要先将这个动态资源转成静态资源再响应!

2、JSP作用

JSP是服务器端的动态资源,其主要作用是显示和获取数据

3、jsp特点

  1. 跨平台
  2. 业务代码相分离
  3. 组件重用
  4. 预编译:用户第一次访问,jsp只会编译一次(之后未对jsp源码进行修改)

4、JSP执行原理

二、JSP使用

1、jsp的语法

1.1 组成部分

  1. JSP脚本
  2. html标签
  3. JSP动作标签

2、JSP脚本

2.1 声明<%! %>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>JSP脚本--声明</title>
	</head>
	<body>
		<%!
			//这里相当于在类中写的代码
			int i=23;
			public void print(){
				System.out.println("I have a dream!");
			}
			  
			class MyClass{
				public void print(){
					System.out.println("I have a dream!");
				}
				int b=230;
			}
		%>
	</body>
</html>

2.2 嵌套Java代码片段,编译后放在service方法中

​<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>JSP脚本--嵌套Java代码</title>
	</head>
	<body>
		<%
			//这里相当于在方法中的代码,定义一个变量:局部变量
		        int i = 23000;
			System.out.println(i);
		%>
	</body>
</html>
​

2.3 输出<%= %>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>JSP脚本--输出</title>
	</head>
	<body>
		<%=
			//相当于response.getWriter().write();
			123
		%>
	</body>
</html>

 

2、jsp的注释

  1. html注释:<!-- -->
  2. java注释://和/* */
  3. jsp注释:   <%--  --%>

三、jsp的三种指令

1、格式

<%@  指令名称  属性名1=”属性值1”  属性名2=”属性值2”   属性名3=”属性值3”  %>

2、jsp指令分类

2.1 page:对页面的某些特性进行描述

<%@ page language="java" contentType="text/html; charset=UTF-8" errorPage="e.jsp"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<%
			int i= 1/0;
		%>
	</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>错误页面</title>
	</head>
	<body>
		除零错误!
	</body>
</html>

2.2 include:静态包含

静态包含一个jsp页面(合并的是页面),它的出现,主要是提高代码的重用性

<%@ include file="/include01/date.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>
		现在时间是:
		<%@ include file="date.jsp" %>
	</body>
</html>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>显示时间</title>
	</head>
	<body>
		<%
			String time = new Date().toLocaleString();
		%>
	
		<%=time %>
	</body>
</html>

 

2.4 taglib指令:引入第三方标签库

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  1. uri:引入第三方库的哪一个库
  2. prefix:使用这个库相关标签的前缀
  3. 使用这个的时候需要导入第三个的jar包!(Jstl.jar和Standard.jar)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>taglib指令</title>
	</head>
	<body>
		<!-- 向域对象中设置一个值  count:变量的名称 3:值-->
		<c:set var="count" value="3"></c:set>
		
		<!-- 获取值 -->
		<c:out value="${count}"></c:out>
	</body>
</html>

四、jsp的动作标签

<jsp:include page="relativeURL" flush="true|false" />

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>显示时间</title>
	</head>
	<body>
		<%
			String time = new Date().toLocaleString();
		%>
	
		<%=time %>
	</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>动作标签之动态包含</title>
	</head>
	<body>
		现在时间是:
		<jsp:include page="date.jsp"></jsp:include>
	</body>
</html>

五、jsp的九大内置对象

1、概念

  • JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在JSP页面中使用
  • jsp为了我们开发方便,直接提前给我们提供好的一些对象(进入jsp页面就可以直接使用)
jsp9大内置对象
名称类型描述
applicationjavax.servlet.ServletContext所有用户的共享信息
sessionjavax.servlet.http.HttpSession用于保护用户信息
requestjavax.servlet.http.HttpServletRequest用于得到用户请求信息
pageContextjavax.servlet.jsp.PageContextjsp的页面容器
responsejavax.servlet.http.HttpServletResponse服务器向客户端的回应信息
configjavax.servlet.ServletConfig服务器配置,可以取得初始化参数
outjavax.servlet.jsp.JspWriter用于页面输出
pagejava.lang.Object指当前页面转换后的Servlet类的实例
exceptionjava.lang.Throwable表示JSP页面所发生的异常,在错误页中才起作用

2、作用

简化Web应用程序的开发,在jsp页面中可以直接使用

3、内置对象说明

3.1 out:页面数据的输出(带有缓冲功能)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>jsp九大内置对象之out</title>
	</head>
	<body>
		<%
			out.write("first line");//有缓冲区,不会立即执行
			response.getWriter().write("second line");
		%>
	</body>
</html>

 

3.2 pageContext:jsp页面容器

  1. 通过这个对象可以获得其它8个内置对象
  2. 它还提供了存储数据的功能。【pageContext对象作为域对象!】
pageContext获取其他8个内置对象
方法名功能描述
JspWriter getOut()用于获取out隐式对象
Object getPage()用于获取page隐式对象
ServletRequest getRequest()用于获取request隐式对象
ServletResponse getResponse()用于获取response隐式对象
HttpSession getSession()用于获取session隐式对象
Exception getException()用于获取exception隐式对象
ServletConfig getServletConfig()用于获取config隐式对象
ServletContext getServletContext()用于获取application隐式对象

 

pageContext作为域对象的方法
方法名称功能描述
void setAttribute(String name,Object value,int scope)用于设置pageContext对象的属性
Object getAttribute(String name,int scope)用于获取pageContext对象的属性
void removeAttribute(String name,int scope)删除指定范围内名称为name的属性
void removeAttribute(String name) 删除所有范围内名称为name的属性
Object findAttribute(String name) 从4个域对象中查找名称为name的属性
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>jsp九大内置对象之pageContext</title>
	</head>
	<body>
		<!-- 向域中设置值 -->
		<%
			/* pageContext.setAttribute("book", "西游记");//默认向page域中设置值
			//指定向哪个域中设置值
			pageContext.setAttribute("book", "三国演义",pageContext.PAGE_SCOPE); */
			pageContext.setAttribute("book", "红楼梦",pageContext.REQUEST_SCOPE);
			pageContext.setAttribute("book", "水浒传",pageContext.SESSION_SCOPE);
			pageContext.setAttribute("book", "金瓶梅",pageContext.APPLICATION_SCOPE); 
		%>
		<!-- 获取值 -->
		<%-- <%=pageContext.getAttribute("book")%><!-- 从page域总获取值 -->
		<%=pageContext.getAttribute("book",pageContext.PAGE_SCOPE)%><!-- 从page域总获取值 -->
		<%=pageContext.getAttribute("book",pageContext.REQUEST_SCOPE)%><!-- 从request域总获取值 -->
		<%=pageContext.getAttribute("book",pageContext.SESSION_SCOPE)%><!-- 从session域总获取值 -->
		<%=pageContext.getAttribute("book",pageContext.APPLICATION_SCOPE)%><!-- 从application域总获取值 --> --%>
		
		<%=pageContext.findAttribute("book") %> <!-- 全域查找,从最小的域开始找 -->
		
	</body>
</html>

 六、JSP的四个作用域

PageContext常量名描述 作用域名称 域对象类型
pageScope当前页面中有效pageContextPageContext
requestScope一次请求范围requestHttpServletRequest
sessionScope 一次会话范围 sessionHttpSession
applicationScope应用范围applicationServletContext

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值