2011-10-03 4 views
0

JSP로 데이터베이스 쿼리에서 JSON 문자열을 생성하고 있지만 항상 인쇄 할 수없는 문자가 포함되어 있습니다. 왜 그런지 이해하지 못합니다!json 문자열에 28 개의 인쇄 할 수없는 문자가있는 이유는 무엇입니까?

String user = "username"; // set a username 
    String password = "password"; // set a password 
    Class.forName("org.firebirdsql.jdbc.FBDriver"); // JDBC for firebird a.k.a. Jaybird 
    String DB = "jdbc:firebirdsql://123.123.123.123:3050/C:\\db.fdb"; 

    JSONArray obj=new JSONArray(); //Creating the json object 

    Connection connection = DriverManager.getConnection(DB, user, password);    
    Statement statement = connection.createStatement(); 

    int i=0; 
    Class.forName("org.firebirdsql.jdbc.FBDriver"); // JDBC for firebird a.k.a. Jaybird 
    String query = "SELECT ses.sessionid, ses.datetime, ses.guid, ses.staffid FROM session ses ORDER by ses.datetime"; 
    ResultSet resultset = statement.executeQuery(query); 

    while (resultset.next()) 
    { 
    JSONObject j = new JSONObject(); 
    j.put("SessionID", resultset.getString("sessionid")); 
    j.put("DateTime", resultset.getString("datetime")); 
    j.put("GUID", resultset.getString("guid")); 
    j.put("StaffID", resultset.getString("staffid")); 
    obj.add(i, j); 
    i++; // Counter for indexing the JSONArray 
    } 

    resultset.close(); 
    statement.close(); 
    connection.close(); 

그리고 이것은 내가 디스플레이에 PHP에서 사용하고있는 코드입니다 :

는 JSP는 JSON을 생산하는 아래 보여줍니다

echo '*'.$json.'*<br>'; 
    echo strlen($json).'<br>'; 
    $json = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json); 
    echo '*'.$json.'*<br>'; 
    echo strlen($json).'<br>'; 

:

* [{"SessionID":"850","DateTime":"2011-10-03 14:21:37.0","GUID":"51e71c19-ca13-4053-bd95-2addb5ba69f6","StaffID":"804"}] * 
146 
*[{"SessionID":"850","DateTime":"2011-10-03 14:21:37.0","GUID":"51e71c19-ca13-4053-bd95-2addb5ba69f6","StaffID":"804"}]* 
118 

28 개의 인쇄 할 수없는 문자의 차이 - 대부분 처음부터. 그들은 어떻게 거기에 가고 있으며 JSP에서 어떻게 제거 할 수 있습니까?

감사합니다.

답변

1

JSP는 HTTP 응답의보기 기술 부분이기 때문입니다. <% %> 외부의 모든 것은 공백과 개행 문자를 포함하여 응답으로 보내집니다 (PHP에서 생성 된 HTML 페이지를 마우스 오른쪽 버튼으로 클릭하면 소스보기) 그리고 그 줄 바꿈을 직접 볼 수 있습니다.이 줄 바꿈은 "인쇄 할 수 없음 "문자).

<% %> 외부의 공백과 개행을 제거하거나 대신 servlet을 사용하십시오. JSON을 생성하는 Servlet의 몇 가지 예를 찾을 수 있습니다. How to use Servlets and Ajax?

+0

응답 해 주셔서 감사합니다. 그렇게 많은 공백이 없으며 대부분은 내가 제어 할 수없는 "@page import"에서옵니다. 서블릿이 유일한 방법이기 때문에 모든 코드를 다시 작성해야합니다. – williamsdb

+0

줄 바꿈을 포함하여'%>'와'<%'사이의 공백을 제거하십시오. 모든 코드를 다시 작성할 필요가 없습니다. 그냥'doGet()'메소드에 copypasting하는 것이 좋습니다. 'out'을'response.getWriter()'로 준비하면됩니다. Java 클래스 대신 JSP 파일에 Java 코드를 작성하는 것은 어쨌든 바람직하지 않습니다. 그냥 절대로하지 마십시오. http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files도 참조하십시오. – BalusC

관련 문제