本文主要记录本人的开发过程中的配置问题记录
开发情况:前后端不分离;
在web开发中,碰到数据库保存图片路径为相对路径(如:/image/60123200007.jpg),图片放置位置实际为本项目的根目录上(跟src同级,原因:避免项目清除缓存时,重新部署误删);
本人是利用服务器Tomcat的docBase和path属性,完成对图片资源相对路径的转换。操作步骤如下:
- 找到Tomcat安装的根目录,然后修改conf子目录下的server.xml文件,找到Host节点,并在节点内增加以下配置:<Context path="/image/" docBase="E:\workSpace\**项目\image\" reloadable="true"/>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/image/" docBase="E:\workSpace\**项目\image\" reloadable="true"/>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
若开发工具使用的是IntelliJ IDEA,则需要添加配置步骤:
方法一:
在Tomcat服务器设置栏中需要勾选“Deploy applications configured in Tomcat instance”。
方法二:
设置Tomcat服务器的虚拟路径,即在Deployment中引入图片资源存放的本地路径,再设置图片资源相对路径的前缀,具体做法如下图所示:
选择 External Source... 弹窗中选择图片坐在目录,确定后生成上图所示的"upload"项,点击确认,重启项目即可。
如果是使用Eclipse工具,那就不需要作修改,直接就可以访问了。
开发过程中,相关路径的获取如下代码参考:
private static String getRequestUrl(){
//服务器本地保存图片路径
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//获得当前项目访问的地址:http://127.0.0.1:8080
String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
return url;
}
public static String getUploadPath(HttpServletRequest request){
String savePath = request.getSession().getServletContext().getRealPath("");
savePath = savePath.substring(0,savePath.lastIndexOf("\\"));
return savePath+"/";
}