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.在页面中加入这段代码
response.setContentType("text/html; charset=UTF-8");//返回浏览器的中文编码,写在输出前
PrintWriter pw = response.getWriter();
pw.print(html);
最新文章
- C语言学习 第八次作业总结
- 点击区域外隐藏该区域,event.stopPropagation()
- IIC总线解析
- ASP.NET中进行消息处理(MSMQ) 一(转)
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- POJ3581---Sequence 后缀树组
- JS~模拟表单在新窗口打开,避免广告拦截
- C#中通过类来继承两个接口,父类实例化接口中的方法,子类继承父类,调用方法
- 面向切面编程(AOP)的理解
- 关于smali插桩
- 向未声明的 JavaScript 变量来分配值
- Ubuntu中改变文件的默认打开方式
- 有些arp请求报文中为什么会有目的mac地址(不使用广播地址)
- BSGS离散对数(Baby-Step-Giant-Step)
- 在imagenet预训模型上进行finetune
- 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值---部分内容可能不确切,待讨论
- 洛谷3084 [USACO13OPEN]照片Photo
- js两个日期相减
- Oracle —— 如何执行SQL文件
- Scala系统学习(四):Scala变量
热门文章
- 007PHP基础知识——类型转换 外部变量
- AS3帮助手册
- 下拉列表框DropDownList绑定Dictionary泛型类
- Java之引用类型分析(SoftReference/WeakReference/PhantomReference)
- Swift 3 实现拍照功能
- dyld: lazy symbol binding failed: Symbol not found: ___sincosf_stret
- Loj 2534 异或序列
- BZOJ3680 吊打XXX 【模拟退火】
- 20179223《Linux内核原理与分析》第四周学习笔记
- Dapper.Contrib 开发.net core程序,兼容多种数据库