• javaWeb三大核心技术笔记


    Servlet

    1) 客户端发送请求至服务器端;
    2) 服务器将请求信息发送至 Servlet;
    3) Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
    4) 服务器将响应返回给客户端。
    在 Web 应用程序中,一个 Servlet 在一个时刻可能被多个用户同时访问。这时 Web 容器将为每个用户创建一个线程来执行 Servlet。如果 Servlet 不涉及共享资源的问题,不必关心多线程问题。但如果 Servlet 需要共享资源,需要保证 Servlet 是线程安全的。
    最新版本3.1,为了简化开发流程,Servlet 3.0 引入了注解(annotation),这使得 web 部署描述符 web.xml 不再是必须的选择。

    Filter

    Filter实现了javax.servlet.Filter接口,因此一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行。

    在启动服务器时加载。随你的web应用启动而启动的,只初始化一次,只有当你的web应用停止或重新部署的时候才销毁。

    不像Servlet,它不能产生请求或者响应,它只是修改 对某一资源的请求,或者修改对某一资源的响应。或者成为请求的预处理,响应的后处理

    Listenner

    输入url,先经过过滤器,然后是servlet。

    Servlet,Filter都是针对url之类的,而Listener是针对对象的操作的

    Listenner 也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。

    web.xml 的加载顺序是:context-param -> listener -> filter -> servlet 

    下面是一个日志过滤器的实现

    public class LogFilter implements Filter 
    {
    //FilterConfig可用于访问Filter的配置信息
    private FilterConfig config;
    //实现初始化方法
    public void init(FilterConfig config)
    {
    this.config = config; 
    }
    //实现销毁方法
    public void destroy()
    {
    this.config = null; 
    }
    //执行过滤的核心方法
    public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws IOException,ServletException
    {
    //---------下面代码用于对用户请求执行预处理---------
    //获取ServletContext对象,用于记录日志
    ServletContext context = this.config.getServletContext(); 
    long before = System.currentTimeMillis();
    System.out.println("开始过滤...");
    //将请求转换成HttpServletRequest请求
    HttpServletRequest hrequest = (HttpServletRequest)request;
    //记录日志
    context.log("Filter已经截获到用户的请求地址: " + hrequest.getServletPath());
    //Filter只是链式处理,请求依然放行到目的地址
    chain.doFilter(request, response); 
    //---------下面代码用于对服务器响应执行后处理---------
    long after = System.currentTimeMillis();
    //记录日志
    context.log("过滤结束");
    //再次记录日志
    context.log("请求被定位到" + hrequest.getRequestURI() + "所花的时间为: " + (after - before)); 
    }
    }
  • 相关阅读:
    Linux 常用命令大全
    冒犯了,问大家一个问题,会linux的进来帮我解决一下
    Linux 软件安装
    Ubuntu 12.04出现“device not managed”错误
    Linux 系统下vi编辑器的使用方法(copy其他人网站的,留着自己查用的)
    tar的打包压缩与解压缩,并解压到指定的目录
    Ubuntu文件的复制、移动和删除命令
    当Ubuntu12.04 如何获取root权限
    windows是用vnc远程连接ubuntu的方法
    Ubuntu 12.04 在root登陆之后没有声音的解决方法
  • 原文地址:https://www.cnblogs.com/scmath/p/11185542.html
Copyright © 2020-2023  润新知