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 \" \' \\ )