一、一直觉得用户请求和struts处理请求之间有一些空白的知识点,所以,今天准备看看tomcat。
其实像struts这类的控制层框架都是实现了servlet api,然后对一些业务进行进一步封装后的产物,但是它也只是负责处理业务的,那么用户的请求怎么就到达控制层呢?这就是servlet容器的作用了,tomcat作为开源的servlet容器,也实现了servlet api,在用户请求到来时,会为处理请求的servlet创建request和response,然后调用servlet的生命周期函数,当servelt处理完请求后,仍然由容器接受response,然后返回给客户端。
我们先看看tomcat安装完成后,在server.xml中默认的配置:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- Define a SSL HTTP/1.1 Connector on port 8443
This connector uses the JSSE configuration, when using APR, the
connector should be using the OpenSSL style configuration
described in the APR documentation -->
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
</Server>
从配置上,我们对tomcat的结构就比较了解了,顶层的元素是server和service,一个server可以包含多个service,在service中,可以包含多个connector和一个engine,engine中又包含多个host,代表多个虚拟主机,在host中,我们可以配置多个context,代表一个虚拟主机中多个app,我们可以由此联想一个tomcat配置多个虚拟主机,或者一个虚拟主机中配置多个共存的应用。
二、session机制
在看tomcat时,涉及到了session的管理,所以顺便回顾了一下session的知识,session与cookie不同的是,它是服务器端的状态,但是底层是基于cookie实现的,在客户端第一次请求的时候,服务器会返回一个sessionId,然后客户端会把它存在cookie中,然后下一次请的时候会向服务器端发送这个id,然后服务器会根据这个id去取出相应的session。
由于session是基于cookie的,所以一旦客户端把cookie禁用之后,session的状态就无法维护了。这个时候我们就要用到response.encodeURL(url)了,它的实现机制是这样的:
(1)先判断页面是否禁用session,如果禁用,那么直接返回url
(2)如果没有禁用,那么继续判断是否禁用cookie,如果没有禁用,那么直接返回url,sessionId会在header的cookie中找到
(3)如果禁用,那么会在url后面自动加上sessionID,然后发送到服务器端,就保证了session状态不会受到是否禁用cookie的影响
三、发现tomcat的源码时ant项目,就顺便看了下ant的东西。
ant和maven都是项目项目管理工具,它的安装和maven类似,都是先去下载bin的zip包(如果你的操作系统是windows的话),然后解压,配置path,然后再命令行中测试ant -version,如果有版本输出,证明ant被正确安装了
具体的用法就没仔细看了,以后需要了再学习吧。
四、在做项目时一般是拷贝之前的log4j文件,今天了解了一下
###rootLogger是所有log的超类
###格式是:[日志级别]appender类型,appender类型
log4j.rootLogger=debug, console,file
log4j.logger.service=debug, service
### direct messages to file *.log ###
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%c:%L] - %m%n
log4j.appender.service=org.apache.log4j.DailyRollingFileAppender
log4j.appender.service.File=${catalina.home}/logs/main.log
log4j.appender.service.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.service.Append=true
log4j.appender.service.layout=org.apache.log4j.PatternLayout
log4j.appender.service.layout.ConversionPattern=%d [%5p] [%F:%L] %M: %m%n
分享到:
相关推荐
12_012_云R记_用户模块_用户登录_思路分析.mp4 13_013_云R记_用户模块_用户登录_后端代码实现.mp4 14_014_云R记_用户模块_用户登录__功能测试.mp4 15_015_云R记_用户模块_BaseDao.mp4 16_016_云R记_用户模块_BaseDao...
1.1 用户登录..........................................................15 1.2 用户退出..........................................................17 1.3 系统参数设置........................................
- **D12r03**:2007 年 8 月 17 日,更新了包含蓝牙核心规范 2.1 + EDR 的内容,并解决了 HSP 错误编号 350、368 和 446。 - **D12r04**:2007 年 8 月 19 日,基于 BARB 电话会议讨论结果移除了 PARK 参考。 - **...
12. **工程材料、构配件、设备报验**:确认使用的材料、配件和设备是否符合设计和规范要求,是否有合格证明。 13. **工程报验检测**:记录工程报验的过程,包括检测结果,确保符合标准。 14. **见证取样送检**:...
标题“report_vip_2021-12-18-15-17-07.zip”表明这是一个VIP级别的报告,生成于2021年12月18日15点17分07秒。通常,这样的命名格式用于记录文件的创建日期和时间,以便后续追踪和管理。在IT领域,VIP(Very ...
3. **作业完成度**:整体来看,大多数学生的作业完成质量较高,例如9月15日、17日、20日等日期的作业,学生表现良好。但也有部分作业不尽人意,如10月8日的第10课生字练习,可能是由于假期后调整状态的时间不足。 4...
12. 年度员工培训工作计划表:规划全年的员工培训活动,提升员工技能。 13. 员工培训申请表:员工申请参加培训时填写,为培训资源分配提供依据。 14. 年度员工培训实施情况汇总表:总结培训效果,评估培训项目的...
12. □电话连络 □传真联络:记录处理该异常单的人员的联系方式,以便于与处理人进行沟通。 13. 联络人:记录处理该异常单的人员的名称,以便于了解处理人。 14. 客户答复或承诺:记录客户对异常单的答复或承诺,以...
17. **天花板、壁板、地面**:检查轿厢内部装饰完好,无破损,确保乘客使用体验。 18. **通风扇**:保证轿厢内空气流通,提高乘坐舒适度。 19. **照明灯**:确保电梯内照明充足,为乘客提供清晰的视线。 20. **...
'17.函数作用:计算日期差,除去星期六、星期日...........45 '18.函数作用:将英文字反转的自定函数...................46 '19.函数作用:计算个人所得税...........................46 '20.函数作用:一个能计算是否有...
13. 有效日期:有效日期是指温湿度表仪器的有效日期,例如2014年12月08日。 14. 温度:温度是指温湿度表仪器测量的温度值,例如25℃。 15. 湿度:湿度是指温湿度表仪器测量的湿度值,例如60%RH。 16. 检定员:...
STATSPACK报告分析之DB Cache1优化小技巧 STATSPACK报告分析之PGA6月15日 青岛今日点评优化小技巧 如何 优化闩锁6月16日 SQL 优化效果今日点评优化小技巧 如何转储数据块优化小技巧 通过树转储来分析索引碎片6月17日 ...
标题“bugreport-2022-12-17-172658.zip”和描述中的信息表明这是一个包含设备错误报告的压缩文件,时间戳为2022年12月17日17时26分58秒。在IT领域,尤其是软件开发和故障排查过程中,bugreport是非常重要的工具。它...
12. 关系路由(Relationship Based Routings).............................................................7 13. 动态路由(Dynamic Routing)...................................................................
1. 病历书写规范的生效日期:根据题目,卫医政发 [2010]11 号规定的新的《病历书写基本规范》自2010年3月1日起施行。 2. 问诊技巧:正确问诊应以患者自身感受为主,例如选项D“你觉得主要是哪里不适”,避免引导性...
以上是2018年11月17日托福阅读机经中涵盖的主要知识点,这些内容涵盖了生物学、地质学、历史、生态学等多个领域,是托福阅读考试中常见的科学和历史主题。准备托福考试的学生应熟悉这些话题,提升阅读理解和综合推理...
会议纪要"SE2020-G06-会议纪要_2020.12.091"详细记录了2020年12月9日17:15至17:45在明德一413宿舍进行的一次项目团队会议。该会议由邢海粟主持,黄德煜担任记录员,主要讨论了关于详细设计模块的总结、不足以及后续...