Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jsp文件中将内容类型设置为application/json_Java_Http_Jsp_Http Headers_Content Type - Fatal编程技术网

Java 在jsp文件中将内容类型设置为application/json

Java 在jsp文件中将内容类型设置为application/json,java,http,jsp,http-headers,content-type,Java,Http,Jsp,Http Headers,Content Type,我创建了一些jsp文件,该文件返回一些json字符串作为响应。但是我看到内容类型被自动设置为txt 我的jsp代码看起来像 <%@ page import="java.util.Random" %> <%@ page language="java" %> <%@ page session="false" %> <% String retVal = "// some json string"; int millis = new Rando

我创建了一些jsp文件,该文件返回一些json字符串作为响应。但是我看到内容类型被自动设置为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%>
在本例中?

您可以通过

例如:

<%@ page language="java" contentType="application/json; charset=UTF-8"
    pageEncoding="UTF-8"%>

  • contentType=“mimeType[;charset=characterSet]”| “text/html;字符集=ISO-8859-1”
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 john

谢谢,我不能使用页面指令,因为我必须根据一些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 %>
内容类型为“text/javascript”

未提供回调时,返回:

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

使用内容类型“application/json”

但这会引发类似java.lang.IllegalStateException的异常:已为此响应调用getOutputStream()。请确保在调用
setContentType(…)
之前,不要向客户端输出任何单个字符(否则,在此之前内容类型已被修复)。尤其要注意%>之后的空格或换行符,例如,将第一行的结尾%>移动到第二行,然后立即开始下一行。谢谢,我正在搜索类似的内容链接已失效
    {...JSON stuff...}