【JAVA】0 Tomcat

Apache HTTP Server
Apache Tomcat 可以认为是apache的扩展,但是可以独立于apache运行, Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器 
Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等) 

web.xml的修改是即使生效的 , 不用重启

Tomcat部署项目的多种方式(IDEA用的是第3种)
    常规的webapps下
        直接部署到${TOMCAT_HOME}/webapps下 //Tomcat安装目录${TOMCAT_HOME}
    外部部署
        //修改${TOMCAT_HOME}/conf/server.xml 在<Host>标签下添加web所在的目录指定path,如: 
        <Context path="/xx" docBase="D:\\workspace\\xx\\target\\xx" 
        reloadable="true" sessionCookiePath="/xx"sessionCookieName="yoursessionname"> </Context>
    ${TOMCAT_HOME}/conf下建工程目录镜像
        //在conf目录中,新建 Catalina\localhost目录,在该目录中新建一个xml文件,名字可以随意取,
        //只要和当前文件中的文件名不重复就行了,该xml文件的内容为: 
        <Context path="/xx" docBase="D:\\workspace\\xx\\target\\xx" debug="0" privileged="true"> </Context>


IDEA 在启动tomcat设置了两个变量!!!!后被tomcat读取了!!!


Using CATALINA_BASE:   "C:\Users\xxxxx\.IntelliJIdea2017.1\system\tomcat\Unnamed_jeesite"  //Tomcat的工作目录
//每个运行实例独占一个工作目录,但是共享同一个安装目录
//Tomcat每个运行实例需要使用自己的conf、logs、temp、webapps、work和shared目录,因此CATALINA_BASE就 指向这些目录。
Using CATALINA_HOME:   "E:\Work\TomcatIDEA\apache-tomcat-7.0.54"   //Tomcat的安装目录
//而其他目录主要包括了Tomcat的二进制文件和脚本,CATALINA_HOME就指向这些目录。

 
H:\Workspaces\MyEclipse 2016 CI\.metadata\.me_tcat7\webapps\
Tomcat-Java Web Server(servlet容器),不是企业版容器,不能运行EJB,JMS
http://localhost:8080  访问的是webapps目录下的ROOT项目

Tomcat的核心分为3个部分:
    Web容器---处理静态页面;
    catalina --- 一个servlet容器-----处理servlet;
    JSP容器,它就是把jsp页面翻译成一般的servlet。

手动部署到Tomcat
    复制整个web项目文件夹  到  Tomact目录/webapps目录下
    Tomcat目录/bin目录 下shutdown.bat关闭一下 再 startup.bat 开启
    试试访问http://localhost:8080/web项目名/某action,html  如果不行就去 服务 把Tomcat服务启动(重启)


--------------------------------------------------------------------------------
Tomcat启动顺序
    org.apache.catalina.startup.Bootstrap(假设command-> start)
    a)Catalina.setAwait(true);
    b)Catalina.load()
      initDirs() - >设置属性catalina.home等等  
      加载server.xml并使用digester进行解析                
      将System.out和System.err分配给SystemLogHandler类
    c)Catalina.start()
    HTTP执行适当的HTML输出错误代码             
    部署所有的webapps(webapps&conf / Catalina / localhost / *.xml)
    处理默认的web.xml(conf / web.xml), 然后处理应用程序web.xml(WEB-INF / web.xml)
    Engine中有一个后台线程在同步。如果上下文改变(war文件的时间戳,上下文xml文件,web.xml)则自动重新加载   
    d)Tomcat在HTTP端口上接收请求
    适配器解析并将所有内容与request,Cookie,上下文相关联
     调用JSP包装器(Jasper)这导致了JSP的实际编译。然后调用实际的servlet(由jsp编译而成)。
    e)调用servlet类


--------------------------------------------------------------------------------
WEB-INF是Java的web应用安全目录,只对服务端开放,对客户端是不可见的。所以我们可以把除首页(index.jsp)以外的页面都放在WEB-INF目录下,这样就无法通过URL直接访问页面了
    css,JavaScript和图片等资源文件不能放在WEB-INF下,必须放在webRoot(WebContent)目录下。访问时直接访问:<img alt="" src="image/1.jpg">  
    通过以下方法访问WEB-INF目录下的JSP页面:通过action转向(web.xml配置)访问(推荐)<a href="mylogin.action"></a>  


--------------------------------------------------------------------------------
web.xml执行流程:
    ---->index.jsp中的action="myServlet.do"方法是post
    ---->web.xml中<servlet>匹配地址/myServlet.do,相关Servlet实现类
    ---->相关Servlet实现类中dopost中调用doget方法
    ---->doget方法执行相关方法(跳转网页等等,要是用PrintWriter就不用新建一个jsp来跳转了)


--------------------------------------------------------------------------------
web.xml在  项目目录/webroot/WEB-INF/目录下
web.xml并不是一个Web的必要文件,没有web.xml,网站仍然是可以正常工作的。只不过网站的功能复杂起来后,web.xml的确有非常大用处,所以,默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件。
启动一个WEB项目时Tomcat首先会读取项目web.xml的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起
web.xml的加载顺序是: ServletContext -> <context-param>-> <listener> -> <filter> -> <servlet> -->spring
在Servlet 2.3中,顺序重要,<servlet>子元素必须出现在<servlet-mapping>子元素之前。在Servlet2.4中,顺序并不重要。
配置spring,必须需要<listener>如果在web.xml中不写<context-param>配置信息,默认的路径是/WEB-INF/applicationContext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml
web.xml没指定欢迎页的情况下,它默认先查找index.htm没有就找index.jsp


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值