簡體   English   中英

在jsp文件中將Content-Type設置為application / json

[英]Set Content-Type to application/json in jsp file

我創建了一些jsp文件,作為響應返回一些json字符串。 但我發現Content-Type自動設置為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 =“mimeType [; charset = characterSet]”| “text / html的;字符集= ISO-8859-1”

JSP文件的MIME類型和字符編碼用於它發送給客戶端的響應。 您可以使用對JSP容器有效的任何MIME類型或字符集。 默認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 %>

提供回調時,返回:

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

內容類型為“text / javascript”

如果未提供回調,則返回:

    {...JSON stuff...}

內容類型為“application / json”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM