我创建了一些jsp文件,作为响应返回一些json字符串。 但我发现Content-Type自动设置为txt
我的jsp代码看起来像
String retVal ="// some json string";
int millis = new Random().nextInt(1000);
// System.out.println("sleeping for" + millis +" millis");
Thread.sleep(millis);
%>
我怎样才能表现出类似的东西
setHeader("Content-Type","application/json");
在这个例子中?
你可以通过Page指令来完成。
例如:
pageEncoding="UTF-8"%>
contentType ="mimeType [; charset = characterSet]"|
"text / html的;字符集= ISO-8859-1"
The MIME type and character encoding the JSP file uses for the
response it sends to the client. You can use any MIME type or
character set that are valid for the JSP container. The default MIME
type is text/html, and the default character set is ISO-8859-1.
链接已经死了
尝试这段代码,它也应该工作
//response.setContentType("Content-Type","application/json"); // this will fail compilation
response.setContentType("application/json"); //fixed
%>
你为什么要投票?
但这会引发异常,例如java.lang.IllegalStateException:已经为此响应调用了getOutputStream()
确保在调用setContentType(..)之前不向客户端输出任何单个字符(否则之前内容类型已经修复)。 尤其要注意%>之后的空格或换行符,例如 write将第一行的结束%>移动到第二行,然后立即开始,然后立即使用下一行
@Petr Mensik&kensen john
谢谢,我无法使用页面指令,因为我必须根据某些URL参数设置不同的内容类型。 我会在这里粘贴我的代码,因为它与JSON很常见:
String callback = request.getParameter("callback");
response.setCharacterEncoding("UTF-8");
if (callback != null) {
// Equivalent to:
response.setContentType("text/javascript");
} else {
// Equivalent to:
response.setContentType("application/json");
}
[...]
String output ="";
if (callback != null) {
output += callback +"(";
}
output += jsonObj.toString();
if (callback != null) {
output +=");";
}
%>
提供回调时,返回:
callback({...JSON stuff...});
内容类型为"text / javascript"
如果未提供回调,则返回:
{...JSON stuff...}
内容类型为"application / json"
谢谢,我正在寻找这样的东西