JPS 技术:
一、JSP概述
什么是jsp:
它的英文全称 java server pages ,java服务端页面,它是建立在servlet规范基础上的动态网页开发技术。
java 服务端 页面: 在jsp上可以写java代码,也可以写html标记,它运行在服务器端。
jsp = java + html + jsp自身的一些东西。
为什么会产生jsp技术:
因为在早期没有jsp时,需要servlet向页面写数据,比较麻烦,所以就产生了jsp技术,
jsp最大的特点:可以非常简单的书写页面html。
jsp其实它的本质是servlet: 可以看到jsp 继承了 HttpJspBase 继承 HttpServlet。
二、JSP基本语法
Jsp声明
语句用于声明变量和方法它以“<%!”开始,以“%>”结束,语法如下:
<%!
定义的变量或方法
%>
在chapter6项目的WebContent目录下创建一个名称为example01.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>
<%
int a=1;
int b=3;
%>
<%!
public String daying(){
String str="dashuju2003";
return str;
}
%>
<% out.println("biaoda:" +a+b); %>
<br/>
<br/><br/>
<% out.println(daying()); %>
<br/><br/>
<%="表达式:"+a+b%>
<%="表达式:"+daying()%>
</body>
</html>
运行结果如下
3.JSP 指令
page指令、include指令、taglib指令(现在不讲)
page指令
page指令的用途是设置与jsp页面相关的信息,比如说设置jsp页面的编码,jsp页面的默认语言等
基本语法格式:<%@ page 属性=“属性值” 属性=“属性值” 属性=“属性值” %>
比如:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
include指令:
在jsp页面通常会需要显示其它页面的信息,所以可以通过这个include指令把其它页面包含过来。
基本语法:<%@ include file=“被包含文件的url” %>
创建两个jsp页面: 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>
运行之后
include.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页面,下面是我包含进来的页面:
<%@ include file="date.jsp" %>
</body>
</html>
三、JSP隐式对象
out对象
在JSP页面中,经常需要向客户端发送文本内容,这时,可以使用out对象来实现。out对象是javax servlet.jsp.JspWriter类的实例对象,它的作用与ServletResponse.getWriter()方法返回的PrintWriter对象非常相似,都是用来向客户端发送文本形式的实体内容。不同的足,out对象的类型为JSpWriter, 它相当于一种带缓存 功能的PintWriteror接下来,通过一张图来描述JSP页面的out对象与Servlet引擎提供的缓冲区之间的工作关系
在chapter06项目的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>
运行效果
pageContext 对象
在JSP页面中,使用pageContext对象可以获取JSP的其他8个隐式对象。pageContext对象是javax. servlet.jsp PageContext类的实例对象,它代表当前JSP页面的运行环境,并提供了一系列用 于获取其他隐式对象的方法。pageContext 对象获取隐式对象的方法
结论:在pageContext域对象使用findAttribute方法获取值,进行了全域查找,
查找的范围:pageContext—>request----->session----->application
首先找域作用范围小的对象,如果有值获取到,停止向下查找,如果不存在对应的值,就继续向下寻找。
编写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>
exception 对象
它是用来捕获异常信息的。
使用它通常会用到两个属性:
errorPage:属性对应的值,处理异常信息的页面,就是说在当前页面发生了异常,跳转到处理异常信息的页面
比如:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="error.jsp"%>
<!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>Insert title here</title>
</head>
<body>
<%
int a=3;
int b=0;
%>
输出:<%=(a/b) %>
sErrorPage: 属性对应的值是true或者false,如果为true,在当前页面可以使用exception对象
比如:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!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>Insert title here</title>
</head>
<body>
输出异常信息: <%=exception.getMessage() %>
</body>
</html>