JSP下载 – application / octet-stream

我在JSP中有一个页面列出了一些可以由用户下载的文件。 Thoses文件不在本地服务器上,它们位于远程文件服务器上。 当用户单击下载文件时,Web服务器通过TCP连接到文件服务器。 Web服务器下载文件并为客户端创建HTTP响应。 这是我的代码: <% out.clearBuffer(); String nomFichier = request.getParameter("fichier"); String adresseStockage = request.getParameter("adresseStockage"); ClientTCPStockage clientStockage = new ClientTCPStockage(InetAddress.getByName(adresseStockage), 2004); byte donneeFichier[] = clientStockage.getDonneesFichier(nomFichier); response.setHeader("Content-Disposition", "attachment;filename=\"" + nomFichier + "\""); response.setHeader("Content-Type", "application/octet-stream;"); response.setHeader("Accept-Ranges", "bytes"); response.setHeader("Content-Length", String.valueOf(donneeFichier.length)); for(int i = 0; i 这对于基于文本的文件非常好,例如.csv或普通.txt,但它不适用于其他类型,如.mp3或.jpeg ..这些文件最终会损坏。 我认为我的编码存在问题,但我无法找到… 这是HTTP标头响应: HTTP/1.x 200 OK Server: Apache-Coyote/1.1 Content-Disposition: attachment;filename=”test.mp3″ Accept-Ranges: bytes […]

Spring重载构造函数注入

这是代码: public class Triangle { private String color; private int height; public Triangle(String color,int height){ this.color = color; this.height = height; } public Triangle(int height ,String color){ this.color = color; this.height = height; } public void draw() { System.out.println(“Triangle is drawn , + “color:”+color+” ,height:”+height); } } Spring配置文件是: 是否有任何特定的规则来确定Spring将调用哪个构造函数?

在Java中用’\\’替换单个’\’

如何用’\\’替换单个’\’ ‘\\’ ? 当我运行replaceAll()然后我收到此错误消息。 Exception in thread “main” java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^ at java.util.regex.Pattern.error(Pattern.java:1713) at java.util.regex.Pattern.compile(Pattern.java:1466) at java.util.regex.Pattern.(Pattern.java:1133) at java.util.regex.Pattern.compile(Pattern.java:823) at java.lang.String.replaceAll(String.java:2190) at NewClass.main(NewClass.java:13) Java Result: 1 我的代码: public class NewClass { public static void main(String[] args) { String str = “C:\\Documents and Settings\\HUSAIN\\My Documents\\My Palettes”; str = str.replaceAll(“\\”, “\\\\”); […]

Graphics.setXORMode(Color)用简单的术语做什么?

这是我读到的内容,但无法准确理解它的作用: 实现橡皮筋的一种方法是以XOR模式绘制。 您可以通过调用图形上下文的setXORMode()方法并将颜色传递给它来设置XOR模式 – 通常是背景颜色。 在此模式下,像素不会直接写入屏幕。 您正在绘制的颜色与当前显示的像素的颜色以及您指定的第三种颜色相结合,通过对它们进行异或运算,并将得到的像素颜色写入屏幕。 第三种颜色通常设置为背景颜色,因此写入的像素的颜色是以下操作的结果: resultant_Color = foreground_color^background_color^current_color 我知道XORing是如何工作的,但不知道上段是什么意思。 请为我说明一下

根据给定条件从ArrayList中删除对象

如果符合某个条件,我想从Java中的ArrayList中删除一个元素。 即: for (Pulse p : pulseArray) { if (p.getCurrent() == null) { pulseArray.remove(p); } } 我能理解为什么这不起作用,但是这样做的好方法是什么?

在Java中解析XML字符串的最佳方法?

我正在使用javax.xml.parsers.DocumentBuilder在Java中解析字符串。 但是,没有直接解析String的函数,所以我这样做: public static Document parseText(String zText) { try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(new InputSource(new StringReader(zText))); doc.getDocumentElement().normalize(); return doc; } catch (Exception e) { e.printStackTrace(); } return null; } 这是最好的方法吗? 我觉得必须有一个更简单的方法……谢谢!

为什么默认的char缓冲区大小为BufferedReader 8192?

当我构造一个新的BufferedReader它为我提供了8192个字符的缓冲区。 这背后的逻辑/原因是什么? 8192 = 2 to the power of 13

MANIFEST.MF中的Class-Path是否只能包含jar文件?

我想在其他目录中包含类文件,而不是主类的目录。 如果我将这些目录放入MANIFEST.MF的Class-Path属性中,它就不起作用。 为什么? 除了将这些类打包到jar文件中之外,还有其他解决方案吗?

如何将System.getProperty(“user.dir”)更改为项目工作区

我尝试在我的代码中逐行读取.txt文件,我把它放在/src/目录下,当我用测试用例或静态void main运行时,路径输出是正确的。 但是,当我使用Tomcat服务器运行应用程序时,应用程序根路径指向我下载Eclipse的位置 – D:\eclipse\… ,而正确的路径应该是D:\workspace\myproject\src\ 。 然后,当然,它永远找不到文件。 以下是我的代码: String workDir = System.getProperty(“user.dir”); String file = “numFile.txt”; File myFile = new File(workDir + file); String userPath = myFile.getPath(); 所以,我的问题是: (这可能是愚蠢的)我们通常应该在哪里放置文本文件? 如何更改[ System.getProperty(“user.dir”); ],那么它会指向我的项目工作区吗? 谢谢! 沙龙 关于你的回复: 添加以下参数-Duser.home =’Your Path’确保在系统变量的开头添加-D。 当您在使用tomcat服务器时打开启动配置时,可以将此变量放在参数选项卡下提供的VM参数框中。 我找不到你在说的地方。 它在Eclipse或Tomcat目录中吗? 谢谢

如何在android中每5秒调用一次方法?

我正在使用一个应用程序,当我选择时,它必须每隔5秒向服务器发送一个GPS位置(自动发送按钮)。 我是android的新手,所以我不知道如何制作开/关按钮,如何在按钮打开时调用每5秒发送一次数据的方法。 它必须每5秒调用一次的方法: public void postData() throws ClientProtocolException, IOException, Exception { String longitude=”UK”; String latitude=”UK”; String altitiude=”UK”; String time=””; String speed=””; getCurrentLocation(); // gets the current location and update mobileLocation variables if (mobileLocation != null) { locManager.removeUpdates(locListener); // This needs to stop getting the location data and save the battery power. longitude = “”+mobileLocation.getLongitude(); latitude […]