2012-05-15 16 views
31

Bazı json dizelerine yanıt olarak dönen bir jsp dosyası oluşturdum. Ama Content-Type txt için ayarlandığını bakın otomatikjsp dosyasında Content-Type öğesini/json olarak ayarla

Benim jsp kodu

<%@ page import="java.util.Random" %> 
<%@ page language="java" %> 
<%@ page session="false" %> 

<% 
    String retVal = "// some json string"; 

    int millis = new Random().nextInt(1000); 
    // System.out.println("sleeping for " + millis + " millis"); 
    Thread.sleep(millis); 
%> 
<%=retVal%> 

nasıl gerçekleştirebileceği gibi görünen bu örnekte

setHeader("Content-Type", "application/json"); 

gibi bir şey?

cevap

59

Page directive aracılığıyla yapabilirsiniz. Örneğin

:

<%@ page language="java" contentType="application/json; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
  • contentType = "mimeType [; karakter kümesi = characterSet]" | "metin/html; charset = ISO-8859-1"

MIME türü ve karakter JSP dosyasını kodlayan istemciye gönderir yanıt kullanır. JSP kapsayıcısı için geçerli olan herhangi bir MIME türü veya karakter kümesini kullanabilirsiniz. Varsayılan MIME türü metin/html'dir ve varsayılan karakter kümesi ISO-8859-1'dir.

+0

Bağlantı kesildi – inovaovao

9

Bu kod parçasını deneyin, çalışmalıdır çok

<% 
    //response.setContentType("Content-Type", "application/json"); // this will fail compilation 
    response.setContentType("application/json"); //fixed 
%> 
+0

Neden downvoted oldum? –

+0

ama bu java.lang.IllegalStateException gibi istisna atar: getOutputStream() zaten bu yanıt için çağrıldı –

+0

yapmak emin olun * istemciden önce herhangi bir karakter * çıkışı değil setContentType (..) '(aksi takdirde içerik türü bundan önce zaten sabittir). Özellikle%> sonrası, boşluklara veya yeni satırlara dikkat edin, ör. İlk satırın kapanışını%> ikinci satırına yazın ve hemen ardından hemen sonraki <% ile başlayın. –

2

@Petr ben farklı bir içeriğe belirlemek zorunda çünkü john

sayesinde, sayfa yönergesi kullanılan olamazdı kensen Menšík & Bazı URL parametrelerine göre yazın.

<% 
     String callback = request.getParameter("callback"); 
     response.setCharacterEncoding("UTF-8"); 
     if (callback != null) { 
      // Equivalent to: <@page contentType="text/javascript" pageEncoding="UTF-8"> 
      response.setContentType("text/javascript"); 
     } else { 
      // Equivalent to: <@page contentType="application/json" pageEncoding="UTF-8"> 
      response.setContentType("application/json"); 
     } 

     [...] 

     String output = ""; 

     if (callback != null) { 
      output += callback + "("; 
     } 

     output += jsonObj.toString(); 

     if (callback != null) { 
      output += ");"; 
     } 
    %> 
    <%=output %> 

geri arama verilir, döner: içerik türüyle

callback({...JSON stuff...}); 

"text/javascript"

geri arama JSON ile oldukça yaygın bir şey çünkü burada benim kodu yapıştırın olacak tedarik dEĞİL, döndürür: içerik türü "uygulama/json" ile

{...JSON stuff...} 

+0

Teşekkürler, böyle bir şey arıyordum – Kainix