精华内容
下载资源
问答
  • 首先说明一下,eclipse将项目部署到tomcat中分为三类文件html、jsp、java,依次往下分析 1、html html在客户端显示,其缓存存在于浏览器,强制刷新可以解决问题,如若解决不了,接着分析java 2、java 众所周知...

    首先说明一下,eclipse将项目部署到tomcat中分为三类文件:html、jsp、java,依次往下分析

    1、html

    html在客户端显示,其缓存存在于浏览器,强制刷新可以解决问题,如若解决不了,接着分析java

    2、java

    众所周知,Java能够运行是依赖于jvm,首先部署到tomcat上的.class文件编译成字节码形式,jvm通过加载、连接、初始化三个步骤对该类初始化(类加载)在服务器端,而编译器上的代码修改之后,部署在tomcat上的.class文件并没有发生变化,这时候,jvm重新加载的类需要再次部署到tomcat上面才可以,也就是为什么重启tomcat之后,页面代码就可以发生改变的原因。

    3、jsp

    jsp页面刷新不发生改变,首先,所有的jsp部署到tomcat上,将jsp文件翻译成servlet来执行,也就是翻译成了java代码,jsp也是发生在服务器端,原因之一,和java代码类似,由于编译器的代码改掉了,而浏览器上的代码仍为之前的,这时候如果重启tomcat之后,仍然不行,还有一种情况就是部署上tomcat的代码改掉了,编译器上的代码也该掉了,而浏览器上的代码仍然没有变化,强制刷新页面也无法解决(刷新页面肯定不行,首先是客户端与服务器端不同的地方),这是由于部署在tomcat上的项目具有缓存(tomcat下的temp目录),把temp下的文件删除就可以了。

    这里多次强调了重启tomcat,还有一种机制是不需要重启tomcat的,就是热部署

    日后再做了解。

    展开全文
  • 最近我发现tomcat的webapps下有些不明的war文件,很多个,里面大致都是jsp文件,用于显示服务器的信息情况和可以直接查看修改文件,可以删除文件,也可以连接数据库的东西,因为我们有些项目应用被他们不规范的放在webapps...
  • 1.nginx完整配置文件 ``` #user nobody; worker_processes 4;...error_log logs/error.log info;...2.tomcat配置文件 ... pathname="conf/tomcat-users.xml" /> ...麻烦大神帮忙看下,配置哪里有问题,谢谢。
  • ",ZIP压缩文件里面的中文文件名也全部都是问号[/color],服务器的TOMCAT与本地是一样的,也设置了URIEncoding,唯一不同就是服务器是英文的操作系统,不知道这个没有什么影响? 折腾了三天了,重装TOMCAT多次...
  •  </p><br />问题补充:</strong><br />先感谢lovewhzlq的回复,您说的servlet版本低指的是哪里的低,tomcat lib里的,还是说我项目里的jar包版本低。我项目里没有servlet的jar包,因为tomcat提供。在myeclipse...
  • 大家都知道Liferay的内核框架由一组Velocity模板文件组成的,它们位于$LIFERAY_HOME\liferay-portal-6.1.0-ce-ga1\tomcat-7.0.23\webapps\ROOT\html\themes\classic\templates 目录下,今天同事问我,这些模板中的...

     大家都知道Liferay的内核框架由一组Velocity模板文件组成的,它们位于$LIFERAY_HOME\liferay-portal-6.1.0-ce-ga1\tomcat-7.0.23\webapps\ROOT\html\themes\classic\templates 目录下,今天有同事问我,这些模板中的变量在哪里定义的。

     

    为了解决这个问题,我们找到了portal-impl.jar中的VelocityVariableImpl 类文件,于是一目了然。因为 portal-normal.vm中的第一行会解析其他文件,被解析的文件在变量init中,如下:

    
    
    1. <!DOCTYPE html> 
    2.  
    3. #parse ($init) 
    4.  
    5. <html class="#language("lang.dir")" dir="#language("lang.dir")" lang="$w3c_language_id"> 
    6.  
    7. <head> 
    8.     <title>$the_title - $company_name</title> 
    9.  
    10.     $theme.include($top_head_include) 
    11. </head> 
    12. ...
       

     

    见03行,而被解析的这个文件,就定义了绝大多数模板中用到的变量,那么这个文件在哪里呢?我们可以参见VelocityVariableImpl中的定义:

    
    
    1. velocityContext.put( 
    2.     "init",  
    3.     themeDisplay.getPathContext() +  
    4.     "_SERVLET_CONTEXT_" +  
    5.     "/html/themes/_unstyled/templates/init.vm"); 
    6.  
    7.   velocityContext.put( 
    8.     "portletGroupId"new Long(themeDisplay.getScopeGroupId())); 
    9.  
    10. Theme theme = (Theme)request.getAttribute("THEME"); 

    所以,被parse的init变量 代表的文件是在 ROOT 应用下的/html/themes/_unstyled/templates/init.vm,我们打开看下,果然这里面都是变量定义:

     

    因为这个文件很长,所以这里略去

    
    
    1. ## ---------- Common variables ---------- ## 
    2.  
    3. #set ($theme_display = $themeDisplay) 
    4. #set ($portlet_display = $portletDisplay) 
    5.  
    6. #set ($theme_timestamp = $themeDisplay.getTheme().getTimestamp()) 
    7. #set ($theme_settings = $themeDisplay.getThemeSettings()) 
    8.  
    9. ... 

     

    结论:

    在Liferay框架中的模板文件中的变量,大多数是在init.vm中定义的,少量是直接定义在VelocityVariableImpl类中的

     

     

    实战:

    比如,同事问我,在portal-normal.vm的第47-53行中的 $content_include变量定义在哪里:

    
    
    1. #if ($selectable) 
    2.     $theme.include($content_include
    3. #else 
    4.     $portletDisplay.recycle() 
    5.  
    6.     $portletDisplay.setTitle($the_title) 
    7.  
    8.     $theme.wrapPortlet("portlet.vm"$content_include
    9. #end 

     

    我们在init.vm中进行查找,不难发现这个变量定义为:

    
    
    1. #set ($bottom_include = "$dir_include/common/themes/bottom.jsp"
    2. #set ($bottom_ext_include = $bottom_include) 
    3. #set ($content_include = "$dir_include$tilesContent"
    4. #set ($top_head_include = "$dir_include/common/themes/top_head.jsp"
    5. #set ($top_messages_include = "$dir_include/common/themes/top_messages.jsp"

    是 $dir_include$tilesContent,所以我们还需要递归的继续解析下去:

     

    我们在init.vm中继续查找,不难找到$dir_include的变量定义:

    
    
    1. #if ($is_portlet_page && $theme_display.isWapTheme()) 
    2.                 #set ($dir_include = "/wap"
    3. #else 
    4.                 #set ($dir_include = "/html"
    5. #end 

    所以,因为我们的官方默认例子不是被wap的,所以$dir_include为/html

     

    接下来我们找$tilesContent的定义。很可惜,它没有被定义在init.vm中,所以我们回到VelocityVariableImpl类中,再这里,我们找到了定义:

    
    
    1. String tilesContent = (String)componentContext.getAttribute("content"); 
    2.  
    3. themeDisplay.setTilesContent(tilesContent); 
    4.  
    5. velocityContext.put("tilesContent", tilesContent); 

    所以,$tilesContent 是一个程序运行期间动态传递过来的变量:

     

    综上所述:同事问我的portal-normal.vm文件中$content_include的变量的值,是在程序运行中动态解析的,默认情况下,它是 “/html” 与程序运行时候动态获取content属性值,然后这2个值拼接起来得到的值。




    本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/887082,如需转载请自行联系原作者

    展开全文
  • 经常朋友问我,平时都是使用spring mvc,打包成war包发布到tomcat上,如何快速到切换到spring boot的war或者jar包上? 先来看看传统的war包样式是什么样子的? 1. 传统的spring MVC格式的war包 可以看到,...

    背景

    经常有朋友问我,平时都是使用spring mvc,打包成war包发布到tomcat上,如何快速到切换到spring boot的war或者jar包上?

    先来看看传统的war包样式是什么样子的?

    1. 传统的spring MVC格式的war包

    spring boot打包成war包的页面该放到哪里?_www.wityx.com

    可以看到,webapp/resouces文件存放css/js/html等静态文件,WEB-INF存放jsp动态文件。

    对应的配置文件

    @EnableWebMvc //mvc:annotation-driven
    @Configuration
    @ComponentScan({ "com.xxx.web" })
    public class SpringWebConfig extends WebMvcConfigurerAdapter {
     
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
        }
        
        @Bean
        public InternalResourceViewResolver viewResolver() {
            InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
            viewResolver.setViewClass(JstlView.class);
            viewResolver.setPrefix("/WEB-INF/views/jsp/");
            viewResolver.setSuffix(".jsp");
            return viewResolver;
        }
     
    }

    对应xml的配置如下:

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans     
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context.xsd ">
     
        <context:component-scan base-package="com.xxxx.web" />
     
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
            <property name="prefix" value="/WEB-INF/views/jsp/" />
            <property name="suffix" value=".jsp" />
        </bean>
     
        <mvc:resources mapping="/resources/**" location="/resources/" />
         
        <mvc:annotation-driven />
     
    </beans>

    2.spring boot格式的jar包

    jar的结构,spring 尽量避免jsp的动态文件,而是使用如Thymeleaf 、FreeMarker等模板引擎,因为jsp有很多限制。

    spring boot打包成war包的页面该放到哪里?_www.wityx.com

    28.4.5 JSP Limitations

    When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations in the JSP support.

    With Jetty and Tomcat, it should work if you use war packaging. An executable war will work when launched with java -jar, and will also be deployable to any standard container. JSPs are not supported when using an executable jar.

    Undertow does not support JSPs.

    Creating a custom error.jsp page does not override the default view for error handling. Custom error pages should be used instead.

    3.spring boot 格式的war包

    spring boot打包成war包的页面该放到哪里?_www.wityx.com

    如何切换?

    其实,通过上面的结构,我们可以看出,spring boot的标准规格还是不建议使用jsp的,推荐使用Thymeleaf 、FreeMarker等模板引擎,然后所有的静态文件同样存储在resources下面,可以使用代码配置动态代码

    @Configuration
    @EnableWebMvc
    public class SpringConfig
    {
        @Bean
        public InternalResourceViewResolver viewResolver()
        {
            InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
            viewResolver.setPrefix("/WEB-INF/view/");
            viewResolver.setSuffix(".jsp");
            
            return viewResolver;
        }
    }

    或者静态属性配置

    spring.mvc.static-path-pattern=/resources/**

    来自定义配置。

    也可以使用静态文件动态化

    spring.resources.chain.strategy.content.enabled=true
    spring.resources.chain.strategy.content.paths=/**
    spring.resources.chain.strategy.fixed.enabled=true
    spring.resources.chain.strategy.fixed.paths=/js/lib/
    spring.resources.chain.strategy.fixed.version=v12

    注意:centos下使用tomcat时,编译的jsp文件,上传的文件等等默认都存储在临时目录里,会

    If you choose to use Tomcat on centos, be aware that, by default, a temporary directory is used to store compiled JSPs, file uploads, and so on. This directory may be deleted by tmpwatch while your application is running, leading to failures. To avoid this behavior, you may want to customize your tmpwatch configuration such that tomcat.* directories are not deleted or configure server.tomcat.basedir such that embedded Tomcat uses a different location.

    参考资料

    【1】https://www.mkyong.com/spring-boot/spring-boot-deploy-war-file-to-tomcat/

    【2】https://www.baeldung.com/spring-boot-war-tomcat-deploy

    【3】https://docs.spring.io/spring-boot/docs/2.1.2.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-static-content

    展开全文
  • 弄了好几天,终于知道哪里...末尾的10%为解决因找不到编写的servlet文件Tomcat网页上报404的原因 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head&g...

    弄了好几天,终于知道哪里错了,满满的经验啊
    本篇总结:90%的内容为正确创建servlet的步骤
    末尾的10%为解决因找不到编写的servlet文件在Tomcat网页上报404的原因
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
      <font size="5"/>
        <form action="/Demo" method="post">
            输入英文句子:<br>
            <textarea name='english' rows="5" cols="30"></textarea><br>
            <input type="submit" value="提交">
        </form>
    
      </body>
    </html>
    

    在这里插入图片描述

    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet(name = "Demo")
    public class Demo extends HttpServlet {
        @Override
        public void init (ServletConfig config) throws ServletException {
            super.init(config);
        }
    
        @Override
        public void service (ServletRequest req, ServletResponse res) throws ServletException, IOException {
            req.setCharacterEncoding("utf-8");
            res.setContentType("text/html; charset=utf-8");
            PrintWriter out = res.getWriter();
            out.println("<html><body bgcolor=yellow>");
            String str = req.getParameter("english");
            if (str == null || str.length() == 0){
                return;
            }
            String [] word = str.split("[^a-zA-Z]+");
            int n = 0;
            try{
                for(int i = 0; i < word.length; i++) {
                    if (word[i].length() >= 1){
                        n++;
                        out.print("<br>" + word[i]);
                    }
                }
            }catch (NumberFormatException e){
                out.print(" " + e);
            }
            out.print("<h2>句子中单词数目为:" + n);
            out.print("</body></html>");
        }
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置网页响应类型
            response.setContentType("text/html");
            //实现具体操作
            PrintWriter out = response.getWriter();
            out.println("This is a new servlet page");
        }
    }
    
    

    在这里插入图片描述
    配置Tomcat
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    注意:

    在web.xml中的/Demo 和 ce.jsp中的在这里插入图片描述
    要保持一致,否则会找不到servlet文件,(这个问题困扰了我好几天!此处省略一万亿句脏话。。。。。。)

    展开全文
  • MyEclipse7+Tomcat5+MySQL5+Struts1.2+Hibernate3.2+Spring2.0 [b]相关代码:[/b] [color=indigo]index.jsp中代码:[/color] [color=indigo]AddAdmin.java代码:[/color] package ...
  • 执行完成后会生成一个.keystore文件,将它复制到tomcat的bin目录下(并不一定,放哪里都可以) 打开conf目录下的server.xml文件,找到以下这一段 它被注释掉了,将注释去掉,并将这一段改成以下 maxThreads=...
  • 2、Tomcat根目录下哪些文件 31 3、什么是TOMCAT,怎样启动停止,配置文件,日志文件的存储。 31 4、解释一下什么是servlet;什么是servlet容器; 32 5、说一说Servlet的生命周期,执行过程? 32 6、实例化servlet几...
  • 在WEB-INF下也个vm文件夹,还有在tomcatTomcat 5.5\webapps\myProject\WEB-INF\classes\vm\simple.vm也一个vm文件夹,可就是报错,不管你写在哪里!!!怎么回事啊?谢谢大哥们了 [img]...
  • 2月 28, 2021 8:37:58 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 信息: Using a shared selector for servlet write/read 2月 28, 2021 8:37:58 下午 org.apache.catalina.startup....
  • 已经根据网上的文章改了很多次了,可是在上传的时候还是会错误,请大家帮我看看,是哪里出问题了 错误代码如下: HTTP Status 500 - ----------------------------------------------------------------...
  • -- 告诉spring配置文件的放置从哪里加载 --> <param-name>contextConfigLocation <param-value>classpath:springmvc-servlet.xml <!-- 配置了这个后,当服务器启动时,就开始实例化SpringMVC的...
  • 因为2楼刚说的在我加spring的时候,会自动给我这个配置文件,但是我没有找到在哪里呀 请问一下 他自动给我的时候,放到哪里的呀? [b]问题补充:[/b] 另外,我一直都没搞清楚,applicationContext.xml在整个程序中...
  • 能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词频统计、词性标注、同义标注、反义标注、...
  • #如果采用自定义的mybatis.xml文件,就需要配置下面的文件的内容,主要是定位xml文件的位置,xml文件具体的sql操作 #不加的话,就直接是在mapper类中@Select(sql),直接写sql操作。 # mybatis配置 mybatis....
  • 以前不会这样问题,代码应该没问题的... <strong>问题补充</strong><br/>刚开启了一个网站的访问日志,一开启jboss服务器,那个访问网站日志文件一下子就变得很大,不知为什么那些IP全部访问情感新闻文件下的...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

tomcat哪里有html文件