回顾:Servlect常用的对象,过滤器,监听器。
ServletConfig:对象获得静态数据 ServletContext对象:获取共享静态数据,获取共享动态数据,获取共享文件数据. HttpServletResponse 对象HttpServlet调用HttpResponse的有关方法,生成响应数据 HttpServletRequest对象:HttpServlet调用HttpResponse的有关方法,生成响应数据,用于服务器上接收浏览器发送过来的数据信息 cookie对象,对象Session对象。程序把每个用户的数据以cookie/Session的形式写给用户各自的浏览器。 Filter:过滤器,阻止非法网站的访问。 Listener: 实现了特定接口的类为监听器,用来监听另一个Java类的方法调用或者属性改变;** 当被监听的对象发生了方法调用或者属性改变后,监听器的对应方法就会立即执行。
| ServletConfig:对象获得静态数据 |
| ServletContext对象:获取共享静态数据,获取共享动态数据,获取共享文件数据. |
| HttpServletResponse 对象HttpServlet调用HttpResponse的有关方法,生成响应数据 |
| HttpServletRequest对象:HttpServlet调用HttpResponse的有关方法,生成响应数据,用于服务器上接收浏览器发送过来的数据信息 |
| cookie对象,对象Session对象。程序把每个用户的数据以cookie/Session的形式写给用户各自的浏览器。 |
| Filter:过滤器,阻止非法网站的访问。 |
| Listener: 实现了特定接口的类为监听器,用来监听另一个Java类的方法调用或者属性改变;** 当被监听的对象发生了方法调用或者属性改变后,监听器的对应方法就会立即执行。 |
JSP内置对象
到服务器中的work文件中去看看
打开文件中的Out_jsp_java
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.Calendar;
public final class Out_jsp extends org.apache.jasper.runtime.HttpJspbase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceimports {
private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory();
private static java.util.Map _jspx_dependants;
private static final java.util.Set _jspx_imports_packages;
private static final java.util.Set _jspx_imports_classes;
static {
_jspx_imports_packages = new java.util.HashSet<>();
_jspx_imports_packages.add("javax.servlet");
_jspx_imports_packages.add("javax.servlet.http");
_jspx_imports_packages.add("javax.servlet.jsp");
_jspx_imports_classes = new java.util.HashSet<>();
_jspx_imports_classes.add("java.util.Calendar");
}
private volatile javax.el.expressionFactory _el_expressionfactory;
private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
public java.util.Map getDependants() {
return _jspx_dependants;
}
public java.util.Set getPackageimports() {
return _jspx_imports_packages;
}
public java.util.Set getClassimports() {
return _jspx_imports_classes;
}
public javax.el.expressionFactory _jsp_getexpressionFactory() {
if (_el_expressionfactory == null) {
synchronized (this) {
if (_el_expressionfactory == null) {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getexpressionFactory();
}
}
}
return _el_expressionfactory;
}
public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
if (_jsp_instancemanager == null) {
synchronized (this) {
if (_jsp_instancemanager == null) {
_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
}
}
}
return _jsp_instancemanager;
}
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
final java.lang.String _jspx_method = request.getMethod();
if ("OPTIONS".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
return;
}
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
}
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType("text/html; charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("rn");
out.write("rn");
out.write("rn");
out.write("rn");
out.write("rn");
out.write("rn");
out.write("Out对象 rn");
out.write("rn");
out.write("rn");
out.write('r');
out.write('n');
//创建日历类
Calendar calendar =Calendar.getInstance();
int AM_PM=calendar.get(calendar.AM_PM);
if(AM_PM==calendar.AM){
out.write("上午时间");
}else if(AM_PM==calendar.PM){
out.write("下午时间");
}
out.write("rn");
out.write("rn");
out.write("rn");
out.write("四大作用域(有四个对象)有四个对象共享数据rn");
out.write("
rn");
out.write("seesion 浏览器不切rn");
out.write("
rn");
out.write("application 服务器不关闭rn");
out.write("
rn");
out.write("request:请求转发跳转页面的情况,只能两个页面共享数据rn");
out.write("
rn");
out.write("pageContext:该对象中只能页面自己用rn");
out.write("
rn");
out.write("才能用setAttribute的方法rn");
out.write("
rn");
out.write("将四作用域排序rn");
out.write("
rn");
out.write("pageContext request seesion application rn");
out.write("rn");
out.write("rn");
out.write("");
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) {
out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}
从上面代码中我们可以找到这些对象
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
什么是内置对象,在jsp文件运行后,会翻译成一个Servlect类,
在这个类中可以直接调用的对象
九大内置对象的核心表格
out JspWriter 将文本信息输出浏览器 request HttpServletRequest 获得浏览器发送来的数据 respone HttpServletRequest 回复浏览器请求 seesion HttpSeesion 在不换浏览器放信息 exception Throwable 异常报错 page Servlect(this) jsp翻译出来类的对象 config ServlectConfig 静态数据 application ServlectContext 共享数据 pageContext PageContextjsp 管理者引出对象
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
四大作用域(有四个对象)有四个对象共享数据
seesion 浏览器不切
application 服务器不关闭
request:请求转发跳转页面的情况,只能两个页面共享数据
pageContext:该对象中只能页面自己用
才能用setAttribute的方法
将四作用域排序
pageContext
这些对象应用的方式和Servlect相似
回顾jsp一些重要标签和指令
<%! %>:用于在jsp文件中定义全局变量和方法
<%= %>:用于在jsp文件中将java中的数据结果显示在html文本中
<% %>:用于在jsp文件中执行多行代码,包括if,while,for,创建对象等等
<%-- --%>:用于在jsp文件中的注释
<%@ %>:用于在jsp文件中操作指令代码
Jsp常用的三大指令:page,include,taglib
page指令的常用属性:
import:导入所需要的包
language:当前jsp页面里面可以嵌套的语言
contenType:设置响应流的编码,及通知浏览器用什么编码打开
pageEncoding:设置页面的编码
extends:声明当前jsp的页面继承于哪个类
session:设置jsp页面是否可以使用session内置对象
buffer:设置jsp页面的流的缓冲区大小
autoFlush:是否自动刷新
isELIgnored:是否忽略el表达式
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
isErrorPage:当前jsp页面是否是一个错误页面
运行页面结果
代码区
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
欢迎来到a.jsp文件
<%
String a=(String)request.getAttribute("a");
out.write("通过请求转发获得的数据为"+a);
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- application, ServlectContext 对象八ServlectContext 共享数据 整个项目中只会有一个对象
tomcat 服务器 一关闭 数据释放 数据的共享更服务器相关 --%>
<%
//获得静态数据
String info =application.getInitParameter("a");
out.write(info);
//动态数据
out.write("
");
application.setAttribute("c", "我是动态数据");
out.write((String)application.getAttribute("c"));
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- config 第七个对象 类名ServlectConfig 增加静态数据 --%>
<%
String name = config.getServletName();
out.write(name);
%>
<%@ page language="java" errorPage="error.jsp" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
*{
font-size: 29px;
color: red;
}
<%-- <%int a=100/0; %> --%>
<% int [] arr =new int [3];
System.out.println(arr[3]);
%>
<%-- <%
Integer i =new Integer ("abd");
%> --%>
<%@ page language="java" isErrorPage="true" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
除数不能为0:用户
<%= exception.getMessage() %>
<%=exception.toString() %>
<%=exception.hashCode()%>
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Out对象
<%-- --%>
<%
//创建日历类
Calendar calendar =Calendar.getInstance();
int AM_PM=calendar.get(calendar.AM_PM);
if(AM_PM==calendar.AM){
out.write("上午时间");
}else if(AM_PM==calendar.PM){
out.write("下午时间");
}
%>
四大作用域(有四个对象)有四个对象共享数据
seesion 浏览器不切
application 服务器不关闭
request:请求转发跳转页面的情况,只能两个页面共享数据
pageContext:该对象中只能页面自己用
才能用setAttribute的方法
将四作用域排序
pageContext request seesion application
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%--对象 page 对象 六 page, Servlect(this) jsp翻译出来类的对象 --%>
<%
out.write((page.equals(this)?"page是当前对象":"page不是当前对象"));
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Request对象
<%-- jsp九大对象 request 类名HttpSevlectRequest --%>
<%
String name=request.getParameter("name");
out.write("我收到浏览器发送的数据为"+name);
out.write("http://localhost:8080/Day_13/Request.jsp?name=xao");
//携带数据跳转页面
request.setAttribute("a", "apple");
request.getRequestDispatcher("a.jsp").forward(request, response);
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- jsp九大内置对象 Respone对象三类名 HttpServlectRespone--%>
Respone.jsp
<%
response.sendRedirect("Out.jsp");
out.write("Hellow JSP");
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%---- 对象四Session HttpSession Session放的数据为同已过浏览器服务器 所有Servlect 和 jsp
都能共享Session里数据 --%>
<%
session.setAttribute("b", "我是session对象的定义b");
session.setAttribute("c", "我是session对象的定义c");
out.write((String)session.getAttribute("b"));
out.write((String)session.getAttribute("c"));
%>
| final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; |
四大作用域(有四个对象)有四个对象共享数据
seesion 浏览器不切
application 服务器不关闭
request:请求转发跳转页面的情况,只能两个页面共享数据
pageContext:该对象中只能页面自己用
才能用setAttribute的方法
将四作用域排序
pageContext
这些对象应用的方式和Servlect相似
回顾jsp一些重要标签和指令
<%! %>:用于在jsp文件中定义全局变量和方法
<%= %>:用于在jsp文件中将java中的数据结果显示在html文本中
<% %>:用于在jsp文件中执行多行代码,包括if,while,for,创建对象等等
<%-- --%>:用于在jsp文件中的注释
<%@ %>:用于在jsp文件中操作指令代码
Jsp常用的三大指令:page,include,taglib
page指令的常用属性:
import:导入所需要的包
language:当前jsp页面里面可以嵌套的语言
contenType:设置响应流的编码,及通知浏览器用什么编码打开
pageEncoding:设置页面的编码
extends:声明当前jsp的页面继承于哪个类
session:设置jsp页面是否可以使用session内置对象
buffer:设置jsp页面的流的缓冲区大小
autoFlush:是否自动刷新
isELIgnored:是否忽略el表达式
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
isErrorPage:当前jsp页面是否是一个错误页面
运行页面结果
代码区
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
欢迎来到a.jsp文件
<%
String a=(String)request.getAttribute("a");
out.write("通过请求转发获得的数据为"+a);
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- application, ServlectContext 对象八ServlectContext 共享数据 整个项目中只会有一个对象
tomcat 服务器 一关闭 数据释放 数据的共享更服务器相关 --%>
<%
//获得静态数据
String info =application.getInitParameter("a");
out.write(info);
//动态数据
out.write("
");
application.setAttribute("c", "我是动态数据");
out.write((String)application.getAttribute("c"));
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- config 第七个对象 类名ServlectConfig 增加静态数据 --%>
<%
String name = config.getServletName();
out.write(name);
%>
<%@ page language="java" errorPage="error.jsp" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
*{
font-size: 29px;
color: red;
}
<%-- <%int a=100/0; %> --%>
<% int [] arr =new int [3];
System.out.println(arr[3]);
%>
<%-- <%
Integer i =new Integer ("abd");
%> --%>
<%@ page language="java" isErrorPage="true" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
除数不能为0:用户
<%= exception.getMessage() %>
<%=exception.toString() %>
<%=exception.hashCode()%>
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Out对象
<%-- --%>
<%
//创建日历类
Calendar calendar =Calendar.getInstance();
int AM_PM=calendar.get(calendar.AM_PM);
if(AM_PM==calendar.AM){
out.write("上午时间");
}else if(AM_PM==calendar.PM){
out.write("下午时间");
}
%>
四大作用域(有四个对象)有四个对象共享数据
seesion 浏览器不切
application 服务器不关闭
request:请求转发跳转页面的情况,只能两个页面共享数据
pageContext:该对象中只能页面自己用
才能用setAttribute的方法
将四作用域排序
pageContext request seesion application
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%--对象 page 对象 六 page, Servlect(this) jsp翻译出来类的对象 --%>
<%
out.write((page.equals(this)?"page是当前对象":"page不是当前对象"));
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Request对象
<%-- jsp九大对象 request 类名HttpSevlectRequest --%>
<%
String name=request.getParameter("name");
out.write("我收到浏览器发送的数据为"+name);
out.write("http://localhost:8080/Day_13/Request.jsp?name=xao");
//携带数据跳转页面
request.setAttribute("a", "apple");
request.getRequestDispatcher("a.jsp").forward(request, response);
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- jsp九大内置对象 Respone对象三类名 HttpServlectRespone--%>
Respone.jsp
<%
response.sendRedirect("Out.jsp");
out.write("Hellow JSP");
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%---- 对象四Session HttpSession Session放的数据为同已过浏览器服务器 所有Servlect 和 jsp
都能共享Session里数据 --%>
<%
session.setAttribute("b", "我是session对象的定义b");
session.setAttribute("c", "我是session对象的定义c");
out.write((String)session.getAttribute("b"));
out.write((String)session.getAttribute("c"));
%>
运行页面结果<%! %>:用于在jsp文件中定义全局变量和方法
Jsp常用的三大指令:page,include,taglib page指令的常用属性:
<%= %>:用于在jsp文件中将java中的数据结果显示在html文本中
<% %>:用于在jsp文件中执行多行代码,包括if,while,for,创建对象等等
<%-- --%>:用于在jsp文件中的注释
<%@ %>:用于在jsp文件中操作指令代码
import:导入所需要的包
language:当前jsp页面里面可以嵌套的语言
contenType:设置响应流的编码,及通知浏览器用什么编码打开
pageEncoding:设置页面的编码
extends:声明当前jsp的页面继承于哪个类
session:设置jsp页面是否可以使用session内置对象
buffer:设置jsp页面的流的缓冲区大小
autoFlush:是否自动刷新
isELIgnored:是否忽略el表达式
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
isErrorPage:当前jsp页面是否是一个错误页面
代码区
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
欢迎来到a.jsp文件
<%
String a=(String)request.getAttribute("a");
out.write("通过请求转发获得的数据为"+a);
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- application, ServlectContext 对象八ServlectContext 共享数据 整个项目中只会有一个对象
tomcat 服务器 一关闭 数据释放 数据的共享更服务器相关 --%>
<%
//获得静态数据
String info =application.getInitParameter("a");
out.write(info);
//动态数据
out.write("
");
application.setAttribute("c", "我是动态数据");
out.write((String)application.getAttribute("c"));
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- config 第七个对象 类名ServlectConfig 增加静态数据 --%>
<%
String name = config.getServletName();
out.write(name);
%>
<%@ page language="java" errorPage="error.jsp" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
*{
font-size: 29px;
color: red;
}
<%-- <%int a=100/0; %> --%>
<% int [] arr =new int [3];
System.out.println(arr[3]);
%>
<%-- <%
Integer i =new Integer ("abd");
%> --%>
<%@ page language="java" isErrorPage="true" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
除数不能为0:用户
<%= exception.getMessage() %>
<%=exception.toString() %>
<%=exception.hashCode()%>
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Out对象
<%-- --%>
<%
//创建日历类
Calendar calendar =Calendar.getInstance();
int AM_PM=calendar.get(calendar.AM_PM);
if(AM_PM==calendar.AM){
out.write("上午时间");
}else if(AM_PM==calendar.PM){
out.write("下午时间");
}
%>
四大作用域(有四个对象)有四个对象共享数据
seesion 浏览器不切
application 服务器不关闭
request:请求转发跳转页面的情况,只能两个页面共享数据
pageContext:该对象中只能页面自己用
才能用setAttribute的方法
将四作用域排序
pageContext request seesion application
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%--对象 page 对象 六 page, Servlect(this) jsp翻译出来类的对象 --%>
<%
out.write((page.equals(this)?"page是当前对象":"page不是当前对象"));
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Request对象
<%-- jsp九大对象 request 类名HttpSevlectRequest --%>
<%
String name=request.getParameter("name");
out.write("我收到浏览器发送的数据为"+name);
out.write("http://localhost:8080/Day_13/Request.jsp?name=xao");
//携带数据跳转页面
request.setAttribute("a", "apple");
request.getRequestDispatcher("a.jsp").forward(request, response);
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%-- jsp九大内置对象 Respone对象三类名 HttpServlectRespone--%>
Respone.jsp
<%
response.sendRedirect("Out.jsp");
out.write("Hellow JSP");
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%---- 对象四Session HttpSession Session放的数据为同已过浏览器服务器 所有Servlect 和 jsp
都能共享Session里数据 --%>
<%
session.setAttribute("b", "我是session对象的定义b");
session.setAttribute("c", "我是session对象的定义c");
out.write((String)session.getAttribute("b"));
out.write((String)session.getAttribute("c"));
%>



