1.Tomcat请求流程图

2.Tomcat项目部署方式

tomcat常见三种部署方式

1.1 在部署目录部署war包

这种方式部署最简单,也是在最常用的一种方式,如:在tomcat的conf下的server.xml文件中有如下配置:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">......
</Host>

此文件说明虚拟服务器localhost,使用webapps作为部署目录,只要将war包部署在该目录中即可完成部署,

  • unpackWARs参数表示,tomcat会对部署在webapps目录中的war文件自动解压,如果为false,则不执行自定解压,但会影响程序的运行效率,
  • autoDeploy表示自动部署,即热部署

注:这种方式也可以直接部署文件夹,但要求部署的文件夹要符合web目录的标准

1.2 通过server.xml部署

      <Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /><!-- 部署web项目 -->项目web全目录/webdemo" docBase="D:\work\eclipsews\webdemo\WebContent<Context path="/webdemo" docBase="D:\work\eclipsews\webdemo\WebContent"></Context></Host>

这种方式需要修改server.xml,不建议使用

1.3 独立部署文件

  • 首先来到 \conf\Catalina 目录,
  • 然后再依据虚拟服务器名称一致的方式,创建一个目录(如:localhost)
  • 创建一个xml文件,完成项目部署,文件名与部署项目的上下文名称对应,例如:webdemo.xml,内容如下: 注意每一个项目一个文件 文件类容直接复制下代码即可
<--webdemo文件访问名-->
<--docBase 文件路径-->
<Context path="/webdemo" docBase="D:\work\eclipsews\webdemo\WebContent"></Context>

2. eclipse中的tomcat配置

1) eclipse 中 tomcat的运行基本原理

我们现在来分析一下上面的程序运行的原理。

当在服务器上运行后,会生成与工程文件并列的一个文件夹:Servers。如下:(如果删掉了Servers文件夹,当重新运行时,文件夹又会自动生成)

这个文件夹是Tomcat服务器的一个基本的配置。

上图中表明,我们新建的项目已经部署到Tomcat服务器上去了,也就是看到了TomcatTest这个工程被发布出去了(发布的过程即:将写的工程打包以后放到Tomcat里)。

其实eclipse for EE已经包含了Tomcat服务的插件,但其也必须依赖Tomcat来启动。我们双击上图的红框部分,显示如下信息:

上图的红框部分表明,服务的部署是在eclipse里面(默认是放在工作空间里的.metadata文件夹下),而不是在Tomcat里面。我们来改一下,前提是工程并没有发布到Tomcat中去,那我们先把之前发布的版本删了吧(稍后重新发布):

然后就可以修改部署的路径了:

上图中,使用Tomcat的安装目录作为部署的位置,并修改部署的路径Deploy path(建议改成Tomcat的webapps目录下),然后保存即可。这时,重新运行程序。现在来到Tomcat的webapps目录下,发现多了一个TomcatTest文件夹(即工程文件名),并且文件夹下包含了工程文件中WebContent的内容:

上图说明,说明这才是真正将程序发布到服务器上。

我们再来到Tomcat的work目录中,看一下编译之后的文件:

上图表明,Tomcat会先将jsp文件转为java文件,然后再把java文件编译为class文件,最终执行的是class文件。现在来看一下JSP运行的原理。

四、JSP的运行原理:

  • 只有当客户端第一次请求JSP时,才需要将其转换、编译(所以第二次浏览同样的网页时,速度会更快)
  • Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。
  • 程序片段可以操作数据库、重新定向网页以及发送email等等,这就是建立动态网站所需要的功能。
  • 所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低。

2) 常见问题及处理

 1、8080端口被占用。

    这个问题的解决方法很简单,在百度经验中笔者熟悉了一种方法。

    打开cmd(开始->搜索->cmd(右键,选择以管理员身份运行))

    输入: netstat   -ano|findstr  8080 

    

      看到LISTENING后面的“7240”了吗,记住这个号码,然后再输入:taskkill  /pid  7240  /f 

    输入之后,会看到命令行界面提示“成功:已终止PID为7240的进程”。就代表终止端口号成功了。

    (如果不成功或者显示权限不够,请依照前面所说的要以管理员身份运行)

    第二种方法就是在Eclipse界面下方的Services窗口处找到你配置的Tomcat服务器,双击,如图所示:

    

      双击“Tomcat v7.0 Server at localhost [Stoped,Synchronized]”,显示:

    

       然后用右边的Ports部分,更改后面的端口号(大不了全都改了)这样也可以解决端口号的问题。但是笔者想告诉大家,有时候Eclipse提示端口号出错并不是因为端口号被占用的问题,所以如果你和我遇到了同样的问题,可以试着看看后面的解决方案。

    重新启动Eclipse,编写一个测试用的JSP程序运行试试,如果你成功了,那么恭喜你,但是笔者遇到的问题却不是这个、、所以还要接着进行调试。

    2、Tomcat卡住,最后提示超过45s,(有人卡在27%,很庆幸,笔者卡在了100%。。。。)

      这就是笔者面对的终极问题,真的很伤心,Tomcat运行到100%竟然不动了!!!这让我很接受不了,我看见网上有的说要重新启动,笔者傻傻的重新启动了三遍,依然以失败告终。。。还有人说双击Servers窗口下的Tomcat服务器(像问题1中的那样,然后更改Server  Location 部分,选中第二个,Use Tomcat installation(takes control of Tomcat installation)),这种方法可以详见网上其他人写的解决方案,我觉得说的肯定比我明白,但是还是不行。

      最后,解决的办法就是、、、、、卸载Tomcat服务器,重新在Eclipse中配置Tomcat服务器(由于笔者之前安装过Tomcat服务器,注意,是安装版的,我就下载了一个压缩包,免安装版的,从百度上可以搜索到),这回好了,没有停在100%,运行一下直接提示Tomcat服务器打不开了!没关系,看第三种方法吧、、

    3、Tomcat服务器打不开,直接停止运行。

      大家有没有注意到一个问题,在我们建立项目的时候,左边的项目列表里有一个Services包,里面装着点Tomcat的一些文件,因为笔者之前安装过Tomcat,所以我觉得是以前在workspace中还残留着以前的Tomcat,所以,找到了Eclipse+Tomcat的workspace(在本地电脑中昂、、),然后再找到这个Services文件夹,最后、、、彻底删除文件,重新启动Eclipse,(为了保险起见,我又重新配置了一遍Tomcat)最后运行测试程序,结果我成功了、、这就是我和大家分享的Eclipse+Tomcat 配置过程中遇到的一些问题,希望能帮助那些和我遇到同样问题的朋友们。

3. 关于web监听器

web监听器的类型:

  • ServletContextListener 监听Context对象的创建与销毁,Context即web应用
  • ServletContextAttributeListener 监听在Context中发生增加,更新,删除对象的事件
  • HttpSessionListener 监听session对象的创建与销毁
  • HttpSessionAttributeListener 监听在session中发生的增加,更新,删除对象的事件
  • ServletRequestListener 监听request对象的创建
  • ServletRequestAttributeListener 监听在session中发生的增加,更新,删除对象的事件

以上6中监听器,需要在web.xml中进行配置,除以上6种监听器还有下面两种监听器:

  • HttpSessionBindingListener  当对象被放入session里执行valueBound,被移除时执行valueUnbound
  • HttpSessionActivationListener 服务关闭时可以使用该监听器将session数据持久化到磁盘,服务重启会session数据会从磁盘重新加载,对应的使用示例可以参考tomcat01

以上两个监听器主要用于对session内对象的监听, 与上面的6中监听器不同的是,这两种监听器虽然需要实现对应的Listener接口,但不用在web.xml中配置。

Tomcat项目部署方式相关推荐

  1. Tomcat 项目部署方式

    方法一: 在Tomcat中的Conf目录中,在Server.Xml中的,<Host/>节点中添加: <Context Path="/Hello"Docbase=& ...

  2. Tomcat下web项目部署方式

    静态部署 直接将web项目文件拷贝到webapps目录下 直接将web项目下WebRoot目录下所有内容复制到tomcat安装目录下的webapps目录,这个webapps目录是Tomcat目录的默认 ...

  3. JavaWeb开发---B/S和C/S模式 tomcat服务器 Tomcat项目部署和发布 静态网页和动态网页 tomcat对web项目的目录要求 使用idea开发工具创建web项目 设置默认首页

    目录 1. B/S和C/S模式 1.1 C/S模式 1.2 B/S模式 1.3 B/S和C/S区别 2.服务器 3.web 服务器 3.1.IIS 3.2.Tomcat 3.3.Zeus 3.4.Ng ...

  4. 解释Eclipse下Tomcat项目部署路径问题(.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps)

    解释Eclipse下Tomcat项目部署路径问题(.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps) 1.配置eclipse ...

  5. 解释Eclipse下Tomcat项目部署路径问题(.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps)...

    1,当在eclipse中启动服务器出现以下问题时: 解释Eclipse下Tomcat项目部署路径问题(.metadata\.plugins\org.eclipse.wst.server.core\tm ...

  6. Tomcat的部署方式

    tomcat常见三种部署方式 1.1 在部署目录部署war包 这种方式部署最简单,也是在最常用的一种方式,如:在tomcat的server.xml文件中有如下配置: <Host name=&qu ...

  7. kubernetes(七)项目部署方式:蓝绿部署,灰度发布/金丝雀发布,滚动更新

    在项目迭代的过程中,不可避免需要上线进行部署. 目前项目部署的方式有很多种:像重新部署,蓝绿部署,金丝雀部署(灰度部署),滚动更新.本文简单介绍下这些常见的部署方案以及使用k8s怎么进行对应部署 重新 ...

  8. idea tomcat项目部署失败_阿里云centons安装Jdk和tomcat,mysql以及项目部署(阿里云入门)...

    买了个阿里云ECS服务器,自己摸索安装,适合小白看看,教程该做的都有列出来. 1.购买服务器 2.查看阿里云管理 点击实例进入 修改密码可以点击管理--出现的页面点击更多---重置实例密码 3.下载x ...

  9. tomcat项目部署到本地局域网访问

    再本地局域网访问之前,必须确保自己的项目已经能在tomcat中部署运行 设置本地局域网的核心步骤 在cmd中输入ipconfig,查看wlan的IP地址(一定是wlan的),以我的192.168.1. ...

最新文章

  1. 推荐一些网站给大家[转]
  2. Mac上因磁盘格式导致gulp无限刷新问题
  3. TensorFlow学习笔记之二(使用TensorFlow实现神经网络)
  4. 使用Exchange 的SMTP连接器路由/中继邮件的设定图例
  5. 工作281:时间戳转换问题
  6. oracle表中一个字段内容导出到磁盘上
  7. 华为 EC169 3G上网卡在MacPro中的使用
  8. zookeeper 客户端 zkCli.sh 的使用 查看节点
  9. 网格搜索、随机搜索和贝叶斯调参总结与python代码实践
  10. 输出调节2.3——内模控制器设计
  11. 浅谈马尔可夫预测方法
  12. 转载nbsp;图像阈值选取
  13. MT5 EA交易期货-获得持仓
  14. 人脸表情数据集-fer2013
  15. 什么手机抢票软件安全靠谱
  16. 【原创】为什么要用规则引擎?
  17. 特征工程之特征分箱(决策树分箱、卡方分箱、bestks以及评价标准WOE和IV)
  18. Vscode同步扩展插件
  19. 微信撤回的消息找不到?你OUT了,看看python程序怎么找回!
  20. 红帽首席架构师:CentOS Stream 并非要革了 CentOS 的“命”

热门文章

  1. 知识分享!Wi-Fi HaLow 和传统 Wi-Fi 的区别-道合顺大数据Infinigo
  2. dakai微信小程序 ios_苹果6s微信小程序进不去 苹果小程序怎么弄出来
  3. 干货!实战!你领取的优惠券都是怎么样实现的?
  4. ubuntu 挂载文件后,文件权限属于root,只能读不能写解决办法
  5. 电脑接两个屏幕,其中一个偶尔闪灭
  6. 留下来慢慢感悟(关于session和cookie)
  7. 关于mysql group by后取指定的数据留下来
  8. 41岁了,该何去何从?
  9. 2021Java最新技术发展趋势
  10. java 如何获取设备号_java – 如何获取android设备ID?