繁体   English   中英

JSP中getServletContext()。getRealPath(“ /”)的未终止字符串文字

Unterminated String Literal from getServletContext().getRealPath(“/”) in JSP

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这是我在上一个问题得到回答后出现的错误。 本质上,我试图随身携带该文件夹的absPath,以便无论我的代码位于何处,我都可以在运行时创建一些文件。 建议我使用

getServletContext().getRealPath("/");

找到正确的路径。

我在JSP页面中尝试了该方法,但是在创建absPath变量时,我得到了一个无终止的字符串文字。 这是我尝试运行的脚本。

<script type="text/javascript">
        var RemoteUserId = "<%=(request.getRemoteUser()==null)? "blah" : request.getRemoteUser()%>";
        var contextPath = "<%= request.getContextPath()%>";         
        var extPath = "<%=extPath%>";
        var absPath = "<%=getServletContext().getRealPath("/")%>";
        var env='<%=string1%>';
</script>

我想念什么? 我是否必须对返回的路径名进行转义,还是在应该使用此名称时误解了。

编辑**这是源在访问页面时显示的内容
(略有调整,所以我没有显示完整的C:路径)

<script type="text/javascript">
        var RemoteUserId = "blah";
        var contextPath = "/TRACK";         
        var extPath = "http://xxx/sales/it/tlp/ext-3.2.1";
        var env='null';
        var absPath = "C:\Documents and Settings...\TRACK\";
</script>
1 个回复

像Java中一样,反斜杠是JS中的转义字符。 您需要转义它们以表示文字反斜杠。 换句话说,您的absPath变量必须以

var absPath = "C:\\Documents and Settings...\\TRACK\\";

你可以这样做

var absPath = "<%=getServletContext().getRealPath("/").replace("\\", "\\\\")%>";

但是,对我来说,通过JavaScript将Java变量传递回Java毫无意义。 当代码将要处理请求时,只需在Java端访问它即可。 假设您正在使用servlet处理请求,只需执行

String absPath = getServletContext().getRealPath("/");

代替

String absPath = request.getParameter("absPath");

(或您为使absPath返回Java代码所做的absPath操作)

还要注意,所有JavaScript代码都可以由客户端完全控制/欺骗/入侵。 客户端可以在代码运行时编辑JavaScript变量。 例如,客户端可以在使用之前更改路径。 请记住这一点!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题
 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM