JavaEE API阅读
目的是为了应对学校考试,主要关注的是类的继承关系、抛出错误的类型、包名、包结构等等知识。此帖用于记录。
PageContext抽象类
包名及继承关系
继承自JspContext
类。PageContext 实例提供对与某个 JSP 页⾯关联的所有名称空间的访问,隐式对象是⾃动添加到 pageContext 的。
域
可以看到基本都是隐含对象的成员。
方法
getter
包括page、request、response、servletConfig、ServletContext
,不常见的是errorData、Exception
ServletContext 接口
ServletContext
对象包含在ServletConfig
对象中,该对象由Web服务器在初始化servlet
时提供给servlet
。
要注意的方法
虽然名字叫context,但是没有getContextPath这个方法。
是⼀个Servlet的环境对象,⽤来创建⼀个Servlet的环境信息。 它定义的⽅法是为了能让servlet 能和创建它的 servlet 容器建⽴沟通,⽐如派发⼀个请求、写⼊⼀个⽇志⽂件 等。 每个web 应⽤都只能有⼀个 Context 对象(web 应⽤程序是⼀个 servlet 的集合)。 ServletContext类⾥⾯的⽅法主要有这么⼏⼤类:
- 对Filter的操作
- 对Listener的操作
- 对Servlet的操作
- 对Attribute的操作
- 对Context的操作
- 对InitParameter的操作
- 对log的操作
- 对Path的操作
ServletConfig接口
方法
要注意ServletContext getServletContext()
方法,用于返回当前执行的 Servlet 所在的 ServletContext
的引用。ServletContext
提供了与 Servlet 相关的环境信息和上下文,允许 Servlet 访问应用程序的参数、资源和其他重要数据。
Servlet接口
方法
servlet
中的service()
函数可以抛出两个excption:第一个 Servlet Exception 当 servlet 出现异常时;由于这个服务可能会涉及到输⼊输出,所以IOException是必然会有的,⽤来处理输⼊输出时可能遇到的问题。
除了和生命周期有关的三个方法(init、service、destroy
)之外,还有两个getter
,分别用于获取ServletConfig
和ServletInfo
。
WebServlet注解
常用的Annotation还包括@WebListener、@WebFilter、@WebInitParam
等等。
在Spring框架中还有注解:@Controller、@RequestMapping
等等
比如
java
@Controller
public class NumberGuessController {
@RequestMapping(path = { "/guess", "/" })
//某方法..................
}
注解可选属性
其实日常使用只会用到urlPatterns
,是String[]
类型的
java
//@WebServlet("/你项目的Serlvet Mapping")
@WebServlet("/hello")
当然也可以是一组url,
java
@WebServlet(urlPatterns = {"/hello", "/greet"})
包含其他元素的写法是这样的:
java
@WebServlet(
name=...
urlPatterns=......
value = "/config",
initParams = {
@WebInitParam(name = "param1", value = "value1"),
@WebInitParam(name = "param2", value = "value2")
}
)
HttpServlet抽象类
继承自GenericServlet
类,实现了Serializable、
**Servlet、ServletConfig(这两个接口前面学习过)
**接口。
方法
HttpServletRequest接口
这个类是⽤来给 HTTP 提供请求信息的,也是对ServletRequest的拓展。因为这个类封装了请求信息,所以⼏乎就没有set⽅法,可以通过这个类获取这些请求信息,如URI上下⽂(URL和查询字符串)、Cookies、HTTP报 头相关、HTTP⽅法(DOGHPPT),以及请求所在会话的相关信息(session)。
方法
方法太多,还继承了interface javax.servlet.ServletRequest
的方法,请参阅API文档:
把一些比较熟悉的方法摘取出来:
那为什么请求URL要想得到需要返回的是Stringbuffer类型⽽不是String类型的?因为实际上并没有完整现成的 URL,⽽是需要通过调⽤该函数根据已有的信息如URI和查询字符串合成⼀个URL,这就需要缓冲区来存储可能需要的数据。
HttpServletResponse类
拓展 ServletResponse 来提供 HTTP 在发送响应时的功能。它可以通过特定的⽅法来访问 HTTP 头部和 cookies。 它的⽅法⽆⾮是操作HTTP协议报⽂:
- 访问cookie
- 访问数据报头(和它相关的操作)
- 访问报头(和它相关的操作)
- 设置状态码
方法
方法太多,还继承了接口 javax.servlet.ServletResponse
的方法,请参阅API文档:
可以关注一个与cookie相关的方法,其余主要与网页状态(status,比如404,500,200,101......)、回复格式、回复编码等有关。
HttpSessionEvent类
这个类其实很简单,就是根据⼀个给定的事件源创建⼀个事件。事件是会话的事件,在事件结束后会使⽤下⾯的这个⽅法getSession
返回那个被事件更新了的会话。这个类除了构造函数外就只有这⼀个⽅法。
方法
HttpSessionAttributeListener接口
方法
这个类是⽤来监听Http会话属性的改变的。⼀个HttpSession的事件会造成HttpSession属性的改变,Listener就 会监听这种改变。其中,对属性的操作就对应着该类的三个⽅法:增添属性、删除属性、替换属性。(没有查询!只有增改删!)
Cookie类
方法
⼀个cookie有⼀个名字、⼀个值、可选的属性:comment(描述)、path(路径)、domain(作⽤域)、age (寿命)、version(版本)。
Tag接口
域
方法
⼀个标签的⽣命周期是这样的:
SimpleTag接口
方法
TagSupport类
tag接口⼀般不会去直接实现,⽽是实现⼀个tagSupport来继承tag。
域
注意,这几个返回值要知道:
方法
Filter接口
方法
主要就是生命周期方法。
要注意的是doFilter
方法,有三个参数,有一个FilterChain
也包含一个doFilter
方法,作用是调用链中的下一个doFilter
方法或直接交给servlet。
FilterChain接口
方法
FilterConfig接口
方法
Action类
Action (Apache Struts API Documentation)
方法
ActionServlet
ActionServlet (Apache Struts API Documentation)
域
方法
ActionForm类
域
可以看到ActionServlet
是它的内部类。
方法
ActionMapping类
域
方法
ActionForward类
域
方法
DynaActionForm类
JspWriter类
方法
主要是write、print、println
等继承自父类Writer的常见方法。
JSP、Strut、Spring相关知识
JSP三大元素
- 指令元素
- 脚本元素
- 动作元素
<%! ... %> 是声明标签:定义⽅法的标签
<% ... %> 是脚本段标签,⽤于声明局部变量;
<%= ... %> 是Java表达式标签,⽤于包含⼀个直接转换成Java代码的Java表达式;
<%@ ... %> 是指令元素标签,⽤来包含⼀个Page\Taglib\Include 指令
0cLI3Km-1731552715988)]
方法
主要是write、print、println
等继承自父类Writer的常见方法。
JSP、Strut、Spring相关知识
JSP三大元素
- 指令元素
- 脚本元素
- 动作元素
<%! ... %> 是声明标签:定义⽅法的标签
<% ... %> 是脚本段标签,⽤于声明局部变量;
<%= ... %> 是Java表达式标签,⽤于包含⼀个直接转换成Java代码的Java表达式;
<%@ ... %> 是指令元素标签,⽤来包含⼀个Page\Taglib\Include 指令
[外链图片转存中...(img-enZSleNs-1731552715988)]
[外链图片转存中...(img-eMMcYcdX-1731552715988)]