JSP概述:
1.1什么是jsp:它的英文全称java server pages ,java服务端 页面,它是创建在servlet规范基础上的动态网页开发技术。html
1.2编写第一个jsp文件: jsp生 成java文件,编译成class文件,存在tomcat服务 器的work目录。
注意:修改jsp的默认编码格式: wind-------->perferee-----> 搜索jsp ---->选中编码进行修改java
1.3 JSP运行原理:
1.经过浏览器首次访问jsp时
2.JSP容器会生成对应的Servlet文件,也就是.java文件
3.JSP容器,会把java文件编译对应的class文件
4.JSP容器,会生成对应的servlet对象
5.经过生成的servlet对象,去处理浏览器发送的请求,响应数据给浏览器。浏览器
JSP基本语法
1.1 JSP脚本元素
在jsp页面书写java的三种形式:
1.能够声明语句和方法
2.能够书写java代码段
3.能够书写表达式tomcat
1.2 JSP注释:
在jsp里面,能够书写htm1,能够书写java,能够书写jsp自身的一些内容。
在jsp里面写注释三种形式:服务器
- html注释: <!-- html注释-->:在任何地方都存在了。
2.java注释:单行,多行,文档注释:它存在jsp页面,也存在java文件 里面,对应生成的html就消失了- jsp注释: <%-- jsp注释-->:只存在jsp页面,在生成对应的java文件时,它就消失了。
3.JSP 指令: page指令、include指令、taglib指令
1.1 page指令
page指令的用途是设置与jsp页面相关的信息,好比说设置jsp页面的编码,jsp页 面的默认语言等
基本语法格式: <@ page属性-"属性值"属性-"属住值"属性-"属性值" %>
好比:
<%@ page language="java" contentType=" text/html; charset-UTF-8" pageEncoding="UTF-8"%>
经常使用属性:
language:默认语言java,也就是只有java-种语言。
pageEncoding:设置jsp的编码格式。_ 般状况下能够省略contentType这个属性。
session属性:值得类型是boolean,若是对应的值是true,在jsp页面可使用session对象,反之就不能使用。
import属性:到包,和在java里面使用同样,若是想使用某个类,前提导入某个类的包名。
。。。。。。session
1.2 include指令:| I 在jsp页面一般会须要显示其它页面的信息,因此能够经过这个include指令把其它页面包含过来。 基本语法: <%@ include file="被包含文件的url" %> 建立两个jsp页面: date. jsp页面,include. jsp页面. 使用jsp的include指令实现的包含,又称为静态包含,静态包含的特色: 1.把多个页面的内容,合并输出,好比把date.jsp 和include.jsp内容合并输出。 2.多个页面对应生成一个java文件,编译后,对应一个class文件。
JSP隐式对象
1.1 什么是隐式对象:在jsp页面里面,jsp提供了一-些对象,不用我们本身建立,能够直接使用的对象。
jsp常见的九大隐式对象:
request: HttpServletRequest, 请求对象,它同时也是域对象,做用范围一次请求
response :HttpServletResponse,响应对象
session: HttpSession , 会话对象,它同时也是域对象,做用范围一次会话
application:ServletContext,上下文对象,它同时也是域对象,做用范围整个项目
config:ServletConfig,配置对象
out: JspWriter ,其实和PrintWriter做用差很少。
page:0bject , 表明当前jsp的页面对象
pageContext:PageContext , jsp容器
exception: Throwable,异常对象,用来捕获异常信息。
只有当前jsp页面有isErrorPage="true"这个属性时,才能使用exception对象。app
1.2 out对象
out对象在输出内容到网页上面去,最终是经过reponse缓冲区给输出。jsp
1.3 pageContext对象
第一个功能:获取其它八个隐式对象ide
1.获取请求对象: getRequest();
2.获取响应对象: getResponse();ui
获取输出对象: getout();
第二个功能:操做其它三个域对象: request. session. application.
pageContext也是一个域对象: 做用范围在当前jsp页面. .
操做其它三个域对象的方法:
1.存值: setAttribute(String key,0bject obj,int scope);
APPLICATION SCOPE : 对应的是application
REQUEST SCOPE:对应的是request
SESSION SCOPE: 对应的是session
PAGE SCOPE: 对应的是本身pageContext
2.取值: getAttr ibute(String key,int scope);
结论:在pageContext域对 象使用findAttribute方法获取值,进行了全域查找, 查找的范围: pageContext --->request----->session----->applicat ion 首先找域做用范围小的对象,若是有值,获取到,若是域做用范围小的对象,不存在对应的值,就继续向下寻找。
1.4 exception对象I
它是用来捕获异常信息的。
会用到两个属性:
errorPage:属性对应的值,处理异常信息的页面,就是说在当前页面发生了异常,跳转处处理异常信息的页面
好比:
<%@ page language=" java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC " -//M3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/htm14/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) %>
isErrorPage: 属性对应的值是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/htm14/1oose.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>
5.JSP动做元素
1.1 <jsp: include>动做元素:动态包含
动态包含:把其它资源页面的内容,合并到当前要包含的页面,最后- -块输出。
基本语法格式: <jsp: include page="被包含页面的url" flush="true或者 false" ><jsp: include>
动态包含特色:多个页面的内容合并输出,多个jsp页面生成多个java文件,编译成多个class文件
静态包含特色:多个页面的内容合并输出,多个jsp页面最终生成一个java文件, 编译一个class文件。
1.2 <jsp: forward>动做元素:请求转发。 它的做用实现请求转发,效果等同于RequestDispathcer对象的forward方法。 基本语法格式: <jsp: forward page="转发页面的ur1地址"></jsp: forward> 转发页面的ur1地址:不须要携带项目名称,由于转发动做是服务器内部行为。
6.阶段案例:传智书城JSP页面1.实现首页面注意事项:1.在html网页不能书写与jsp相关的内容。2.${pageContext . request. contextPath}:做用就是获取项目名称的路径,好比: /chapter06设计首页面步骤:1.建立一个index. jsp页面,在这里实现跳转到首页面的效果<jsp: forward page=" ”></jsp:forward>2.修改client目录下面的全部html文件,修改为jsp,为了 就是jsp知识点。3.把client目录下面的首页面分离出来几个jsp文件,分离的jsp文件比较通用性,在其它页面也能用到,分离的目的:提升代码的复用性。分离index. jsp页面:第一部分:导航菜单,对应head.jsp第二部分:搜索栏,对应menu_ search.jsp第三部分:底部信息,对应foot.jsp在index. jsp页面引入分离的文件: <%@ include file="" %>