在项目中遇到了要在jsp中显示服务器硬盘中存储的图片的问题,当然直接引用是不能显示的,我用的服务器是tomcat服务器,一般来说,只能访问tomcat下webapp文件夹下的文件。最终的解决方法就是配置tomcat的虚拟目录,将硬盘的某个目录映射到tomcat下。具体的配置方法为:
1. 在tomcat目录下找到conf文件夹,里边应该没有catalina文件夹,要自己建立。在catalina文件夹下再建立localhost文件夹,在该文件夹下建立文件 a.xml(这个名字是用来在地址栏里访问的)。在xml中加入下边代码:
<?xml version="1.0" encoding="UTF-8"?>
<Context
docBase="d:\sadfiles"
reloadable="true">
</Context>
docBase表示程序包的物理绝对路径,这里我的文件夹是存储照片等要在jsp上显示的信息。
同时,在tomcat的conf文件夹下的web.xml中,找到
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
将其中listing的值由false改为true,即可在列表中显示了。
访问时,http://localhost:8080/a/ 即可在jsp里访问目标文件夹下的文件了。如图:
这里可以点击任意文件,点击图片可以显示,其他文件则是弹出下载框。这里可能遇到的问题是中文名文件报错,原因是tomcat的编码问题,只需要将tomcat的编码改为UTF8即可,修改方法如下:
找到tomcat下的conf文件夹,下边server.xml 中,找到
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
添加上方的 URIEncoding="UTF-8" 即可。