Je suis créé un fichier jsp qui renvoie en réponse une chaîne json. Mais je vois que le type de contenu est réglé sur txt automatiquement
Mon code jsp ressemble à
<%@ 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%>
Comment puis-je effectuer quelque chose comme
setHeader("Content-Type", "application/json");
dans cet exemple?
Vous pouvez le faire via directive de page .
Par exemple:
<%@ page language="Java" contentType="application/json; charset=UTF-8"
pageEncoding="UTF-8"%>
Le type MIME et le caractère codant utilisé par le fichier JSP pour la réponse envoyée au client. Vous pouvez utiliser n'importe quel type ou jeu de caractères MIME valables pour le conteneur JSP. Le type MIME par défaut est text/html et le jeu de caractères par défaut est ISO-8859-1.
Essayez ce morceau de code, ça devrait marcher aussi
<%
//response.setContentType("Content-Type", "application/json"); // this will fail compilation
response.setContentType("application/json"); //fixed
%>
@Petr Mensik & kensen john
Merci, je n'ai pas pu utiliser la directive page car je dois définir un type de contenu différent en fonction d'un paramètre d'URL. Je vais coller mon code ici car c'est quelque chose d'assez courant avec JSON:
<%
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 %>
Lorsque le rappel est fourni, retourne:
callback({...JSON stuff...});
avec le type de contenu "text/javascript"
Si le rappel n'est PAS fourni, retourne:
{...JSON stuff...}
avec le type de contenu "application/json"