Java My jsp给出生成的servlet错误:转义序列无效(有效的是\b\t\n\f\r\";&x27;\)

Java My jsp给出生成的servlet错误:转义序列无效(有效的是\b\t\n\f\r\";&x27;\),java,jsp,Java,Jsp,我试过双反斜杠,但它总是给我同样的错误。以下是我正在使用的代码: <%@ page import="java.io.*"%> <%@ page import="java.sql.Connection"%> <%@ page import="java.sql.DriverManager"%> <%@ page import="java.util.HashMap"%> <%@ page import="java.util.Map"%&g

我试过双反斜杠,但它总是给我同样的错误。以下是我正在使用的代码:

<%@ 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>
正如@S.R.I所提到的,
字符串中的“\”必须转义:“\”。正确的路线是:

conn = DriverManager.getConnection("jdbc:sqlserver://DC1VCWSQL105\\sql05:1433;databaseName=TD_DA_Test;integratedSecurity=True");

更好的办法是-

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);
在您的连接url中

jdbc:sqlserver://DC1VCWSQL105\sql05:1433;databaseName=TD_DA_Test;integratedSecurity=True
Java编译器将
\s
视为转义,并导致它不是有效的转义。因此发生了错误

Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )  
改用
\\s
,Java编译器将
\
视为转义,而
s
视为字符。

以下是有关转义字符和序列的一些信息。
您的代码有一个转义字符
\
,后面必须跟有正确的转义序列,在您的情况下,如我所见,您希望字符串中有一个
\
,如果是这样,只需在那里键入
\
,此转义序列将被替换为输出字符串中的一个
\

您可能是指此行中的“\\”或“/”:
conn=DriverManager.getConnection(“jdbc:sqlserver://DC1VCWSQL105\sql05:1433;databaseName=TD_DA_Test;integratedSecurity=True”)。(注意那里的
\s
代码不属于JSP。这是一个1998年的老主意。更值得注意的是,您知道JSTL。为什么不使用标签呢?非常感谢!我正在处理一项遗产,将改为JSTL,它甚至可以使用
/
而不是`\`(URL语法)。这是真的。我没有验证URL,只是更正了即时错误。
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )