Javaweb 7

六、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”%>

Insert title here HelloWorld!!! <%response.getWriter().print("大数据2005"); %> 修改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脚本元素主要包含如下三种类型:

JSP Scriptlets
JSP 声明语句
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”%>

Insert title here <%! 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() %>

6.2.2 JSP注释

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

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8” session=“true”%>

Insert title here html内容
<%
	//java注释
	System.out.print("java 注释");
%>

<%--jsp注释 --%>

6.3 JSP指令

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

<%@ page 属性名1=“属性值1” 属性名2=“属性值2” …… %>
在上述语法中,page 用于声明指令名称,属性用来指定JSP页面的某些特性。

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

<%@ include file=“被包含文件的url” %>
创建date.jsp页面,include.jsp页面。

把多个页面的内容,合并输出。
多个页面对应生成一个java文件,编译后,对应一个class文件。
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ page import=“java.util.Date” %>

Insert title here date.jps页面用来输出当前时间: <%out.print(new Date().toLocaleString()); %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here 我是include页面,下面是我包进来的页面: <%@ include file="date.jsp" %>

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”%>

Insert title here <% out.print("first line");
	response.getWriter().print("second line <br/> 2020080605012 杨骏<br/>");
%>

6.4.3 pageContext对象

在JSP文件中,使用pageContext对象可以获取JSP的其他8个隐式对象。

pageContext对象不仅提供了获取隐式对象的方法,还提供了存储数据的功能。pageContext对象存储数据是通过操作属性来实现的。

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here <% 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") %>

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”%>

Insert title here <% int a=3; int b=0; %> 输出:<%=(a/b) %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%> Insert title here 用来显示错误信息:
2020080605030 文辉 <%=exception.getMessage() %>

2020080605030

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值