• Tomcat原理的一点看法


    版权声明本文为博主原创文章,未经博主允许不得转载。

    首先,运行tomcat之前,先写一个html页面,

    再写一个serlvet程序

    配置文件如下:

    那么程序是怎样运行的呢?

    浏览器发起请求到 -->  服务器  -->  扫描配置文件  -->  找到对应方法  -->  通过继承的httpServlet方法  -->  抽象的类GenericServlet   -->

    实现了Servlet, ServletConfig,java.io.Serializable这三个类   -->  httpServlet  继承了GenericServlet 中的 一个service的方法,但是必须重写。

    同时客户的请求,就已经包含了一个对象。   最后httpServlet重写了service的方法,并且servlet容器创建了一个HttpServletRequest对象,

    并将其作为参数传递给servlet的服务方法(doGet、doPost等)。

    那就厉害了!tomcat一启动,就调用下列各种方法,获取各种参数,然后通过浏览器的请求,由服务器创建一个对象,

    通过对象调用service方法,  获取各种参数(包括内容长度、内容类型、内容转换编码、内容编码、内容基础、内容语言、内容位置、内容-md5和内容范围);

    最后再响应给浏览器。

    GenericServlet 通用类服务器 实现了服务器,服务器配置文件,以及io序列化,
    1.一个无参构造器,
    destroy() 2.默认通过的销毁方法
    getInitParameter() 3. 获取初始化参数
    getInitParameterNames() 4.获取初始化参数名称
    return getServletConfig().getInitParameterNames()

    ServletConfig getServletConfig() 5.获取服务器配置,return config;

    ServletContext getServletContext() 5.1 获取服务器上下文配置 
    return getServletConfig().getServletContext();

    getServletInfo() 6.获取服务器信息,返回一个空船

    init(ServletConfig config) 7.初始化配置,含有参数

    init() 8.初始化无参

    log(String msg) 9.记录,参数是提示信息

    log(String message, Throwable t) 10.记录在线信息,可抛出异常

    service(ServletRequest req, ServletResponse res) 11.服务方法

    getServletName() 12.获取服务器名称,返回一个配置文件的服务器名称

    return config.getServletName();

    tomcat 解决乱码问题

    1.在页面中加入这段代码

     <meta http-equiv="Content-Type" content="textml; charset=UTF-8"> 
    告诉浏览器,提交的信息,用这个格式
     
    2.在serlvet中加入,必须加载请求参数之前 request.getParameter
    request.setCharacterEncoding("UTF-8");
     
    2.返回给页面的时候

    response.setContentType("text/html; charset=UTF-8");//返回浏览器的中文编码,写在输出前
    PrintWriter pw = response.getWriter();
    pw.print(html);

  • 相关阅读:
    iOS Simulator功能介绍关于Xamarin IOS开发
    Unity中制作游戏的快照游戏支持玩家拍快照
    手机数据抓包入门教程
    Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数
    Hierarchy视图里的Transform和Camera组件
    用JAVA编写MP3解码器——GUI(FFT)(转)
    功率W与dBm的对照表及关系(转)
    单鞭天线的长度计算方法(转)
    STM32F10X SPI操作flash MX25L64读写数据(转)
    利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开(转)
  • 原文地址:https://www.cnblogs.com/JavaBlackHole/p/7437475.html
Copyright © 2020-2023  润新知