我创建了返回的响应一些JSON字符串一些JSP文件。 但我看到的是内容类型设置为自动的txt
我的JSP代码看起来像
<%@ 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%>
我如何可以执行类似
setHeader("Content-Type", "application/json");
在这个例子吗?
你可以通过做Page指令 。
例如:
<%@ page language="java" contentType="application/json; charset=UTF-8"
pageEncoding="UTF-8"%>
- 的contentType = “mime类型[;字符集= CHARACTERSET]” | “text / html的;字符集= ISO-8859-1”
MIME类型和字符编码JSP文件使用用于将其发送到客户端的响应。 你可以使用任何MIME类型或字符集的有效期为JSP容器。 默认的MIME类型为text / html,默认字符集是ISO-8859-1。
试试这一段代码,它应该工作太
<%
//response.setContentType("Content-Type", "application/json"); // this will fail compilation
response.setContentType("application/json"); //fixed
%>
@Petr Mensik&kensen约翰
谢谢,我不能使用的页面指令,因为我根据一些URL参数来设置不同的内容类型。 我会在这里贴上我的代码,因为这件事情相当普遍使用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 %>
当回调提供,返回:
callback({...JSON stuff...});
与内容类型“文本/ JavaScript的”
如果回调不提供,则返回:
{...JSON stuff...}
与内容类型“application / JSON”