×

contextpath(contextpath)

前端技术网 前端技术网 发表于2024-01-29 03:33:24 浏览3294 评论0

抢沙发发表评论

一、spring boot 部署到tomcat中怎么设置context path

spring-boot默认提供内嵌的tomcat,所以打包直接生成jar包,用java-jar命令就可以启动。但是,有时候我们更希望一个tomcat来管理多个项目,这种情况下就需要项目是war格式的包而不是jar格式的包。spring-boot同样提供了解决方案,只需要简单的几步更改就可以了,这里提供maven项目的解决方法:

1.将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法

contextpath(contextpath)

@SpringBootApplication

public class Application extends SpringBootServletInitializer{

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder application){

return application.sources(Application.class);

}

contextpath(contextpath)

public static void main(String[] args) throws Exception{

SpringApplication.run(Application.class, args);

}

}12345678910111213

2.在pom.xml文件中,project下面增加package标签

<packaging>war</packaging>1

3.还是在pom.xml文件中,dependencies下面添加

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-tomcat</artifactId>

<scope>provided</scope>

</dependency>12345

这样,只需要以上3步就可以打包成war包,并且部署到tomcat中了。需要注意的是这样部署的request url需要在端口后加上项目的名字才能正常访问。spring-boot更加强大的一点就是:即便项目是以上配置,依然可以用内嵌的tomcat来调试,启动命令和以前没变,还是:mvn spring-boot:run。

如果需要在springboot中加上request前缀,需要在application.properties中添加server.contextPath=/prefix/即可。其中prefix为前缀名。这个前缀会在war包中失效,取而代之的是war包名称,如果war包名称和prefix相同的话,那么调试环境和正式部署环境就是一个request地址了。

二、contextpath是什么路径

单独的<context>元素可以通过多种方式定义:

在Web应用的/META-INF/context.xml文件中定义,当Host的copyXML属性为true的时候,context.xml文件将被拷贝到$CATALINA_BASE/conf/[enginename]/[hostname]目录下,并且重新命名,命名规范参考/META-INF/context.xml小节的说明。

直接在$CATALINA_BASE/conf/[enginename]/[hostname]目录下放置一个XML文件,文件名规范和内容参考META-INF/context.xml小节的说明。这个文件的优先级比/META-INF/context.xml高。

在Tomcat服务器的conf/server.xml文件的<Host>元素中定义一个<Context>元素。

三、网页代码中用<%=request.getContextPath()%>和不用的区别

request.getContextPath()应该是得到项目的名字,如果项目为根目录,则得到一个"",即空的字条串,

如果项目为abc,<%=request.getContextPath()%>/将得到abc/,服务器端的路径则会自动加上,

<a href="XXXX.jsp">应该就是指当前路径下的这个xxx.jsp页面,有时候也可以在head里设置html:base

来解决路径的问题,不过用的最多的还是request.getContextPath。

另外发现个文档很不错

四、web项目的getContextPath()在哪里设置

以工程名为/DemoWeb为例:

访问的jsp为:http://localhost:8080/DemoWeb/test/index.jsp

1 JSP中获得当前应用的相对路径和绝对路径

(1)得到工程名:request.getContextPath()

结果:/DemoWeb

(2)得到包含工程名的当前页面全路径:request.getRequestURI()

结果:/DemoWeb/test/testpath.jsp

(3)得到IE地址栏地址:request.getRequestURL()

结果:http://localhost:8080/DemoWeb/test/testpath.jsp

(4)得到当前页面所在目录下全名称:request.getServletPath()

结果:/test/testpath.jsp

(5)得到页面所在服务器的全路径(实际的路径):application.getRealPath("testpath.jsp")

结果:D:\Develop Files\apache-tomcat-5.5.15\apache-tomcat-5.5.15\webapps\DemoWeb\testpath.jsp

D:\Develop Files\apache-tomcat-5.5.15\apache-tomcat-5.5.15为tomcat的安装路径

2.java的Class中获得相对路径,绝对路径的方法

(1)类的绝对路径:

System.out.println(TestPath.class.getResource("/").getPath());

结果:/E:/workspace/workspace_tcc/DemoWeb/WebRoot/WEB-INF/classes/

System.out.println(TestPath.class.getResource(""));

结果:file:/E:/workspace/workspace_tcc/DemoWeb/WebRoot/WEB-INF/classes/demo1/

(2)得到工程的路径:System.getProperty("user.dir")

结果:E:\workspace\workspace_tcc\DemoWeb

好了,文章到这里就结束啦,如果本次分享的contextpath(contextpath)和spring boot 部署到tomcat中怎么设置context path问题对您有所帮助,还望关注下本站哦!