精华内容
下载资源
问答
  • 我的maven项目之前还能运行,今天启动后就一直在编译 一直到启动时间结束,谁遇到过这情况 ,怎么解决?
  • 写好了javaweb项目后,之前我一直按照网上的方式尝试了很久,也用了一段时间intellij idea ,现在总结一下部署的方法....简单来说就是一个工具包,只要把项目在这里包装就能够放入Tomcat运行. 3. 创建...

    更多IntelliJ IDEA 的操作请参考:https://blog.csdn.net/qq_33442160
    写好了javaweb项目后,之前我一直按照网上的方式尝试了很久,也用了一段时间intellij idea ,现在总结一下部署的方法.
    1. 查看facets是否配置正确
    这里写图片描述
    2. Artifacts到底是什么?
    这里写图片描述
    Artifacts是一种用于装载项目资产以便于测试,部署,或者分布式软件的解决方案。简单来说就是一个工具包,只要把项目在这里包装就能够放入Tomcat去运行.
    3. 创建war包(war包就是web项目打包后的后缀名,比如普通java项目打包后的后缀名是jar包.)
    这里写图片描述
    标注1:使用该方式创建的war包是解压好的,也就是可以进行热部署(热部署就是实时更新修改的java代码或者jsp页面等等)的项目,建议开发时选择这个Exploded的方式打包.
    标注2:使用Archive打包的web项目时压缩包,后缀名为.war的压缩包,不支持热部署.
    标注3:选择from Modules,从模块中选择要打包的项目.

    此时打包已经完成:
    这里写图片描述
    接着就可以开始配置Tomcat,当然如果你是导入的项目可能需要配置输出目录和jdk,最重要的是配置好web.xml文件和web根目录.
    4. 配置Tomcat并部署项目到Tomcat中
    这里写图片描述
    点击添加Tomcat服务器.
    这里写图片描述
    依次点击添加Tomcat本地服务器.
    这里写图片描述
    如果没有下载Tomcat需要自己下载,去官网下载就可以了,网页翻译很方便,都看得懂.
    这里写图片描述
    注意:选择Tomcat安装目录即可,不用选择到bin目录里面去.
    这里写图片描述
    这里有一个快速修复,可以快速部署项目,但是先不要点击.
    这里写图片描述
    看到这里应该明白为什么要使用Artifacts了吧,Artifacts可以把项目包装成war包
    部署后的效果:
    这里写图片描述
    当然也可以选择Artifacts下面的按钮(External Source)进行导入,如图:
    这里写图片描述
    此时你的整个web项目部署已经完成,可能会疑问为什么在Tomcat的webapps目录里面为什么找不到我刚部署的项目可以参考文章:https://blog.csdn.net/qq_33442160/article/details/81347319
    5. 项目虽然部署完成了,点击run按钮就可以启动服务器了,但是还可以根据需要进行热部署,我看了网上很多关于热部署的方式,但是都没有将全面或者是方法不可行.
    5.1 首先确保三件事情:①:确保勾选了这两个选项这里写图片描述
    ②确保你的war包后缀名有加上exploded.
    这里写图片描述
    ③确保选择了图片上的按钮:
    这里写图片描述
    标注1:这里写图片描述这里的选项与Tomcat服务器的选项相同.
    这里写图片描述
    On frame detectivation,会监测窗口,idea窗口发生切换则自动更新文件.尽管intellij idea 的说明是切换窗口时更新文件,但还是需要一点时间,速度明显比eclipse的热部署快很多.
    6. 项目路径解释
    这里写图片描述
    刚刚开始使用intellij idea时还不懂这个配置,启动项目后一直按照原来的方式(本地地址+项目名称)去打开项目,但是一直报错404.
    默认设置是 / ,意思是你的项目根路径为localhost:8080/ , 但是这个不是Tomcat的主页吗?实际上Tomcat根本没有加载这个ROOT项目(Tomcat的主页项目名称),只加载了一个自己部署的项目,如果不习惯可以自己加上项目名称,比如:
    这里写图片描述

    展开全文
  • 一直搜索寻找idea如何配置tomcat以及部署,全部都是换汤不换药的千篇一律的帖子,完全没有讲为什么,导致我不知道为什么我的tomcat运行明明没报错,明明已经配置了artifacts了,却还是访问不了localhost:8080/...

    一直搜索寻找idea如何配置tomcat以及部署,全部都是换汤不换药的千篇一律的帖子,完全没有讲为什么,导致我不知道为什么我的tomcat运行明明没报错,明明已经配置了artifacts了,却还是访问不了localhost:8080/networkliterature,完全不明白war和war explode的区别……

    自己摸索了半天,想到最初项目之所以能在tomcat上运行,是因为将项目添加到tomcat的webapps目录下,然后加上受到帖子的提示,才知道配置artifacts的war explode时,实际上里面的Output Directory应该设置到tomcat的webapps下的我的工程,而Output Layout就是配置这个路径里面生成的所有文件。这样才能在tomcat的webapps下面生成我们项目的所有东西。正确配置如下:

    先把配置完自动生成的文件贴上来看看:

    说明:

    1、Output directory:我填写本地tomcat的webapps的路径+我的工程名(工程名这个可以随便写,不过访问时这个URL是项目的根目录的一部分,比如我这么写访问时应该是localhost:8080/networkliterature/index.jsp)

    2、Output Layout:真正生成到上面Output directory所配置的目录下的所有文件内容,需要包含上图列出的三个内容。刚开始不配置的时候是这样的:

    可以看到Output Layout下啥也没有。接着点击红框框起来的那个小按钮手动创建目录WEB-INF、子目录classes,子目录lib。创建好后就是这样的:

    两个子文件夹都是空的。然后将右边的Available Elements的元素分别添加进来,这个元素的作用就是列出你可以被添加进生成目录的文件,里面有一堆maven包,有项目中webapps目录下的文件资源,有项目编译输出的class文件。可以右键选择Navigate查看你是否有配置这些,像这样:

    比如我点击模块'networkliterature' compile output的Navigate可以看到这个Project Structure自动跳转到Modules,如下图所示:

    这个模块我之前已经配置好输出文件的路径(即class文件的路径,maven项目得配置到“项目\target\classes”和"项目\target\test-classes"下了,而不能配置到out下)。其实模块'networkliterature' compile output的意思就是找到你项目编译后所有生成的class文件,而它正是通过我们配置的输出文件路径去找到所有的class文件。换言之,这里的Modules的输出文件路径配置对了,这个元素就能被我们拿来使用。

    所以我们把这个元素模块'networkliterature' compile output拖到classes文件夹下,像这样:

    同理,我们将Available Element里面所有maven帮我们下载好的jar包拖到lib目录下(可以一个个拖,也可以全选右键“Put into /WEB-INF/lib”),像这样:

    lib搞定之后还差最后一个Web相关资源。直接将右边的Web facet resources拖到WEB-INF的目录下,如下图所示:

    可以看到是有点问题的,我们需要手动修改,将‘webapp’ directory contents放到根目录的WEB-INF下,这时会有一个提示如下图所示,不理它就是删。

    点击yes后就是这样了(自动删除了WEB-INF和下面的文件web.xml):

    这样就配置完成了。

    不过有一点要注意,这个‘webapp’ directory contents是我们在项目里配置的webapps文件夹下的东西,里面就是放各种jsp等页面资源+web.xml:

    本来这里应该得有个WEB-INF,不过因为我们配置war explode时就是手动将WEB-INF创建出来,所以这里只需要放各种页面资源+web.xml。

    这里位置就配置完了,运行启动tomcat之后,可以看到在tomcat的webapps下面看到生成的文件,上面已经贴过一遍了,这次再贴一遍:

    稍微说明一下:中间那张图可以看到,它多帮我们生成了一个文件夹META-INF,里面有个MANIFEST.MF文件,这是它自动帮我们生成的,我们不需要手动添加。而同样是中间那张图,有个index.jsp文件,那个文件是我为了方便测试helloworld程序自己拖进去的,上述并且没有配置这个文件。实际开发那些jsp文件都放在WEB-INF里面即可,无需理会这个。

    URL访问“localhost:8080/networkliterature/index.jsp”,可以看到访问成功了:

    终于……困扰我三四天的bug……解决了7_7

    总结:

    一直没办法解决这个Bug,首先是产生这个Bug的原因可能有很多,其次网上找的帖子都是只有表象没有实质,都不明白为什么。实在找不到解决办法的时候,就从最本质的分析出发:比如我这里一直访问不到tomcat的我的这个项目,那么可以用排除法,能访问到tomcat其他项目吗?比如tomcat自带的项目examples吗?一般访问项目的时候都是localhost:8080/项目名,比如:

    可以看到是可以访问的,而且tomcat也没报错,说明是项目的部署出了问题。在网上找了很多部署的文章都不能解决我的问题后,我开始思考脱离IDE最本质的部署到tomcat的方法是什么?然后看到tomcat自带项目的examples的目录结构,模仿着将artifact配置了出来。怎么模仿的,就是一边试着将右边的Available Element元素拖过来试,一边看生成的文件是否正确,试了四五遍之后就摸索出来了,当然其中也有借鉴一些帖子。

    很久没有遇到这种棘手的bug了,感觉归根到底还是对tomcat的部署本质,IDEA的部署本质了解的不够透彻。所以以后得花时间看看IDEA给的官方文档,以及巩固下JDK的基础知识。路漫漫其修远兮,慢慢来吧。

    展开全文
  • 请问tomcat的问题

    2011-06-01 11:07:00
    请问什么是tomcat,我也找了一些资料说是容器,但为什么要使用这个容器,我的web程序不直接运行为什么一直只知道使用,还没找到答案,希望给个答案
  • 一直搜索寻找idea如何配置tomcat以及部署,全部都是换汤不换药的千篇一律的帖子,完全没有讲为什么,导致我不知道为什么我的tomcat运行明明没报错,明明已经配置了artifacts了,却还是访问不了localhost:8080/...

    这个问题困扰了我三四天了。

    一直搜索寻找idea如何配置tomcat以及部署,全部都是换汤不换药的千篇一律的帖子,完全没有讲为什么,导致我不知道为什么我的tomcat运行明明没报错,明明已经配置了artifacts了,却还是访问不了localhost:8080/networkliterature,完全不明白war和war explode的区别……

    自己摸索了半天,想到最初项目之所以能在tomcat上运行,是因为将项目添加到tomcat的webapps目录下,然后加上受到帖子的提示,才知道配置artifacts的war explode时,实际上里面的Output Directory应该设置到tomcat的webapps下的我的工程,而Output Layout就是配置这个路径里面生成的所有文件。这样才能在tomcat的webapps下面生成我们项目的所有东西。正确配置如下:

    先把配置完自动生成的文件贴上来看看:

    说明:

    1、Output directory:我填写本地tomcat的webapps的路径+我的工程名(工程名这个可以随便写,不过访问时这个URL是项目的根目录的一部分,比如我这么写访问时应该是localhost:8080/networkliterature/index.jsp)

    2、Output Layout:真正生成到上面Output directory所配置的目录下的所有文件内容,需要包含上图列出的三个内容。刚开始不配置的时候是这样的:

    可以看到Output Layout下啥也没有。接着点击红框框起来的那个小按钮手动创建目录WEB-INF、子目录classes,子目录lib。创建好后就是这样的:

    两个子文件夹都是空的。然后将右边的Available Elements的元素分别添加进来,这个元素的作用就是列出你可以被添加进生成目录的文件,里面有一堆maven包,有项目中webapps目录下的文件资源,有项目编译输出的class文件。可以右键选择Navigate查看你是否有配置这些,像这样:

    比如我点击模块'networkliterature' compile output的Navigate可以看到这个Project Structure自动跳转到Modules,如下图所示:

    这个模块我之前已经配置好输出文件的路径(即class文件的路径,maven项目得配置到“项目\target\classes”和"项目\target\test-classes"下了,而不能配置到out下)。其实模块'networkliterature' compile output的意思就是找到你项目编译后所有生成的class文件,而它正是通过我们配置的输出文件路径去找到所有的class文件。换言之,这里的Modules的输出文件路径配置对了,这个元素就能被我们拿来使用。

    所以我们把这个元素模块'networkliterature' compile output拖到classes文件夹下,像这样:

    同理,我们将Available Element里面所有maven帮我们下载好的jar包拖到lib目录下(可以一个个拖,也可以全选右键“Put into /WEB-INF/lib”),像这样:

    lib搞定之后还差最后一个Web相关资源。直接将右边的Web facet resources拖到WEB-INF的目录下,如下图所示:

    可以看到是有点问题的,我们需要手动修改,将‘webapp’ directory contents放到根目录的WEB-INF下,这时会有一个提示如下图所示,不理它就是删。

    点击yes后就是这样了(自动删除了WEB-INF和下面的文件web.xml):

    这样就配置完成了。

    不过有一点要注意,这个‘webapp’ directory contents是我们在项目里配置的webapps文件夹下的东西,里面就是放各种jsp等页面资源+web.xml:

    本来这里应该得有个WEB-INF,不过因为我们配置war explode时就是手动将WEB-INF创建出来,所以这里只需要放各种页面资源+web.xml。

    这里位置就配置完了,运行启动tomcat之后,可以看到在tomcat的webapps下面看到生成的文件,上面已经贴过一遍了,这次再贴一遍:

    稍微说明一下:中间那张图可以看到,它多帮我们生成了一个文件夹META-INF,里面有个MANIFEST.MF文件,这是它自动帮我们生成的,我们不需要手动添加。而同样是中间那张图,有个index.jsp文件,那个文件是我为了方便测试helloworld程序自己拖进去的,上述并且没有配置这个文件。实际开发那些jsp文件都放在WEB-INF里面即可,无需理会这个。

    URL访问“localhost:8080/networkliterature/index.jsp”,可以看到访问成功了:

    终于……困扰我三四天的bug……解决了7_7

    总结:

    一直没办法解决这个Bug,首先是产生这个Bug的原因可能有很多,其次网上找的帖子都是只有表象没有实质,都不明白为什么。实在找不到解决办法的时候,就从最本质的分析出发:比如我这里一直访问不到tomcat的我的这个项目,那么可以用排除法,能访问到tomcat其他项目吗?比如tomcat自带的项目examples吗?一般访问项目的时候都是localhost:8080/项目名,比如:

    可以看到是可以访问的,而且tomcat也没报错,说明是项目的部署出了问题。在网上找了很多部署的文章都不能解决我的问题后,我开始思考脱离IDE最本质的部署到tomcat的方法是什么?然后看到tomcat自带项目的examples的目录结构,模仿着将artifact配置了出来。怎么模仿的,就是一边试着将右边的Available Element元素拖过来试,一边看生成的文件是否正确,试了四五遍之后就摸索出来了,当然其中也有借鉴一些帖子。

    很久没有遇到这种棘手的bug了,感觉归根到底还是对tomcat的部署本质,IDEA的部署本质了解的不够透彻。所以以后得花时间看看IDEA给的官方文档,以及巩固下JDK的基础知识。路漫漫其修远兮,慢慢来吧。

    展开全文
  • VM和TOMCAT的理解

    2017-05-16 20:52:48
    JVM和TOMCAT的理解一直没有想过这个问题,究竟TOMCAT是什么,算不算JVM?...那么为什么需要两个容器呢?如果两方都是纯JAVA应用,没有web的需求,那么之间可以通过JVM的方式进行调用。 如果是web应用呢,打交道就

    JVM和TOMCAT的理解

    一直没有想过这个问题,究竟TOMCAT是什么,算不算JVM?

    首先JVM肯定都能明白,相当于我们的程序运行的容器,负责加载运行class文件。Tomcat呢? 也是一个容器,不同于JVM的来说,它是一个web容器即servlet的容器。那么为什么需要两个容器呢?

    如果两方都是纯JAVA应用,没有web的需求,那么之间可以通过JVM的方式进行调用。
    如果是web应用呢,打交道就从Java与Java之间,变成了浏览器与Java应用。HotSpot的JVM是没有提供这个功能的,所以就由tomcat来进行url的识别与处理。

    在wiki上的定义:

    A web container (also known as a servlet container;[1] and compare "webtainer"[2]) is 
    the component of a web server that interacts with Java servlets. A web container is 
    responsible for managing the lifecycle of servlets, mapping a URL to a particular 
    servlet and ensuring that the URL requester has the correct access-rights.
    
    A web container handles requests to servlets, JavaServer Pages (JSP) files, and other 
    types of files that include server-side code. The Web container creates servlet 
    instances, loads and unloads servlets, creates and manages request and response 
    objects, and performs other servlet-management tasks.
    
    A web container implements the web component contract of the Java EE architecture, 
    specifying a runtime environment for web components that includes security, 
    concurrency, lifecycle management, transaction, deployment, and other services.

    一个web容器即servlet容器是一个与java servlet打交道的web服务器。一个web容器负责管理servlet的声明周期,映射URL到指定的servlet,确保url请求具有正确的权限。

    web容器用来处理请求到servlet和jsp和其他服务端的文件。web容器创建servlet实例,加载和卸载servlet, 创建管理请求和返回对象,还可以执行其他的servlet管理任务。

    web容器需要实现Java EE架构规定的架构,指定web组件运行的环境,包括安全、并发、声明周期管理、事务、部署和其他服务。

    这里插一句tomcat的load classes的过程

    • Bootstrap 加载jvm提供的$JAVA_HOME/jre/lib/ext下面的jar
    • System 加载tomcat本身的jar包
      • $CATALINA_HOME/bin/bootstrap.jar 使用main方法启动tomcat server
      • CATALINABASE/bin/tomcatjuli.jarorCATALINA_HOME/bin/tomcat-juli.jar 加载tomcat默认的日志jar
      • $CATALINA_HOME/bin/commons-daemon.jar 加载daemon jar
    • Common 加载tomcat通用的jar
      • unpacked classes and resources in $CATALINA_BASE/lib
      • JAR files in $CATALINA_BASE/lib
      • unpacked classes and resources in $CATALINA_HOME/lib
      • JAR files in $CATALINA_HOME/lib
    • WebappX 为每个webapp分配classloader,加载每个web应用

    从这里能看得到出来,tomcat是基于java的一个应用,提供一个中间件管理系统,tomcat是程序,jvm是平台。

    展开全文
  • 运行环境:Ubantu 14. Tomcat7 声明:此服务器公司测试服务器,因为...项目在本地运行没有问题,但是发布到服务器就一直报错,不启动项目;下面是报错 The web application [] registered the JDBC drive
  • 但不知为什么拿出来运行,查询就报错,现在我推断很有可能是就是页面标签的问题。我下面贴上来一个查询后分页的页面。大家再帮忙看看哪里的标签有问题? <%@ page language="java" pageEncoding=...
  • 项目启动一直卡在那一行不走了,Tomcat重启了几次也不行,百度说可能是数据库配置,可是我的配置的没有问题,用jdbc测试也连上,最后就看控制台最后一行的信息,看找到什么,然后,果然!!!!我配置的url...
  • quartz程序为什么能一直运行不退出? 我们为了让程序保持不退出,一般使用Thread.sleep方法,或者使用一个while无限循环,但是总感觉不太优雅。参考springboot和tomcat的源码写了一个小工具,可以优雅地实现...
  • 先不讲java虚拟机,我们从最最基本的出发。 当我开始学习java之初,老是听我老师吹牛逼说java跨...2、为什么tomcat能在各个平台运行,靠的是啥,为啥运行之后访问的东西都是一样的,不会有linux和window的区别...
  • 我研究到现在,发现了很诡异的地方……现在增的功能也实现了,我把roleAction类里的add方法名字换成save,然后jsp里那个也换了jsp的form里action="save",注意,这里没有后缀【我为什么强调后缀是因为这个很诡异的...
  • IP与域名

    2016-09-06 14:08:11
    建站前一直不填清楚IP与域名绑定到底是怎么一回事,今天灵光一闪,有点明白了,之前一直郁闷的是为什么当IP与域名绑定的时候不输入端口号呢?当我的网站运行的时候,如javaweb网站运行时放在tomcat容器下,不指定...
  • java文件我用tomcat加载的时候没问题为什么还出现这个错误呢 web.xml中 url-pattern :/servlet/UploadFile servlet-name: UploadFile flex的代码是这样的 layout="vertical" horizontalAlign...
  • 之前一直没有搞懂这个问题,直到最近开始学习JVM,学到类加载器这里,我好像理解了当时为什么错了。首先,ClassLoader.getSystemClassLoader()拿到的是应用程序类加载器,也叫系统类加载器,然而在Tomcat容器中,...
  • 在eclipse上运行项目的时候,不知道为什么就不自动编译了, 改着改着,把tomcat8删除,重新加载项目的时候就报了这个错误, 问题分析: 报错说版本不支持,我也没改过版本,一直是jdk1.8,所以推断不是这个原因...
  • 这个问题可能大部分用过hibernate的开发人员都遇到过,即“tomcat运行一段时间,比如一晚上后,发现原来打开的网页现在都出现了问题”。探其究竟,其实是数据库访问失败。这又是为什么呢?原来mysql数据库默认的一...
  • 就像tomcat一样,从启动之后就一直处于运行状态,只要有请求事件过来,就会进行处理 二、flink快速体验 当前scala版本2.11.8 如果在这个版本下,使用scala_2.12和1.10.1版本的话会报错的哦: <dependency>...
  • 1.1.6 从innodb的索引结构分析,为什么索引的 key 长度不太长 1.1.7 MySQL的数据如何恢复到任意时间点? 1.1.8 NFS 和 SMB 是最常见的两种 NAS(Network Attached Storage)协议,当把一个文件系统同时通过 ...
  • 为什么要用微服务? 单体架构下的所有代码模块都耦合在一起,代码量大,维护困难,想要更新一个模块的代码,也可能会影响其他模块,不很好的定制化代码。微服务中可以有java编写、有Python编写的,他们都是靠...
  • java 面试题 总结

    2009-09-16 08:45:34
    为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...
  • 为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...
  • oracle10G 提示找不到SID

    2009-07-07 11:36:32
    # tnsnames.ora Network ...特别是最后一直有关第的ROWEN 只是这分不知道该派给谁好。 分拿出来总得花吧。不花对不起大家———— ROWEN您就受累接着吧。 再次感谢关注和帮助我的朋友。感谢!
  • iuhyiuhkjh908u0980

    2009-12-31 19:13:36
    它跟每日构建的区别就在于代码提交频率更高(一般一个小时),构建的频率也更高,这样做的目的就是为了快速反馈,使得BUG越早被发现,并以邮件或者消息(甚至短信)的形式快速反馈给开发人员,从而快速解决问题...
  • 但如果并发的数量很多,而且每个线程都是执行很短的时间便结束了,那样频繁的创建线程和销毁进程会大大的降低系统运行的效率。线程池正是为了解决多线程效率低的问题而产生的,他使得线程可以被复用,就是线程执行...
  • COLA :根据我的了解来看,很多公司的项目都是基于 COLA 进行开发的,相比于其他快速开发脚手架,COLA 并不提供什么已经开发好的功能,它提供的主要是一个干净的架构,然后你可以在此基础上进行开发。通过一行命令就...
  • 外文翻译 stus MVC

    2010-05-28 15:02:31
    1:外文原文 Struts——an open-source MVC implementation This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology....
  • 网上购物系统

    2012-12-18 17:53:18
    该事件不对所购买的商品数量的更改而更改,只能通过确认更改来实现。 </p><br /> <p>目</b><b normal">  </b><b normal">录</b><b normal"></b></p> 第一章 系统配置... 3 一、运行环境... 3 二、...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

tomcat为什么能一直运行