Servlet与Filter的区别、生命周期、执行顺序?Servlet的内置对象?

  1.两者分别是什么?其作用是什么?

        Servlet是一种运行在服务端的Java程序,可以用来收集来自用户表单的数据输入,并将来自数据库或者其他来源的数据呈现给客户端,还可以动态的生成网页。

        Filter也被称之为过滤器,是一段可复用的代码,可以在客户端请求到达Servlet之前,拦截HttpServletRequest,并对其进行处理;也可以在HttpServletResponse返回给客户端之前,对其再次进行处理。

2.生命周期?

    Servlet:

        1)Servlet通过调用init()方法进行初始化;

            该方法只会被调用一次,会在创建Servlet实例时被调用;而Servlet创建于第一次调用该Servlet的URL时,也可以指定为在服务器启动时被加载

        2)Servlet调用service()方法处理客户端的请求;

            该方法调用次数由客户端请求次数决定,是在Servlet接收到用户请求时被调用。service()方法根据客户端请求类型(POST、GET、PUT、DELETE)来分别调用doPost()、doGet()、doPut()、doDelete()等方法

        3)Servlet调用destroy()方法结束;

            该方法只会被调用一次,是在Servlet生命周期结束时被调用。方法被调用后,该Servlet会被标记为垃圾回收

        4)Servlet被JVM垃圾回收器回收。

    Filter:

        1)调用init()方法初始化

            该方法只会被调用一次。Web应用程序启动时,创建Filter实例对象,并调用init()方法,读取web.xml配置,完成对象的初始化。

        2)调用doFilter()方法拦截请求

            该方法调用次数根据用户请求决定。该方法能够完成实际的过滤操作

        3)调用destroy()方法销毁

            当Web应用移除或者服务器停止时,调用destroy()方法进行销毁。

3.执行顺序?

    Filter->Servlet

    Filter拦截客户端请求,按需进行处理后,转发给相应的Servlet去处理客户端请求。

4.区别?

    Servlet流程短,URL传来后,对其进行处理,然后就返回或者转向指定的页面;

    Filter是线性的,或者是链结构的,URL传来,检查后,既可以保持原来的流程继续向下执行,既可以把请求转发给Servlet,也可以被Filter链中的下一个Filter接收。Filter链的顺序,是由web.xml中配置。

5.Servlet九大内置对象?

    严谨来说,Servlet并没有内置对象,我们常说的内置对象是JSP的。而JSP的本质又是Servlet。

JSP内置对象Servlet中Java对象相关方法
requestHttpServletRequest

1.getParameter(String name);获取表单提交的数据

2.getParameterNames();获取客户端提交的所有参数名

3.getAttribute(String name);获取name指定的属性值

4.getAttributeNames();获取request对象所有属性的名称集合

5.getSession(boolean create);获取HttpSession对象

responseHttpServletResponse

用于对客户端的请求做出动态响应,向客户端发送数据

1.getCharacterEncoding();返回响应用的字符编码格式

2.getOutputStream();返回响应的输出流

3.getWriter();返回可以向客户端输出字符的一个对象

sessionHttpSession从一个客户打开浏览器并连接到服务器开始,刀可断关闭浏览器离开这个服务器结束,这个过程被称为一个会话,session对象可以保存用户的会话状态
exceptionThrowable用于处理JSP页面中发生的错误和异常,可以帮助我们了解并处理页面中的错误信息
pagethis

当前JSP页面

1.getClass();获取page对象的类

2.hashCode()获取page对象的hash值

3.equals(Object obj);判断page对象是否与参数中的obj相等

4.copy(Object obj);把此page对象赋值到指定的Object对象中

5.clone();克隆当前的page对象

pageContextPageContext用于管理对属于JSP中特殊可见部分中已经命名对象的访问
applicationServletContext实现了用户间数据的共享,可存放全局变量
configServletConfig

用来获取服务器初始化配置参数

1.getServletContext();获取当前的Servlet的上下文

2.getInitParameter(String name);获取指定的初始参数的值

3.getInitParameterNames();获取所有的初始化参数的值

4.getServletName();获取当前Servlet名称

outJSPWriter

用来向客户端输出各种数据

1.print();/println();输出各种类型数据

2.clearBuffer();清除缓冲区的数据,并将数据写入客户端

3.clear();清除缓冲区的数据,但不将数据写入客户端

4.close();关闭输入流

转载于:https://my.oschina.net/alexjava/blog/1837273

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值