• Servlet的生命周期及filter,servletRequest和servletResponse


    序,Web应用中,Servlet和Filter是很重要的两个概念,一定要理解透彻。

    一、Servlet类

    继承自HttpServlet,HttpServlet是一个抽象类,主要包含的方法有init,service,destroy,doGet,doPost等

    可以重写下面方法:

    public void service(HttpServletRequest request,HttpServletResponse response)方法:响应客户端的所有请求

    init方法:初始化

    destroy方法:销毁

    1 web.xml中配置Servlet

    web.xml

    <web-app>
        <servlet>
            <servlet-name>hello</servlet-name>
            <servlet-class>hello.Hello</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>/lookhello</url-pattern>
        </servlet-mapping>
    </web-app>
    View Code

    servlet3.0开始,配置Servlet支持注解方式

    @WebServlet

    asyncSupported 是否支持异步操作模式

    displayName 指定该Servlet的显示名

    initParams 为Serlvet配置参数

    loadOnStartup 配置成load-on-startup的servlet

    name servlet的名称

    urlPattern/value url

    2 访问Servlet的三种方式

    (1)直接输入url访问

    (2)利用Form表单提交时访问,getNumber对应了<url-pattern></url-pattern>的值,要记住必须去掉 "/" 

    <FORM action="getNumber" method="post">
    </FORM>

     (3)通过超链接访问Servlet,helpMeShow也对应了<url-pattern></url-pattern>的值,要记住必须去掉 "/" 

    <A href="helpMeShow"></A>

    3 doGet和doPost方法重写

    如果,请求的来源是Get或者Post,则会直接定向到doGet或者doPost方法,方法声明如下:

    protected void doGet(HttpServletRequest req, HttpServletResponse resp);
    protected void doPost(HttpServletRequest req, HttpServletResponse resp);

    4 HttpServletResponse的重定向

    response.sendRedirect(String location);

    (1) location为jsp页面或者servlet

    (2) 页面地址会变

    (3) 无法将当前jsp页面或Servlet的HttpServletRequest对象转发给新的资源

    (4) 浏览器会重新发起新的请求。这是HttpServletRequest对象不能转发给下个jsp页面或Servlet的原因。

    5 RequestDispatcher转发

    RequestDispatcher dispatcher = request.getRequestDispatcher(string path);
    dispatcher.forward(request, response);

    (1)location为jsp页面或者servlet

    (2)页面地址不会变

    (3)可以将当前jsp页面或Servlet的HttpServletRequest对象HttpServletResponse对象转发给新的资源

    (4)浏览器不会重新发起新的请求

    6 session

    HttpServletRequest对象调用getSession方法获取用户的session对象

    浏览器中的session对象定义从一个用户打开浏览器链接到服务器的某个web服务目录,到用户关闭浏览器离开服务器称做一个会话(session)。

    HttpSession session = request.getSession();

    (1)session对象的ID

    string id = session.getId();

    (2)session对象与URL重写

    (3)session对象存储数据

    public void setAttribute(key, value);
    public voidgetAttribute(key);
    public Enumeration<String> getAttributeNames();
    public long getCreationTime();
    public void session.removeAttribute(key);

    (4)在Tag文件中使用session对象

    (5)session对象的生存期限

    public long getCreationTime();
    public long getLastAccessedTime();
    public int getMaxInactiveInterval();获取session最长的”发呆“时间(单位是秒)
    public void setMaxInactiveInterval(int interval);设置session最长的”发呆“时间(单位是秒)
    public boolean isNew();是否是新建的一个对象
    public void invalidate();是session失效

    (6)使用session设置时间间隔

    限制用户等待若干”时间“后,再次使用该页面所提供的功能。不是session提供的功能,是利用session里保存时间信息来做到。

    二、Filter接口

    用处

    1 在HttpServletRequset到达Servlet之前,拦截客户的HttpServletRequest

    2 根据需要检查HttpServletRequset,也可以修改HttpServletRequset头和数据

    3 在HttpServletResponse到达客户端之前,拦截HttpServletResponse

    Filter有如下几个种类

    1 用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求。

    2 日志Filter:详细记录某些特殊的用户请求

    3 负责解码的Filter:包括对非标准编码的请求解码

    4 能改变XML内容的XSTL Filter等

    5 Filter可负责拦截多个请求或响应;一个请求或响应也可被多个Filter拦截

    实现在javax.servlet.Filter接口

    需要重写三个方法

    init方法:完成Filter的初始化

    destroy方法:用于Filter销毁前,完成某些资源的回收

    public void doFilter(servlerRequest request,servletResponse response,FilterChanin chain)方法:实现过滤功能

     

    配置Filter

    web.xml

    <filter>
    <filter-name></filter-name>
    <filter-class></filter-class>
    </filter>
    <filter-mapping>
    <filter-name></filter-name>
    <url-pattern></url-pattern>
    </filter-mapping>

  • 相关阅读:
    spark之手机基站定位数据的商圈分析
    spark之客户流失预测
    spark之AHP层次分析顾客价值得分
    Web-Attak系列教程第二季0x13讲——信息收集
    Web-Attak系列教程第二季0x12讲——HTTP的请求与响应格式
    Python编程系列教程第14讲——继承
    独孤九剑与黑客编程
    Python编程系列教程第15讲——多态
    Python编程系列教程第16讲——拷贝自身到系统目录
    再谈独孤九剑与黑客编程
  • 原文地址:https://www.cnblogs.com/yaochc/p/4903035.html
Copyright © 2020-2023  润新知