Java Web day7

六、JSP技术

6.1 JSP概述

在动态网页开发中,经常需要动态生成HTML内容,例如,-篇新闻报道的浏览次数需要动态生成。这时,如果使用Servlet来实现HTML页面数据的统计,需要调用大量的输出语句,使静态内容和动态内容混合在一起, 导致程序非常臃肿。为了克服Servet的这些缺点,Oracie(Sun)公司推出了JSP技术。

6.1.1 什么是JSP

JSP英文全称Java Server Pager ava服务端页面,它是建立在servlet规范基础上的动态网页开发技术。
jsp文件中,HTML 代码和Java代码共同存在。JSP文件的扩展名为.jsp

6.1.2 编写第一个 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>
HelloWorld!!!
<%response.getWriter().print("大数据2005"); %>
</body>
</html>

在这里插入图片描述
修改jsp编码:
在这里插入图片描述
在这里插入图片描述

6.1.3 JSP运行原理

在这里插入图片描述
JSP的运行过程具体如下:
(1)客户端发出请求,请求访问JSP文件。
(2 )JSP容器先将JSP文件转换成一个Java源文件( Java Serlet源程序),在转换过程中,如果发现JSP文件申存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。
(3)如果转换成功,则JSP容器将生成的Java源文件编译成相应的字节码文件*.classo该class文件就是一个Servlet, Servlet 容器会像处理其他Servlet 一样来处理它。
(4) 由Servlet 容器加载转换后的 Servlet类( class 文件)创建一个该Servlet (JSP页面的转换结果)实例,并执行Servlet的jsplnit()方法。jsplnit()方法 在Servlet的整个生命周期中只会执行一次。
(5)执行jspService()方法来处理客户端的请求。
生成的 .java .class文件在
D:\JavaWeb\class\apache-tomcat-8.5.71\work\Catalina\localhost\chapter07\org\apache\jsp
目录下
在这里插入图片描述

6.2 JSP基本语法

6.2.1 JSP脚本元素

JSP脚本元素主要包含如下三种类型:

  1. JSP Scriptlets
  2. JSP 声明语句
  3. JSP 表达式
    JSP Scriptlets
    JSP Scriptlets是一段代码段。当需要使用Java实现一些复杂操作或控制时,可以使用它。
    JSP Scriptlets格式:
<% java代码(变量、方法、表达式等) %>

JSP 声明语句
JSP的声明语句用于声明变量和方法,它以“<%!”开始,以“%>”结束:

<%!
	定义的变量或方法等
%>

JSP 表达式
对应的位置生成在 _jspService方法内部。
在jsp页面,可以输入一个结果,基本语法:<%=表达式 %>,其实就等同于out.print();

<%@ 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>
	<%!
		int a=1;
		int b=2;
	%>
	<%!
		public String dashuju(){
			String str="dashuju";
			return str;
	}
	%>
	
	<%  out.print(a+b); %>
	<br/>
	<%  response.getWriter().print("huagong"); %>
	<br/>
	<%  out.print(dashuju()); %>
	<br/>
	<br/><br/><br/>
	<%=a+b %>
	<br/>
	<%=dashuju() %>
</body>
</html>

在这里插入图片描述

6.2.2 JSP注释

格式:<%-- 注释信息 --%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	html内容
	<!-- html注释 -->
	
	<%
		//java注释
		System.out.print("java 注释");
	%>
	
	<%--jsp注释 --%>
	
</body>
</html>

6.3 JSP指令

在JSP页面中,经常需要对页面的某些特性进行描述,格式如下:

<%@ page 属性名1="属性值1" 属性名2="属性值2" …… %>

在上述语法中,page 用于声明指令名称,属性用来指定JSP页面的某些特性。
在这里插入图片描述

6.3.2 include指令

在jsp页面通常会需要显示其它页面的信息,所以可以通过这个include指令把其它页面包含过来。
格式:

<%@ include file="被包含文件的url" %>

创建date.jsp页面,include.jsp页面。

  1. 把多个页面的内容,合并输出。
  2. 多个页面对应生成一个java文件,编译后,对应一个class文件。
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	date.jps页面用来输出当前时间:
	<%out.print(new Date().toLocaleString()); %>
</body>
</html>
<%@ 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页面,下面是我包进来的页面:
	<%@ include file="date.jsp" %>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

6.4 JSP隐式对象

6.4.1 隐式对象的概述

在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会非常麻烦。为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在JSP页面中使用。

在这里插入图片描述

6.4.2 out对象

out对象在输出内容到网页上面去,最终是通过reponse缓冲区给输出的。
在这里插入图片描述

<%@ 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>
	<%
		out.print("first line");
	
		response.getWriter().print("second line <br/> 2020080605012 杨骏<br/>");
	%>
</body>
</html>

在这里插入图片描述

6.4.3 pageContext对象

在JSP文件中,使用pageContext对象可以获取JSP的其他8个隐式对象。
在这里插入图片描述
pageContext对象不仅提供了获取隐式对象的方法,还提供了存储数据的功能。pageContext对象存储数据是通过操作属性来实现的。
在这里插入图片描述

<%@ 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>
	<%
	HttpServletRequest req=(HttpServletRequest) pageContext.getRequest();
	//req.setAttribute("dashu", "huagong");
	
	pageContext.setAttribute("dashu11","pageContext",PageContext.PAGE_SCOPE);
	pageContext.setAttribute("dashu22","REQUEST",PageContext.REQUEST_SCOPE);
	pageContext.setAttribute("dashu33","SESSION",PageContext.SESSION_SCOPE);
	pageContext.setAttribute("dashu","APPLICATION",PageContext.APPLICATION_SCOPE);
	%>
	<%=pageContext.findAttribute("dashu") %>
	<hr/>
	<%=(String) req.getAttribute("dashu") %>
	
</body>
</html>

在这里插入图片描述

6.4.4 exception对象

exception 对象它是用来捕获异常信息的。
它用于封装JSP中抛出的异常信息,即page指令中指定了属性

<%@ page isErrorPage=true%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<% int a=3;
		int b=0;
	
	%>
	
	输出:<%=(a/b) %>
	
</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>Insert title here</title>
</head>
<body>
	用来显示错误信息:<br/>
	2020080605012 杨骏
	<%=exception.getMessage() %>
	
</body>
</html>

在这里插入图片描述
2020080605012

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值