0

我试过双反斜杠的东西,但它一直给我同样的错误。下面提供的是我正在使用的代码:

<%@ page  import="java.io.*"%>
<%@ page  import="java.sql.Connection"%>
<%@ page  import="java.sql.DriverManager"%>
<%@ page  import="java.util.HashMap"%>
<%@ page  import="java.util.Map"%>
<%@ page  import="net.sf.jasperreports.engine.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Planning</title>
    </head>
    <body>
        <h2>Planning</h2>
        <%
            Connection conn = null;
            try {
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                conn = DriverManager.getConnection("jdbc:sqlserver://DC1VCWSQL105\sql05:1433;databaseName=TD_DA_Test;integratedSecurity=True");
        } catch (Exception ex) {
            ex.printStackTrace();


        }
        File reportFile = new File(application.getRealPath("//bespoke//rapport//Planning.jasper"));
        Map parameters = new HashMap();
        byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);

        response.setContentType("application/pdf");
        response.setContentLength(bytes.length);
        ServletOutputStream outStream = response.getOutputStream();
        outStream.write(bytes, 0, bytes.length);
        outStream.flush();
        outStream.close();
    %>

</body>

为什么 \ 在我的情况下不起作用?确切的错误是:

发生了错误:

PWC6033: Unable to compile class for JSP PWC6197: An error occurred at line: 18 in the jsp file: /bespoke/rapportplanning/Planning.jsp PWC6199: Generated servlet error: Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )  
org.apache.jasper.JasperException: PWC6033: Unable to compile class for JSP PWC6197 
4

4 回答 4

1

正如@SRI 提到的,String必须转义 a 中的“\”:“\”。正确的行是:

conn = DriverManager.getConnection("jdbc:sqlserver://DC1VCWSQL105\\sql05:1433;databaseName=TD_DA_Test;integratedSecurity=True");
于 2013-08-23T09:10:19.443 回答
1

更好的方法可能是 -

String url = "jdbc:oracle:thin:@amrood:1521:EMP";
String user = "username";
String pass = "password"
Connection conn = DriverManager.getConnection(url, user, pass);

或者您可以在属性文件中移动这些属性,然后使用 -

DriverManager.getConnection(String url, Properties info);
于 2013-08-23T09:20:22.660 回答
0

在您的连接网址中

jdbc:sqlserver://DC1VCWSQL105\sql05:1433;databaseName=TD_DA_Test;integratedSecurity=True

Java 编译器会将\s其视为转义并导致它不是有效的转义。于是就出现了错误。

Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )  

相反,Java 编译器\\s会将\\其视为转义和s字符。

于 2013-08-23T09:20:47.833 回答
0

http://en.wikipedia.org/wiki/Escape_character这里是一些关于转义字符和序列的信息。您的代码有一个转义字符\,必须跟随正确的转义序列,在您的情况下,如我所见,您希望\在字符串中有一个,如果是这样,只需在那里输入,\\这个转义序列将被替换为只有一个\你的输出字符串。

于 2013-08-23T09:20:58.287 回答