服务端通过生成字节码返回客服端解析为图像
2018-01-13 16:26
295 查看
在之前做项目的时候遇到过这样的情况,用户需要上传自己的头像图片,为了能在下次登录时展示这个图片,我们会把图片保存到项目中的某一个指定的文件夹里面,以便服务程序能访问到这张图片。(因为这个图片必须放到tomcat容器里面(webapps文件夹下面)能访问到的地方,程序才能访问到)。但是有一个问题是,这不利于程序包的更新,每次发布war包,tomcat将会解析出新的项目文件夹,原有的项目文件夹将会被替换,这就会导致用户上传的图片被删除。提出一个更好的解决办法是:在浏览一个页面时,当浏览器解析到类似<image>(图片)\<embed>(多媒体资源音频视频等)等标签,以及请求静态文件的时候。浏览器会重新建立一个TCP链接,向服务器请求这些静态资源。一般地,我们的项目都会将静态资源请求转发到Servlet容器(tomcat等)中默认的Servlet上。因此我们需要打破这一点。将某些静态资源的请求,转发到我们能处理的servlet上(如springMvc的DispatcherServlet)。通过我们自己直接返回图片等资源的字节码(该字节码可以读取文件直接生成,也可以从数据库中读取,建议在用户上传头像的时候,将头像图片生成字节码存在数据库,这样数据不容易丢失,否则如果更换服务器的时候还要注意备份用户的图片信息),浏览器都可以讲这些字节码解析成为相应的静态资源。如下我将用两种方式请求图片资源:
界面显示结果:
其中第二张图片是通过DispatcherServlet处理返回字节码并由浏览器解释生成的图片。
第一张图片中表达的信息,为什么说第一个标签将会被默认的Servlet处理而第二个标签将会被DispatcherServlet处理呢?
这得取决于你web.xml中DispatcherServlet的配置。
如上图,所有请求的URI包含 /service/的请求都会被转发到 DispatcherServlet处理。
界面显示结果:
其中第二张图片是通过DispatcherServlet处理返回字节码并由浏览器解释生成的图片。
第一张图片中表达的信息,为什么说第一个标签将会被默认的Servlet处理而第二个标签将会被DispatcherServlet处理呢?
这得取决于你web.xml中DispatcherServlet的配置。
如上图,所有请求的URI包含 /service/的请求都会被转发到 DispatcherServlet处理。
相关文章推荐
- 服务端通过生成字节码返回客服端解析为图像
- 服务端通过生成字节码返回客服端解析为图像
- 服务端通过生成字节码返回客服端解析为图像
- JSON PHP中返回JSON数据(多个JSON通过一个大的数组组合成一个JSON字符串),在客户端解析JSON数据减轻服务端压力
- c# 通过访问URL,获取并解析远程服务端返回的复杂Json数据
- 通过像素数据生成VisionPro的CogImage8Grey图像
- Java 通过HttpURLConnection Post方式提交json,并从服务端返回json数据
- Android 服务端返回的数据含有html字段时的解析方式
- Android访问网络:服务端返回XML或JSON格式数据,Android 进行解析并使用ListView显示
- Java Json解析,Java Web Json解析,Java Web服务端获取Json数据,客户端通过HTTP获取Json数据
- Java 通过HttpURLConnection Post方式提交xml,并从服务端返回数据
- Jmeter中通过beanshell脚本解析HTTP请求的返回的json并作为下个请求的输入参数
- 微信支付通过服务端生成支付链接在ios唤起支付界面
- 服务端生成二维码,并已base64返回
- MATLAB通过串口读取数据,分别并生成一维和三维图像。
- 混沌的艺术--- YChaos通过数学公式生成混沌图像
- Ajax请求及服务端返回数据解析的陷阱
- Java 通过HttpClient Post方式提交json,并从服务端返回json数据
- 通过gradle生成SpringMVC实现RESTful返回JSON格式数据
- 通过wsdl文件或者xml文件生成WebService接口的客户端或者服务端的指令