zoukankan      html  css  js  c++  java
  • Servlet&Filter专题

    Servlet:jsp专注显示;业务逻辑JavaBean【将业务逻辑独立出来——在servlet火filter当中实现】

    【1】把业务逻辑从jsp当中独立出来,在servlet或者filter当中去实现响应功能

    【2】servlet不生产数据,也不负责页面展示,只是前后端交互的中介   【前端pageURI(XXX.do) + 后端数据处理】——尤其是表单

    【3】服务端编程的API

    ========创建方式:

    【1】实现接口:Servlet

    【2】继承类:GenericServlet   \   HttpServlet类

    =========生命周期[容器完成]

    image

    【1】init:Servlet实例化【构造new】后,容器调用init方法【初始化一次】——请求抵达后

    【2】service:容器根据请求,调用对应的servlet的service方法【每次请求抵达后,都会调用一次service】——请求抵达后

    【3】destroy:销毁 servlet时调用的方法

    ---plus: getServletConfig()  \  getServletInfo()

    ==========部署Servlet    [行业深入]

    【1】将Servlet注册给容器

    【2】在web.xml当中进行注册

         -servlet标签: 

               -servlet-name:每一组servlet的名字任意取

               -servlet-class:注册交由容器进行实例化的Servlet类全名

         -servlet-mapping标签:负责映射到具体的servlet

               -负责映射到具体的Servlet;不唯一

               -servlet-name:与映射的Servlet同名

               -url-pattern:URL 映射的模板: 【1】完全的请求名拦截  【2】限定后缀   【3】限定路径

         -NOTE:

               -web.xml当中的任何修改都需要重启服务器

               -Servlet当中,任何代码的修改都需要重启服务器

               -jsp当中,修改无需重启服务器

    【3】使用

          -获取作用域

          -获取http相关信息

          -获取初始化信息 : init-param  

          -获取请求参数: \getParameterMap

          -获取工程路径:ServletContext  application

    从前端到数据库地通道

    【1】Dao:持久层,只负责从数据库读写数据,即:调用sql等相关地api接口!

    【2】Service:业务层

         -调用dao

         -负责进行业务模型地组装,逻辑的运算以及其他业务地调用

    【3】Controller:交互层

         -调用Service

         -负责决定由哪个业务模块处理业务

         -负责决定最终将数据交由谁来处理

    【4】Servlet:模拟交互层得分发,工作后期由交互层框架负责完成

    =====================================输出流的方式进行往外写:json

         -依赖:jackson-core  \  jackson databind

         -

    Notes:

         -servlet和servlet之间是无法转发的!

         -servlet和jsp之间可以转发!

         -

    MVC:项目分层

    【1】Controller交互层(Servlet)

    【2】View视图层(JSP)

    【3】Model模型层(组装最终展示到视图层的数据)

    补充:

    单例:内存唯一;外部不能实例化

    Servlet:容器只创建一个对象,表现形式符合单例特征。【默认是无状态】——保障数据访问的安全性

    The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.——servlet添加项目|或者路径问题

    =============Filter==========

    【1】在业务当中,存在一些公共的功能,这些功能是在Servlet执行前,对Servlet执行的前置条件进行统一的筛选和过滤——Filter

    【2】Filter的注册和创建:实现Filter接口

         -生命周期:

               -构建Fiter对象

               -初始化:init方法调用

               -开始过滤:doFilter

               -销毁:destroy

         -注册Filter

               -web.xml当中注册;使用filter标签对Filter进行注册

               -Filter在服务启动的时候进行初始化工作  &&&&  Servlet初始化时机:

         -Filter的过滤器链

               -FilterChain:执行下一个Filter或者Servlet的调用

               -过滤器链当中的调用顺序是和过滤器的注册顺序是一样得

               -OpenSessionInView:把数据库的连接对象,放在一次请求的session当中保存,直到该session失效,才释放连接。

               -对请求进行前置和后置的处理

               -过滤器的常规对象和Servlet

    多种配置Servlet、Filter方式:通过注解也可以:@webServlet()   \   @webFilter()

    ===============监听器===============

    image

    【1】与域有关的六个监听器:(1)监听域创建和销毁;(2)监听域属性的创建和销毁;(3)修改和删除,获取的是属性的旧值

          -Application:实现接口 ServletContextListener

                -注册在web.xml当中配置监听

                -服务启动时创建

                -

          -Session

                -请求抵达后,使用了session才创建,不使用session不创建

                -

                -

          -Request

                -请求抵达后,立即创建

    【2】HttpSessionBiindingListener  :每一个session独享一个监听器

         -Session和对象绑定,直接监听某个对象的变化

         -不用注册监听

         -场景:实现用户的登录和登出:最缺乏的就是IT软件思维;&要适应,同时要反制

                -将登陆用户信息放入到session当中,用于判断某个用户是否已登入

                -判断是否切换用户,或者是否用户已注销,或者用户 已退出

                -能够监听的情况:点击注销按钮,手动登出;——当session过期,或者用户直接关闭浏览器中断session这种情况,会出现很难监听问题。

         -注意:

                -传入的对象,在判断的时候,需要重写equals方法

                -因为是使用的session域,所以不适合大规模部署!


    文件上传

    【1】文件上传

         -页面:

                -提交的类型必须是post类型

                -解析累心:multipart/form-data

         -取属性

                -从request的参数当中去取属性

                -属性和文件流都是在FileItems对象当中

    【2】note:不能只在js检测

         -比如需要后台解压问题,如果上传的为木马呢?

         -对数据流进行截取:

                -通常对于下载量以及频次较高的:一般来说:web是要检查文件头和文件尾是否合法

                -通常是需要一个PC客户端,有PC客户端才可以在客户端添加临时文件

    分页:

    【1】组装分页的当前页信息

    【2】把条件带入到查询中,获取所有的数据

    【3】组装分页的其他信息

    【4】把分页的信息和查询信息一起交给数据进行查询

    【5】把分页信息、查询信息、查询结果一并交还给前端


    体会:jsphtml   &&  servlet  在实际工程中发挥的作用!

  • 相关阅读:
    left join 多表关联查询
    Dictionary解析json,里面的数组放进list,并绑定到DataGridView指定列
    C#同一位置切换显示两个Panel内容
    C#点击按钮用DataGridView动态增加行、删除行,增加按钮列
    C#获取本机mac地址
    C# MD5加密
    C# SQLiteDataReader获得数据库指定字段的值
    linux下mongodb安装、服务器、客户端、备份、账户命令
    ubuntu下创建python的虚拟环境
    python多进程之间的通信:消息队列Queue
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13346192.html
Copyright © 2011-2022 走看看