doy05jsp图片显示问题

P324 第四题

jsp图片为何显示不出来?

原因:

​ jsp能访问到哪是有容器(tomcat或者weblogic等)控制的。应用服务不允许你访问本地的其他目录,自然是访问不了(即使能访问也不会是“D:\123.jpg”这种形式,jsp会先被转换成servlet提供服务,当页面访问jsp时实际上是jsp 所对应的servlet发送给浏览器的的html代码,而原jsp页面中的html是不会进行处理的,而直接发送给浏览器(客户端),你的链接中所说的“D:\123.jpg”对应的是服务器上的“D:\123.jpg”,而不是客户机器上的“D:\123.jpg”。客户端上有没有“D:\123.jpg”。html是你本地的浏览器解析的,所以“D:\123.jpg”只会去本地磁盘上找,而不回去服务器上找)。需要配置图片的虚拟访问路径(推荐配置二)。

解决异常 (配置一or配置二)

  1. 配置一

    寻找此电脑中安装Tomcat路径下的的server.xml。

    server.xml地址:apache-tomcat-8.5.54\conf\server.xml

    在标签里添加

    <Context path="/uploadfile" docBase="C:\apache-tomcat-8.5.54\webapps\statics\uploadfile"   reloadable="true" crossContext="true"/>
    

在这里插入图片描述

docBase : 图片在此电脑地址 path:虚拟地址

2.配置二

在IDEA中修改tomcat的图片访问路径,选中Edit Configuration… 再点击Deployment

找到本地Tomcat的图片文件地址,设置虚拟地址,点击Apply保存,再OK。

流程如图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

修改思路

在这里插入图片描述

/uploadfile 虚拟路径。

${provider.idPicPath}的值是从providerService.getProviderById(id);数据库中获取的导入prvoider对象传入的。

C:\apache-tomcat-8.5.54\webapps\statics\uploadfile\1600911883531_Personail.jpg

需要在UserController.java中修改provider.setIdPicPath和provider.setWorkPicPath 值,使用String字符串的截取,将provider类的idpicPath和workPicPath修改成 文件名.jpg 例(1600911883531_Personail.jpg)

    /**
     * 查看详情Provider  使用REST风格
     * @param id
     * @param model
     * @return
     */
    @RequestMapping(value = "/viewPro/{id}",method = RequestMethod.GET)
    public String viewPro(@PathVariable String id,Model model){
        logger.info("=====进入viewPro()=======");
        Provider provider=providerService.getProviderById(id);
        String photoId=provider.getIdPicPath();
        provider.setIdPicPath( photoId.substring(photoId.lastIndexOf("\\")+1) );
        //lastindexOf("\\")中的“\\” 转义符 成 “/” 
        String photoWork=provider.getWorkPicPath();
        provider.setWorkPicPath(photoWork.substring(photoWork.lastIndexOf("\\")+1) );

        logger.info("营业执照:"+provider.getIdPicPath());
        logger.info("组织机构代码证:"+provider.getWorkPicPath());
        model.addAttribute(provider);

        return "jsp/providerview";
    }
   model.addAttribute(provider);

    return "jsp/providerview";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值