Java Web day7

目录

  • 六、JSP技术
    • 6.1 JSP概述
      • 6.1.1 什么是JSP
      • 6.1.2 编写第一个 JSP文件
      • 6.1.3 JSP运行原理
    • 6.2 JSP基本语法
      • 6.2.1 JSP脚本元素
      • 6.2.2 JSP注释
    • 6.3 JSP指令
      • 6.3.2 include指令
    • 6.4 JSP隐式对象
      • 6.4.1 隐式对象的概述
      • 6.4.2 out对象
      • 6.4.3 pageContext对象
      • 6.4.4 exception对象

六、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 
2020080605012 杨骏
"
);%> </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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部