ServletContext接口,表示的应用,tomcat启动时创建一个对象,tomcat关闭销毁对象,在整个web生命周期中,只有一个对象,表示的就是当前应用。
-------------------------------------------------------------------------------------------------------------
如何获取该对象:
(1)若在servlet中:
ServletContext ctx = super.getServletContext();
GenericServlet 实现了Servlet和servletConfig接口,而getServletContext在ServletConfig接口中。
(2)通过请求对象获取
ServletContext ctx2 = req.getServletContext();
ServletContext ctx3 = req.getSession().getServletContext();
常用方法:
(1)String getContextPath():获取当前应用的上下文路径
(2)String getRealPath(String Path)获取某个资源的绝对路径
(3)全局初始化参数
在web.xml设计全局初始化参数:
< context-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</context-param>
获取全局的初始化参数,就再也不能使用SrevletConfig对象.getInitParamter来获取
只能使用ServletContext对象的.getInitParamter();
实现动态网页:
Servlet : java代码 (主) + html片段 (辅) ----->动态网页
Jsp: java代码(辅) + html页面(主) ------->动态网页
---------------------------------------------------------------------------------------------------
Servlet
(1)接收请求参数,封装对象
(2)调用业务方法处理请求
(3)控制界面跳转----》jsp/html
jsp:
(1)界面输出
Tomcat根/config/web.xml文件
所有以*.jsp或以*.jspx结尾的资源都交给jspServlet来处理
该类负责把jsp翻译为servlet
jsp的本质就是servlet
------------------------------------------------------------------------------------
原理:把其中的代码,原封不动的翻译到servlet类中
jsp指令:
用来设置jsp配置信息
特点;
1.不会向客户端输出
2.指令在jsp整个文件范围内有效
3.为翻译阶段提供全局信息
---------------------------------------------------------------
<%@ 指令名称 属性 = 属性值 属性 = 属性值 %>
1.page指令: 设置当前jsp配置信息
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
language="java" 在jsp中使用的脚步语言是java
contentType="text/html; charset=UTF-8" 用来设置当前jsp的mime类型和编码
等价于: response.setContentType("text/html; charset=UTF-8");
pageEncoding="UTF-8" 设置jsp编码
等价于 : response.setCharacterEncoding("UTF-8");
2.include指令:jsp包含其他文件
<% @ include="page" %>
9大jsp内置对象:在jsp中预先定义好的
内置对象 数据类型 描述
pageContext PageContext 当前jsp作用域对象
request HttpServletRequest 请求对象
session HTTPSession 回话对象
application ServletContext 当前应用对象
response HttpServletReaponse 响应对象
page Object 当前jsp/servlet对象
config ServletConfig 当前jsp配置对象
out JSPWrite 输出流对象
exception Throwable 异常对象,必须设置当前jsp,isErrorPage=”true“
jsp中四大作用域对象
域对象 数据类型 描述
pageContext PageContext 当前jsp作用域对象
request HttpServletRequest 当前请求对象
session HTTPSession 当前回话对象
application ServletContext 当前应用对象
jsp动作元素:
jsp动作代码可以取代jsp中的java代码
3.raglib指令:引入标签库
jsp静态包含和动态包含的区别
静态包含:
<%@ include file="文件" %>
动态包含:
<jsp: include page=""></jsp:inclue>
--------------------------------------------------
从结果上,二者是一样,实质的区别(包含时机不同)
静态包含:在被翻译为servlet时,合并在一起
动态包含:在翻译阶段各自翻译成servlet文件,也分别编译为各自的字节码文件,
在运行时期才动态合并在一起
----------------------------------------------------------------------------------------------------------
在开发中,如何选择
一般的,若包含静态页面,使用静态包含
若包含动态页面,使用动态包含
一般的,我们不会单独访问被包含的文件,所以被包含的jsp,习惯使用.jspf作为拓展名
被包含文件:xx.jspf
总结:
(1)forward和redirect的区别:
请求转发:地址栏不会变
url重定向: 地址栏会变
(2)什么是jsp:
实质是servlet
(3)jsp的三大指令:
page,include,raglib
(4)jsp九大内置对象
(5)jsp 四大作用域
(6) 动态包含和静态包含的区别
--------------------------------------------------------------------------------------------------------