zoukankan      html  css  js  c++  java
  • 我的学习之路_第三十章_servlet

    servlet:小服务程序


    servlet是JavaWeb体系中的三大核心(servlet/Filter/Listener)之一,而且是最主要的那个.

    作用:接受请求,处理请求,做出响应

    继承体系:servlet(接口)-->GenericServlet(抽象类)-->HttpServlet(抽象类)

    servlet(接口):

    init:初始化:servlet是第一次被访问时初始化的,在服务器运行期间,servlet都只有一个对象
    多个访客使用的是多条线程.

    destroy:销毁:只有正常关闭服务器时才会调用此方法.

    servlet:服务:被访问时调用此方法

    在运行过程中某一个类的对象永远只有一个,叫单例模式

    service( ServletRequest , ServletResponse ):服务,接收请求

    Request对象代表的是浏览器发送到服务器的请求*
    Response对象代表的是服务器向浏览器发送的响应*


    getServletConfig:取得servletConfig

    getServletinfo:取得servletinfo

    【Servlet的生命周期】

    创建:
    第一次被访问(默认),只初始化一次
    通过修改web.xml配置文件把servlet的创建改为项目启动即初始化
    web.xml的servlet标签中添加一个 load-on-startup 标签,值为整数,一般设置为2(0-4,是一个优先级),
    其中0和1是系统使用的,所以尽量不要用.
    销毁:项目关闭(并不是服务器的启动和停止)

    【servlet的路劲设置】 : url-pattern(过滤器也使用)

    完全匹配:不含通配符的
    /aaa/bbb 访问目标为/aaa/bbb的请求,运行此servlet

    路径匹配:
    /aaa/* /* /ab* ,前半段匹配即可

    后缀匹配:
    *.xxx 后半段匹配即可

    默认: / 执行默认servlet(不用)

    原则:
    1.*要么开头,要么结尾,不能在中间.
    2.路径如果不以*开头,则必须以/开头.(也就是说必须是绝对路径)
    3.配置文件中的路径/aa/bb不带项目名的
    4.页面中的超链接 表单提交的路径,绝对路径是要项目名的
    原因:1.配置文件是属于某一个WEB项目的,所以不需要项目名
    2.而对于页面来说,浏览器面对的WEB服务器,而服务器中是可以有多个项目的,所以
    页面中的绝对路径的根代表的是服务器,所以以后要带项目名
    例如:http://localhost:8080/day34/hello.servlet
    程序 配置文件中的路径,服务端的WEB路径:
    配置文件:<url/pattern> /hello.servlet</url-pattern>,开头的/代表的是当前项目的根
    页面中的路径,客户端的WEB路径:
    页面:<a href="day34/hello.servlet">aaa</a> 开头/代表的是服务器
    特列:重定向


    【servlet如何接受请求】

    servlet的核心方法(servlet接口 servlet,HttpServlet : doGet doPost)接受两个参数:请求和响应对象,这两个对象是WEB服务器在接收到Http的请求
    后,封装的两个JavaBean.请求和响应相关的信息都封装在这两个对象中
    如果浏览器在发送请求是提交的表单的参数,则找Request对象来取得:
    String getParameter(String name) <input type="" name="" value="">

    【servlet如何发送响应:】

    resp.getWriter().write("响应内容") 响应对象的输出流(向浏览器输出内容的流)

    代码分层:
    servlet:负责流程,接受请求,调用哪个service,响应什么信息
    service:负责实现功能(业务逻辑),涉及底层的数据时,调用dao层
    dao:只负责数据的操作(CURD),不参与业务

    代码分层的总结:
    1.为了让程序结构更加清楚
    2.后续的维护和扩展工作中,变的更简单
    3.工程性(后续的可维护性和可扩展性)

  • 相关阅读:
    ssh中的 Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
    Http中的Get/Post方法
    Node.js(day2)
    使用clipBoard.js进行页面内容复制
    SVG之图形的引用use、剪切clipPath和蒙板mask
    SVG之文本
    SVG之Path
    SVG之颜色、渐变和笔刷的使用
    SVG坐标系统
    SVG入门
  • 原文地址:https://www.cnblogs.com/jia-/p/7163191.html
Copyright © 2011-2022 走看看