设置内容类型为application / JSON在JSP文件(Set Content-Type t

2019-06-24 10:40发布

我创建了返回的响应一些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");

在这个例子吗?

Answer 1:

你可以通过做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。



Answer 2:

试试这一段代码,它应该工作太

<%
    //response.setContentType("Content-Type", "application/json"); // this will fail compilation
    response.setContentType("application/json"); //fixed
%>


Answer 3:

@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”



文章来源: Set Content-Type to application/json in jsp file