发布3(tomcat的执行流程和各个文件夹的作用)

第一次出现这样的错误的时候,我很害怕,不知道是神马原因造成的这样的错误。后来问了同事,说是可能是因为tomcat缓存的问题。管它呢,死马当活马医吧!
因为是在linux环境下操作的,所以使用linux命令简单明了快捷神速,大大提高了工作效率!
第一步:先停止tomcat服务器。
可使用ps –ef | grep tomcat 命令来查看tomcat服务进程是否已停止。
在shell端输入service tomcat stop 命令停止tomcat 服务。
第二步:将系统缓存清除 即删除 tomcat/work 文件夹下的文件。
第三步:打开shell 输入 service tomcat start。

HTTP Status 500 -
________________________________________
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.io.FileNotFoundException: /usr/local/tomcat/work/Catalina/scm.3golden.com.cn/_/org/apache/jsp/front/warehousing/getWarehousing_jsp.java (Permission denied)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.<init>(FileOutputStream.java:179)
java.io.FileOutputStream.<init>(FileOutputStream.java:70)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:141)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102)
filters.SecurityFilter.doFilter(SecurityFilter.java:95)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.26 logs.
________________________________________
Apache Tomcat/5.5.26

好了,不仅要知其然,还要知其所以然哈!出现这种错误的原因是因为修改了应用之后,没有重启tomcat服务器,所以系统缓存里面存放的只是以前tomcat编译过的文件。解释一下编译的文件是怎么产生的哈,有必要先了解一下tomcat的执行流程哈。
tomcat的执行流程:
tomcat文件夹的作用

1.用户在浏览器中输入请求地址;

2.客户端通过浏览器将请求地址发送给WEB容器;

3.WEB容器根据请求地址找到*.jsp文件;

4.将*.jsp文件转换成*.java文件;

5.将*.java文件经过编译成*.class文件;

6.服务器执行*.class文件并将结果反馈给浏览器。


tomcat文件夹的作用

tomcat的主目录文件夹有以下几个:

1. bin:用于存放启动和关闭tomcat的可执行文件。

2. lib:里面存放需要的jar包。

3. conf:tomcat的各种配置文件,tomcat启动时需要读取的配置文件主要有:

server.xml,web.xml,tomcat-users.xml等等。服务器的修改都要从此目录中进行。

4. logs:日志文件,如果服务器出现错误,会自动记录。

5. server:服务器的管理程序。

6. webapps:所有的可执行的web项目都会放到此目录中。

7. work:tomcat把各种由jsp生成的servlet都放在了这个文件夹下,里面包含.java文件

和.class文件。



配置一个虚拟目录:

1.要配置一个虚拟目录必须有以下的目录结构:

WEB ROOT--->这是web根目录,可任意定义,一般的可执行.jsp文件都放在此文件夹中。

| WEB-INF ---> 虚拟目录必须有此文件夹,格式要求。

| web.xml 虚拟目录的配置文件。

2.虚拟目录中的web.xml文件可以在文件夹webapps->ROOT->WEB-INF->web.xml找到。

3.要想让tomcat启动时找到虚拟目录,需要在conf文件夹下的server.xml中进行配置。

<Context path="/demo" docBase="D:\xnml"/> 此句必须写在</host>之上;

Context:表示配置一个新的上下文;

path:浏览器的输入路径,注意必须有 “/”;

docBase:path路径对应着硬盘上的真实目录;xnml文件夹也是web根目录;

4.在conf文件夹中的web.xml文件中,ctrl+F 搜索list到

<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>

有的时候为false,改成true,意思是tomcat在加载时将目录列表功能打开,我们才可以访问虚

拟目录中的文件;

5.在D:\xnml下写个.jsp文件;

6.在浏览器中输入:http://localhost:8080/demo tomcat启动时会执行配置文件进而执行.jsp文

件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,Tomcat是默认的嵌入式Servlet容器。下面是Spring Boot与Tomcat执行流程: 1. Spring Boot启动:当您启动Spring Boot应用时,会触发Spring Boot的启动过程。 2. 创建Spring应用上下文:Spring Boot会创建一个Spring应用上下文,该上下文是Spring框架的核心容器,负责管理和组织各个Bean及其依赖关系。 3. 扫描和加载Bean:Spring Boot会扫描应用程序中的所有类,并加载它们作为Bean。这是通过@ComponentScan注解或@SpringBootApplication注解(包含@ComponentScan)来实现的。 4. 配置Tomcat:Spring Boot会自动配置嵌入式的Tomcat容器。这涉及到设置Tomcat的端口、上下文路径等配置信息。 5. 创建并启动Tomcat容器:使用配置信息,Spring Boot会创建一个Tomcat实例,并将应用程序的Servlet注册到Tomcat中。 6. 处理请求:一旦Tomcat容器启动成功,它将开始监听指定的端口,等待客户端请求。当收到请求时,Tomcat将根据URL将请求分派给相应的Servlet进行处理。 7. 调用Controller处理请求:在Servlet中,请求将被转发给Spring MVC框架。Spring MVC框架将根据请求的URL和映射规则,将请求分发给相应的Controller类进行处理。 8. 执行业务逻辑:Controller类将根据业务逻辑处理请求,并调用相应的服务类或数据访问层(DAO)来执行所需操作。 9. 返回响应:请求处理完成后,Controller将生成响应数据,并将其返回给Tomcat。 10. 响应发送给客户端:Tomcat将响应数据发送回客户端,完成请求-响应周期。 总的来说,Spring Boot的执行流程涵盖了Spring框架的启动、配置Tomcat、处理请求和返回响应等过程,将Web应用程序部署到嵌入式的Tomcat容器中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值