Java学习心得-Week11

这周继续学习Servlet内容,包括Servlet配置、ServletConfig对象、ServletContext对象,还学习了类加载和类反射,应用了静态代理设计模式、装饰者设计模式、Proxy动态代理,还学习了连接池,学习了注解,最后还有request与response对象。

  • Servlet的生命周期
    Servlet 生命周期可被定义为从创建直到毁灭的整个过程。
  • Servlet 通过调用 init () 方法进行初始化。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 通过调用 destroy() 方法终止(结束)。
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
  • Servlet配置
    自定义Servlet,第一步,声明该Servlet;第二步,给该Servlet配置访问路径。通过在web.xml中配置<servlet-mapping>和<url-parttern>实现
  • 缺省Servlet
    url-parttern的值为"/"就是缺省Servlet,作用是tomcat容器自带缺省Servlet、处理匹配不到的资源,返回404页面、处理静态资源,io流读写
  • 路径问题

带协议的绝对路径:http://localhost:8080/day51/img/girl.jpg
不带协议的绝对路径:/day51/img/girl.jpg
相对路径:
当前目录:./ ,可以省略
上一级目录:…/

  • ServletConfig对象
    ServletConfig是由tomcat容器创建,通过init方法传入给Servlet,作用:获取Servlet的名称<servlet-name>标签内容、获取Servlet的初始化参数、获取域对象:ServletContext
  • ServletContext对象
    相当于是整个应用程序对象,作用:ServletContext是一个域对象,可以用来存储数据getAttribute、setAttribute、removeAttribute,获取全局初始化参数,获取服务器真实磁盘路径

反射

  • 类加载
    在class文件加载到jvm中时,会对应创建一个Class对象;分为三个步骤:加载、连接、初始化
  • 加载 * 将class文件加载到内存区域,对应生成一个Class对象
  • 连接 * 验证:验证类的结构是否正确 * 准备:初始化静态成员 * 解析:将字节转换成jvm能够执行的引用(对象、变量、方法)
  • 初始化 * 将对象中的成员变量初始化
  • 类加载器
    将class文件加载进内存,并生成对应的Class对象
  • 根类加载器
    • 加载java中的核心类,主要加载F:\ProgramFiles\Java\jdk1.8.0_202\jre\lib\rt.jar中的类
  • 扩展类加载器
    • 加载java中的扩展类,主要加载F:\ProgramFiles\Java\jdk1.8.0_202\jre\lib\ext所有jar包中的类
  • 系统类加载器
    • 加载开发人员编写的自定义类、以及一些第三方的jar包中类
  • 类反射机制
    通过类的Class对象,动态去调用类中的属性和方法
    获取Class对象方式
  • 全类名=包名.类名 Class.forName(“全类名”)
  • 编译期 类名.class
  • 运行时 对象名.getClass()
  • 反射可以构造器、成员变量、成员方法、越过泛型检查
  • 反射可以读取配置文件
  • 设计模式

静态代理设计模式:增强被代理类的功能
装饰者设计模式:在不侵入被装饰类源码的前提下,增强某个功能
Proxy动态代理:基于接口的方法增强

  • 连接池

自定义连接池基础版:初始化时,创建一些连接对象,并存储到LinkedList集合中
自定义连接池优化版:使用中间类ConnectionWrapper
自定义连接池的终极版:结合动态代理进行使用

注解

Servlet2.5,不支持注解开发而 Servlet3.0,支持注解开发。
Servlet支持注解开发,由注解配置来代替web.xml配置,在Servlet类上直接使用@WebServlet注解代替在web.xml中配置

  • java内置注解

@Overirde:标记重写
@Deprecated:标记过时
@SuppressWarings:压制警告

  • 自定义注解
public @interface 注解名 {
    数据类型 属性名1() default 默认值1;
    数据类型 属性名2() ;
}
  • 元注解

@Target:规定自定义注解的作用区域
@Retention:规定自定义注解的存活策略

  • 设计模式
    反射、注解、设计模式初级版
    定义一个UserDao接口
    反射、注解、设计模式优化版
    动态代理获取UserDao接口中的方法对象

request与response对象

  • 当浏览器发起请求后,服务器会创建一个请求对象、一个响应对象,通过service方法传入给Serlvet
  • 作用:
    • request对象处理请求信息(请求行、请求头、请求正文)
    • response对象处理响应信息(响应行、响应头、响应正文)
  • response对象
    (1)设置响应头信息
    (2)发送状态码
    (3)设置响应正文
    (4)重定向
    PrintWriter out = response.getWriter():获取字符流;
    ServletOutputStreamout = response.getOutputStream():获取字节流;
  • request对象
    (1)封装了请求头数据;
    (2)封装了请求正文数据,如果是GET请求,那么就没有正文;
    (3)request是一个域对象,可以把它当成Map来添加获取数据;
    (4)request提供了请求转发和请求包含功能。
  • 请求转发与请求包含比较:
    (1)如果在AServlet中请求转发到BServlet,那么在AServlet中就不允许再输出响应体,即不能再使用response.getWriter()和response.getOutputStream()向客户端输出,这一工作应该由BServlet来完成;如果是使用请求包含,那么没有这个限制;
    (2)请求转发虽然不能输出响应体,但还是可以设置响应头的,例如:response.setContentType(”text/html;charset=utf-8”);

这周的内容确实多,需要记得知识点也非常多,我还需要多看视频复习,把没学好的重新学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值