Tag: http

HTTP响应缓存

我想确保我的servet的响应永远不会被broswer缓存,这样即使两个相同的请求(相隔一个纳秒),也总是联系服务器。 这是实现此目的的正确方法: class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) { response.setHeader(“Cache-Control”, “no-cache”); } } 谢谢,唐

如何使用Java从网站检索URL?

我想使用HTTP GET和POST命令从网站检索URL并解析HTML。 我该怎么做呢?

缓存servlet提供的图像

我正在从我的servlet提供图像。 响应内容类型是image / jpeg。 我发现从我的servlet请求的图像没有被缓存。 如何通过文件图像请求缓存它们? 我尝试设置Cache-Control:public但无济于事。

Java的异步HTTP客户端

作为Java世界中的一个相对新手,我发现很多事情令人沮丧地完成,在许多其他框架中相对微不足道。 一个主要的例子是异步http请求的简单解决方案。 看起来似乎并不存在,最好的方法是什么? 使用像httpclient这样的阻塞类型lib或者内置的java http东西来创建我自己的线程,或者我应该使用更新的非阻塞io java东西 – 对于应该简单的东西来说似乎特别复杂。 我正在寻找的是从开发人员的角度来看易于使用的东西 – 类似于AS3中的URLLoader – 您只需创建一个URLRequest – 附加一堆事件处理程序来处理完成,错误,进度等,并调用一种解雇它的方法。 如果您不熟悉AS3中的URLLoader,它非常简单,看起来像这样: private void getURL(String url) { URLLoader loader = new URLLoader(); loader.addEventListener(Event.Complete, completeHandler); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); URLRequest request = new URLRequest(url); // fire it off – this is asynchronous so we handle // completion with event handlers loader.load(request); } […]

在Java Servlet的上下文中,URL重写和转发有什么区别?

作为Java Web应用程序的开发人员,何时需要使用URL重写以及URL重写和转发之间的区别是什么? 我在其他网站上搜索,我得到的是相互矛盾的信息,这取决于你所说的人,SEO人会以不同的方式回答这个问题。 AFAIK在两种情况下都不会通知客户端(浏览器)更改,并且最终用户看到客户端在从服务器返回休止符时最初请求的完全相同的URL。 请问这个问题是在Java Servlet API的上下文中,其中定义了forward方法和sendRedirect方法,其中重定向和转发完全是两个不同的东西。 这个问题是关于forward(由Servlet API中的forward方法定义)和URL重写之间的区别。 问题清楚地表明答案应该在Java servlet的上下文中。 最重要的是,在开发Java Web应用程序的上下文中,我何时需要使用URL重写。

HTTP标头中的非法字符

我正在创建一个HttpUrlConnection ,需要设置多个自定义标头。 我想按照以下方式做一些事情,但标题映射的内容需要来自单个字符串。 在HTTP标头名称和HTTP标头值中是否存在任何非法或极少使用的字符? HashMap headers = new HashMap(); // TODO: How can I fill the headers map reliably from a single string? HttpURLConnection c = (HttpURLConnection) url.openConnection(); for(Map.Entry e : headers.entrySet()) c.setRequestProperty(e.getKey(), e.getValue()); 解决方案现在 似乎任何HTTP标头名称都不包含任何空格(通常使用破折号?),因此我可以使用单个空格将名称与值分开。 至于名称 – 值集,似乎我搞砸了,因为根据给定的答案,值可以包含几乎任何东西。 所以我刚刚选择了一个我很确定永远不会被使用的角色: § 。 如果事实certificate它确实需要,我只需要调整我的代码:p Header1 Value1§Header2 Value2§Header3 Header3

从URLConnection读取二进制文件

我正在尝试从URLConnection读取二进制文件。 当我用文本文件测试它似乎工作正常,但对于二进制文件它没有。 发送文件时,我在服务器上使用以下mime-type: application/octet-stream 但到目前为止似乎没有任何效果。 这是我用来接收文件的代码: file = File.createTempFile( “tempfile”, “.bin”); file.deleteOnExit(); URL url = new URL( “http://sofzh.miximages.com/java/f” ); URLConnection connection = url.openConnection(); BufferedReader input = new BufferedReader( new InputStreamReader( connection.getInputStream() ) ); Writer writer = new OutputStreamWriter( new FileOutputStream( file ) ); int c; while( ( c = input.read() ) != -1 ) { […]

一个带Java / Socket的简单Http服务器?

我目前正在创建一个返回静态页面的小型HTTP服务器 Hello! …我尝试使用Java的套接字: public static void main(String[] args) throws Exception { // création de la socket int port = 1989; ServerSocket serverSocket = new ServerSocket(port); System.err.println(“Serveur lancé sur le port : ” + port); // repeatedly wait for connections, and process while (true) { // on reste bloqué sur l’attente d’une demande client Socket clientSocket […]

在JSP中添加Expires或Cache-Control标头

如何在JSP中添加Expires或Cache-Control标头? 我想在包含页面中为我的静态组件添加远期到期日期,例如图像,CSS和JavaScript文件。

Java中的HTTP头编码/解码

自定义HTTP标头正在传递给Servlet应用程序以进行身份​​validation。 标头值必须能够包含重音和其他非ASCII字符,因此必须采用特定编码(理想情况下为UTF-8)。 控制身份validation环境的开发人员向我提供了这段Java代码: String firstName = request.getHeader(“my-custom-header”); String decodedFirstName = new String(firstName.getBytes(),”UTF-8″); 但是这段代码对我来说看起来并不合适:它预先假定了头值的编码,当我觉得有一种正确的方法来指定头值的编码时(我认为来自MIME)。 这是我的问题:处理需要支持UTF-8编码的自定义标头值的正确方法(tm)是什么: 在电线上(标题在电线上的样子) 从解码的角度来看(如何使用Java Servlet API解码它,我们可以假设request.getHeader()已经正确地解码了) 这是一个与环境无关的代码示例,用于将标头视为UTF-8,以防您无法更改服务: String valueAsISO = request.getHeader(“my-custom-header”); String valueAsUTF8 = new String(firstName.getBytes(“ISO8859-1″),”UTF-8”);