Définir le Type de Contenu application/json dans le fichier jsp
je suis créé un fichier jsp qui retourne comme une réponse une chaîne json. Mais je vois que le type de contenu est défini à 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?
3 réponses
Vous pouvez le faire via la directive.
Par exemple:
<%@ page language="java" contentType="application/json; charset=UTF-8"
pageEncoding="UTF-8"%>
- contentType= " mimeType [; charset=characterSet ]" | "text / html;charset=ISO-8859-1"
le type MIME et le caractère encodant le fichier JSP utilise pour la réponse qu'il envoie au client. Vous pouvez utiliser N'importe quel type MIME ou jeu de caractères valide pour le conteneur JSP. Le MIME par défaut type text/html, et le jeu de caractères par défaut est ISO-8859-1.
Essayez ce morceau de code, il devrait travailler trop
<%
//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 URL. Je vais coller mon code ici, puisque c'est quelque chose de commun 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 %>
Quand le rappel est fourni, retourne:
callback({...JSON stuff...});
avec le contenu de type "text/javascript"
Quand le rappel n'est PAS fourni, retourne:
{...JSON stuff...}
avec contenu-type "application / json"