Javaweb(JSP技术)
东方欲晓莫道君行文章目录
学习目标
了解jsp 概念和特点 熟悉jsp 的运行原理 掌握jsp 的基本语法 熟悉jsp 指令和隐式对象的使用 掌握jsp 动作元素的使用提示:下面案例可供参考
一、JSP概述
1.1什么是jsp
JSP全名是Java Server Pages,它是建立在Servlet 规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。为了与传统HTIML有所区别,JSP文件的扩展名为:jsp。
JSP技术所开发的Web应用程序是基于Java的,它可以用一种简捷而快速 的方法从Java程序生成Web页面,其使用上具有如下几点特征。
跨平台:由于JSP是基于Java语言的,它可以使用Java API,所以它也是跨平台的,可以应用于不同的系统中,如Windows、Linux等。 当从一个平台移植到另一个平台时,JSP和JavaBean的代码并不需要重新编译,这是因为Java的字节码是与平台无关的,这也应验了Java语言“一次编译,到处运行”的特点。
业务代码相分离:在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的
开发分离开。开发人员使用HTML来设计界面,使用JSP标签和脚本来动态生成页面上的内容。在服务器端,JSP引擎(或容器,本书中指Tomcat )负责解析JSP标签和脚本程序,生成所请求的内容,并将执行结果以HTML页面的形式返回到浏览器。
组件重用: JSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean类封装业务处理代码或者作为一一个数据存储模型,在JSP页面中,甚至在整个项目中,都可以重复。
1.2jsp运行原理
JSP的运行原理WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat 中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面。
二、JSP基本语法
在JSP文件中可以去套很多内容,例如,JSP的脚本元素和注释等,这些内容的编写都需要遵循一定的语法规范。接下来,本节将针对这些语法进行详细的讲解。
2.1JSP 脚本元素
JSP脚本元素是指嵌套在<%和%>之中的一条或多条Java程序代码。通过JSP脚本元素可以将Java代码嵌入HTML页面中,所有可执行的Java代码,都可以通过JSP脚本来执行。JSP脚本元素主要包含如下3种类型。
2.2JSP声明语句
JSP的声明语句用于声明变量和方法,它以“<%“开始,以“%>” 结束,其语法格式如
<%!
定义的变量或方法等
%>
在上述语法格式中,被声明的Java代码将被编译到Serlet的jsService(方法之外,即在JSP声明语句中定义的都是成员方法、成员变量、静态方法、静态变量、静态代码块等。在JSP
声明语句中声明的方法在整个JSP页面内有效,但是在方法内定义的变量只在该方法内有效。当声明的方法被调用时,会为方法内定的变量分配内存,而调用结束后立刻会释放所占的内存。
在一个JSP页面中可以有多个JSP声明语句,单个声明中的Java语句可以是不完整的,但
是多个声明组合后的结果必须是完整的Java语句。接下来,通过一个案例来演示JSP Scriptlets
和声明语句的使用。
2.3JSP注释
基本语法格式:
<%-- 注释信息 --%>
2.4 JSP指令
include 指令
在实际开发时,有时需要在JSP页面静态包含-一个文件, 例如HTML文件、文本文件等,这时,可以通过include指令来实现。include 指令的具体语法格式如下所示。
<%@include file=“被包含的文件地址”%>中日
include指令只有一个file 属性,该属性用来指定插入到JSP页面目标位置的文件资源。需
要注意的是,插入文件的路径一般不以 “/” 开头,而是使用相对路径。
为了使读者更好地理解include指令的使用,接下来,通过一个案例来学习include指令的具体用法。
在chapter06项目的WebContent目录下创建两个JSP页面date.jsp和include.jsp,在
include.jsp文件中使用include指令将date.jsp文件包含其中,具体如下所示。
<%@ 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.jsp页面用来输出当前时间
<%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页面,下面是我包含进来的页面:2020080605020
<%@ include file="date.jsp" %>
</body>
</html>
三、JSP隐式对象
3.1out对象
在JSP页面中,经常需要向客户端发送文本内容,这时,可以使用out对象来实现。out对象是javax servlet.jsp.JspWriter类的实例对象,它的作用与ServletResponse.getWriter()方法返回的PrintWriter对象非常相似,都是用来向客户端发送文本形式的实体内容。不同的足,out对象的类型为JSpWriter, 它相当于一种带缓存 功能的PintWriteror接下来,通过一张图来描述JSP页面的out对象与Servlet引擎提供的缓冲区之间的工作关系
项目的WebContent目录下创建一个 名称为out的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>
<%
out.print("first line <br/>");
response.getWriter().print("seconde line <br/>");
%>
</body>
</html>
3.2pageContext 对象
在JSP页面中,使用pageContext对象可以获取JSP的其他8个隐式对象。pageContext对象是javax. servlet.jsp PageContext类的实例对象,它代表当前JSP页面的运行环境,并提供了一系列用 于获取其他隐式对象的方法。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();
pageContext.setAttribute("dashuju11", "pagecontext",PageContext.PAGE_SCOPE);
pageContext.setAttribute("dashuju22","REQUEST",pageContext.REQUEST_SCOPE);
pageContext.setAttribute("dashuju33","SESSION",pageContext.SESSION_SCOPE);
pageContext.setAttribute("dashuju","APPLICATION",PageContext.APPLICATION_SCOPE);
%>
<%=pageContext.findAttribute("dashuju") %>
<hr/>
<%=(String)req.getAttribute("dashuju") %>
</body>
</html>
3.3exception 对象
在JSP页面中,经常需要处理一 些异常信息,这时,可以通过exception 对象来实现。exception对象是java.lang .Exception类的实例对象,它用于封装JSP中抛出的异常信息。需要注意的是,exception对象只有在错误处理页面才可以使用,即page指令中指定了属性<%@page isErrorPage=“true”%>的页面。接下来,通过一个案例来学习exception 对象的使用。
<%@ 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=3;
int b=0;
%>
输出:<%=(a/b) %>
</body>
</html>