Linux服务器上的tomcat中部署web项目
首先了解一下下面几个概念,讲得不太准确:
1、JVM
JVM是class以及jar(实际上就是很多个class压缩在一起)的运行环境,特征就是java和javaw命令,通过这两个命令,你可以执行class和jar文件。你可以通过-classpath参数指定你需要加载的jar文件
2、JDK
JDK就是JAVA的命令行开发环境,内置了JVM,特征就是javac命令,这个命令允许你将.java源文件批量或者单个编译成.class文件,从而可以通过JVM的java命令执行。在编译时你可以通过-classpath参数指定你的源代码依赖的jar文件。
3、Tomcat等JEE中间件
JEE中间件主要是为了让JAVA程序能够提供http服务、向客户展现html及相关资源而准备的一个运行环境,通常已经包含了JDK(或者像 tomcat一样需要配置JDK所在路径).这个运行环境的特征是能够让你部署一个war包,运行环境能够自动加载WEB-INF/classes下 的.class文件和WEB-INF/lib下jar文件。当用户通过浏览器访问中间件中你的war包所部署的路径时,中间件能够按照J2EE标准调用你 的war包中的class和jsp页面,并将执行结果返回给浏览器。 在这种情况下你只需要将你的.java文件编译好放到WEB-INF/classes目录下。
然后说说纯文本JAVA WEB开发,有这么几种类型:
1、纯文本只有JSP
如果项目中只有jsp页面,就很稀松平常了,你只需要在tomcat的webapps下新建一个目录,然后在里面新建.jsp文件,就可以通过类似于 http://localhost:8080/app/a.jsp的方式执行这个jsp文件了。早期的JAVA WEB项目都差不多是这么干的,那时候IDE的用处确实不大。别的技术像ASP和PHP之类十几年了一直是用这种纯文本的方式来编写代码,效率和有IDE 没太大差别。
2、除了JSP还有辅助JAVA类
如果除了JSP以外,你还需要一些JAVA类来辅助JSP页面,这时候你必须手工新建.java文件,然后用通过文本编辑器(记事本/vi/UE等)打开 他,往里面手工写代码。你将代码写完后,还需要将这个.java文件编译成.class,然后才能放到WEB-INF/classes下执行,
有两种方式完成编译动作:
方式一:JDK+构建工具(ANT或者MAVEN),通过配置ANT调用JDK中的javac命令将你的JAVA代码编译成class并放置到你的WEB-INF/classes目录下
方式二:ANT实际上也是将你的配置转换成javac命令中的各种参数,所以你也可以直接在命令行输出javac,然后javac就会提示你需要提供什么样的参数以及各种参数有什么用途,你可以根据提示自己调用javac编译.java文件成.class文件。
两种方式效率都有点低,所以你还需要有一个.bat(或者.sh)批处理文件来帮助你每隔几十秒就自动编译一下指定目录下的.java文件。
你可能需要写的辅助JAVA类有:
一、全局性的ServletFilter(例如用于用户权限检查)
二、复杂输出的Servlet(jsp不适合用来动态向浏览器提供图片等资源,这时候写Servlet)
三、在JSP中使用的Tag类,以减少JSP中大量的<%%>代码。
这种类不会很多,一般项目能有二三十个就差不多了,所以最初写辅助类的痛苦时期过去以后,开发效率就和使用IDE没什么区别了
3、除了JSP还有大量JAVA类
你的系统比较庞大了,需要一些框架性的东西来进行总体约束,然后在按照框架的要求来编写大量的JAVA类,通过这些JAVA类来完成浏览器端的请求。
这时候你的系统状态已经比较类型与SSH这种形态了,每个页面都会有对应的Action/Controller,以及FormBean/Model,或者还有专门的Service/BL类和DAO类。
这样你的系统中就会有大量的.java文件需要编译成.class,而且要引用的jar数量也显著增加,这时候你作为一个没有IDE的人,痛苦就要来了:
大量的时间花在等待编译上了,无论是使用构建工具的增量编译功能还是自己写一个更强大的批处理文件来扫描改动过的类,每次编译都需要一点时间,并且都不是非常可靠。特别是“减量编译”通常都支持不好,可能会有潜在的错误。
如果每次都使用全部重新编译以得到可靠的编译结果,那么最好的做法是让你每个JAVA类都一次写完一次编译成功,如果多出几个错误或者多修改几次,你会发现编译用的时间就显著大于你写代码的时间。
这种情况下纯文本和IDE的开发效率会有显著的区别。
如果我必须在这种痛苦的纯文本条件下工作,我会先写一个JAVA类,让这个JAVA类单独开一个进程运行,这个进程会自动扫描相应目录下的java文件增/改/删,
然后调用sun.tools.javac.Main类来进行编译,如果只是新增和修改则只单独编译几个类,如果有删除则全部重新编译。
那么Eclipse做了些什么?
1、Eclipse提供了WEB项目工程向导,帮助你快速创建项目
2、Eclipse将你的WEB-INF/lib下的jar文件管理起来,并对其中的class类进行了索引,以便于你快速查看相关类的位置、继承关系、引用关系。
3、Eclipse提供一个完善的增量编译器,所写即所得。Eclipse当年能够胜出的一个重要原因就在他的编译器,Eclipse的JDT实现了自己 的编译器(因此Eclipse甚至都不需要JDK,只要有JVM就可以了),能够快速、增量地将你对代码的修改反映到class文件上。这是当时的 JBuilder望尘莫及的,当时每次改完类都得重新编译一下,那个痛苦呀,当时我在公司引进Eclipse的时候,两个月之内大家就全部抛弃 JBuilder X了(当时花了钱买了正版)。
4、提供了完善的调试功能,基于IDE的调试效率会远高于命令行调试。
5、提供了语法加亮、语法提示、中间件管理等辅助工具。
1. 首先建一个文件夹作为工程名称,比如Hello好了,
2. 在Hello下建立WEB-INF文件夹。
3. 在WEB-INF文件夹下面建lib,classes两个文件夹,还有web.xml文件
4. 编辑web.xml的内容,有能力的,直接徒手写出来,不怕也就一个xml而已,请配welcome file为index.jsp。
5. 在Hello下新建一个index.jsp,编辑内容。
把Hello整个拷贝到tomcat的webapps下,启动tomcat,一个最简但的web项目就好了。
编写java类,你懂的,不多说了。假设我们用notepad创建一个HelloServlet.java,有能力的,直接徒手用记事本写出Servlet来。
编译java类,javac懂吧?如果类有多层的包结构,可以手动的在classes下创建包结构,然后把javac得到的class文件拷进去嘛。
javac -d . HelloServlet.java
该命令可以自动生成含有包结构的class文件,拷贝到classes文件夹就好了。
然后配置web.xml中的servlet。
这样,如果类很多的话,很累吧?工作效率很低?
请用Ant吧,写个合适的build.xml然后ant一下,真方便啊。
Linux服务器上的tomcat中部署web项目的更多相关文章
- 在Tomcat中部署Web项目的操作方法,maven项目在Tomcat里登录首页报404
maven项目在Tomcat里登录首页报404, 解决:编辑conf/server.xml进行配置<Host>里的<Context>标签里的path. <Context ...
- 在Tomcat中部署web项目的三种方式
搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...
- Tomcat中部署WEB项目的四种方法
对Tomcat部署web应用的方式总结,常见的有以下四种: 1.[使用控制台部署] 访问Http://localhost:8080,并通过Tomcat Manager登录,进入部署界面即可. 2.[利 ...
- linux 环境下tomcat中部署jfinal项目
tomcat中部署jfinal项目 问题现象如下图 问题描述: 我在自己的windows7系统上tomcat下面跑这个项目没有任何问题吗,但是当我把项目上传到linux服务器上的tomcatwebap ...
- Tomcat 中部署 web 应用 ---- Dubbo 服务消费者 Web 应用 war 包的部署
使用Maven构建Dubbo服务的可执行jar包 Dubbo服务的运行方式: 1.使用Servlet容器运行(Tomcat.Jetty等)----不可取 缺点:增加复杂性(端口.管理) 浪费资源(内存 ...
- Tomcat中部署web应用的三种方式
Tomcat中部署web应用的三种方式(静态部署) 第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...
- 在Tomcat下部署web项目
每个web项目可以以两种方式存在,如联合风控项目,Urc.war,另一中是Urc解压后的目录结构.而tomcat目录下的\webapps\下则均是要部署的web项目解压后的文件夹,启动tomcat后, ...
- Tomcat手动部署Web项目详细步骤
阅读须知:文章基于Tomcat8,其它版本若有差异,请自行辨别.本文为博主原创文章,转载请附原文链接. 不借助任何IDE,这里介绍在Tomcat中手动部署web项目的三种方式: 1.部署解包的weba ...
- eclipse中部署web项目
因为eclipse是免费的,所以很多企业都会选用eclipse作为开发工作,那么我们就需要熟练使用eclipse部署web项目. 第一步:选择window -> preferences ,选择s ...
随机推荐
- zabbix监控客户端本地网络的延时状态
配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加 Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本对服务器 ...
- 把数据库里面的stu表中的数据,导出到excel中
# 2.写代码实现,把我的数据库里面的stu表中的数据,导出到excel中 #编号 名字 性别 # 需求分析:# 1.连接好数据库,写好SQL,查到数据 [[1,'name1','男'],[1,'na ...
- [译] 通过 contentEditable 属性创建一个所见即所得的编辑器(富文本编辑器)
译者注 这只是一篇入门教程,介绍了一些基础知识,仅供参考,切不可因此觉得富文本编辑器很简单. 创建富文本编辑器是一个非常复杂的工程,需要考虑到方方面面,也有很多坑(请参考原文第一条评论). 为免误导大 ...
- windows小游戏之扫雷技巧
通过单击即可挖开方块.如果挖开的是地雷,则您输掉游戏. 如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷.
- MQTT--topic
1.topic 定阅与发布必须要有主题,只有当定阅了某个主题后,才能收到相应主题的payload,才能进行通信. 2. 主题层级分隔符—“/” 主题层级分隔符使得主题名结构化.如果存在分隔符,它将 ...
- Windows App开发之编辑文本与绘制图形
编辑文本及键盘输入 相信大家都会使用TextBox,但假设要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. ...
- J2EE之字符编码输出
1. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...
- JavaScript事件使用指南
事件流 事件流描述的是从页面中接收事件的顺序,IE和Netscape提出来差不多完全相反的事件流的概念,IE事件流是事件冒泡流,Netscape事件流是事件捕获流. 事件冒泡 IE的事件流叫做事件冒泡 ...
- 简洁方便的集合处理——Java 8 stream流
背景 java 8已经发行好几年了,前段时间java 12也已经问世,但平时的工作中,很多项目的环境还停留在java1.7中.而且java8的很多新特性都是革命性的,比如各种集合的优化.lambda表 ...
- junit测试时报No runnable methods错误的解决方法
1.因为你@Test时import的是@org.testng.annotations.Test所以会报错 解决方法:改为import org.junit.Test;就可以了