`

JSP学习笔记(一百二十五):javascript中引用java变量出现换行符等会报错的解决方法

 
阅读更多

源文地址:http://www.cnblogs.com/modou/articles/3572874.html

有这么一种实际情况,就是在javascript代码片段中引用java变量,比如:

<script type="text/javascript">
var str1 = "${javastr1}";
</script>

一般情况下,这么使用是没有问题的,可是如果变量javastr1带有换行符,这段javascript就报错了,需要格式化javastr1。

如果项目中使用了struts2,可以使用freemarker现成的格式化方法:

<s:bean name="freemarker.template.utility.StringUtil" id="stringUtil"/>

<script type="text/javascript">
var str1 = "<s:property value="#stringUtil.javaScriptStringEnc(javastr1)" escapeHtml="false" />";
</script>

如果项目中没有使用struts2,新建一个javaScriptStringEnc方法即可,下面是freemarker里面的javaScriptStringEnc方法:

复制代码
public static String javaScriptStringEnc(String s)
  {
    int ln = s.length();
    for (int i = 0; i < ln; i++) {
      char c = s.charAt(i);
      if ((c == '"') || (c == '\'') || (c == '\\') || (c == '>') || (c < ' ')) {
        StringBuffer b = new StringBuffer(ln + 4);
        b.append(s.substring(0, i));
        while (true) {
          if (c == '"')
            b.append("\\\"");
          else if (c == '\'')
            b.append("\\'");
          else if (c == '\\')
            b.append("\\\\");
          else if (c == '>')
            b.append("\\>");
          else if (c < ' ') {
            if (c == '\n') {
              b.append("\\n");
            } else if (c == '\r') {
              b.append("\\r");
            } else if (c == '\f') {
              b.append("\\f");
            } else if (c == '\b') {
              b.append("\\b");
            } else if (c == '\t') {
              b.append("\\t");
            } else {
              b.append("\\x");
              int x = c / '\020';
              b.append((char)(x < 10 ? x + 48 : x - 10 + 65));

              x = c & 0xF;
              b.append((char)(x < 10 ? x + 48 : x - 10 + 65));
            }
          }
          else {
            b.append(c);
          }
          i++;
          if (i >= ln) {
            return b.toString();
          }
          c = s.charAt(i);
        }
      }
    }
    return s;
  }
复制代码

 

分享到:
评论

相关推荐

    JAVA-JSP学习笔记.doc

    3. **JavaBean参数传递**:JavaBean通常有setter和getter方法来设置和获取属性值,JSP中的`&lt;jsp:setProperty&gt;`标签用于设置JavaBean的属性值,`&lt;jsp:getProperty&gt;`用于获取。 4. **Servlet写出流**:在JSP中,可以...

    Java学习笔记CCS AJAX DMS JSP servlet JavaScript等中文笔记整理.rar

    Java学习笔记CCS AJAX DMS JSP servlet JavaScript等中文笔记整理,可供学习设计参考。

    JSP学习笔记 jsp学习资料

    %&gt;)**:声明变量或方法,它们在Servlet类中作为成员存在。 - **脚本片段()**:在这段代码中可以直接编写Java语句,执行结果会被插入到HTML中相应的位置。 - **表达式()**:将Java表达式的值转换为字符串,直接...

    html javaScript jsp学习笔记

    接着学习JavaScript,理解变量、控制流、函数、对象等概念,并熟悉DOM操作。最后,深入学习JSP,包括JSP指令、脚本元素、EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)等,以及如何与...

    Java相关课程系列笔记之九Servlet学习笔记

    Java相关课程系列笔记之十JSP学习笔记 Java相关课程系列笔记之十一Ajax学习笔记 Java相关课程系列笔记之十二jQuery学习笔记 Java相关课程系列笔记之十三Struts2学习笔记 Java相关课程系列笔记之十四Hibernate学习...

    jsp学习笔记(学习java 的入门)

    【JSP 学习笔记(Java 入门)】 JSP(JavaServer Pages)是一种基于Java技术的动态网页开发工具,旨在实现Web页面内容与业务逻辑的分离。它允许开发者在HTML页面中嵌入Java代码,以生成动态内容。本文将深入探讨JSP...

    JSP学习笔记截屏1

    在《JSP学习笔记截屏1》中,我们可以预见到这是一份关于学习JSP过程中的记录,包含了韩顺平老师的视频教程内容和个人的学习心得。韩顺平老师是一位知名的Java和Web开发领域的讲师,他的课程通常深入浅出,易于理解,...

    林学良Jsp&Servlet学习笔记

    在实际学习过程中,你可能还会涉及到Web容器的概念、部署描述符(web.xml)、请求和响应对象的使用、会话管理、Cookie、过滤器和监听器等进阶话题。通过不断实践和理解,你将能够熟练掌握这两种技术,为构建复杂的...

    Java学习笔记 JDK Eclipse Web JSP 等

    6. **JSP的笔记**可能包括了JSP的组成部分,如脚本元素(声明、脚本let、表达式)、动作标签(比如jsp:include、jsp:forward)、自定义标签的使用,以及MVC模式在JSP中的应用等。此外,JSP和Servlet之间的协作,以及...

    JAVA(JSP+servlet+javascript)课程设计:教务管理系统Java源码

    JAVA(JSP+servlet+javascript)课程设计:教务管理系统Java源码

    良葛格java学习笔记

    《良葛格java学习笔记》是一份集合了Java学习精华的资源,主要针对初学者和对Java编程感兴趣的读者。这份笔记是由用户从良葛格的网站上精心整理并转化为CHM格式,便于阅读和查阅。CHM(Compiled Help Manual)是微软...

    JSP学习笔记总结.doc

    **JSP学习笔记总结** **第 1 章 JSP 和 Web 页面的交互** 1.1 JSP(JavaServer Pages)是Java技术在Web开发中的应用,它允许开发者将静态HTML与动态Java代码结合起来,生成动态网页。通过在HTML页面中嵌入Java代码...

    jsp学习笔记总结(收集)

    这份"jsp学习笔记总结"包含了作者在深入学习JSP过程中积累的宝贵知识,旨在为初学者提供一个全面的指导。 1. **JSP基础概念** JSP是由Sun Microsystems开发的,用于服务器端的脚本语言。它允许开发者使用HTML或者...

    java学习笔记

    java学习笔记大全:java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 java se课程介绍 java面向对象编程(基础) java...

    jsp学习笔记——初学者的选择

    【JSP学习笔记——初学者的选择】 JSP(JavaServer Pages)是JavaEE平台中用于构建动态网页的应用技术。作为初学者,理解JSP的基本概念和技术特性至关重要。 1. **为何选择JSP?** JSP的出现主要是为了解决...

    java超强学习笔记

    2. **面向对象编程**:Java的核心特性之一就是面向对象,笔记可能会讲解类、对象、封装、继承、多态等概念,以及如何通过这些概念来设计和实现复杂系统。 3. **异常处理**:Java的异常处理机制使得程序更加健壮,...

    Java专题学习笔记

    3. **异常处理**:Java中的异常处理机制是其独特之处,笔记会讲述try-catch-finally结构、异常类层次结构、自定义异常以及如何优雅地处理程序运行时可能出现的问题。 4. **字符串处理**:Java中的String类是不可变...

    Servlet &JSP学习笔记NetBeans源代码

    在这个"Servlet & JSP学习笔记NetBeans源代码"压缩包中,你将找到一系列与Servlet和JSP相关的示例代码,这些代码是基于NetBeans IDE编写的,并且是在Tomcat服务器上运行的。 Tomcat是一个开源的轻量级Web服务器和...

    java中级笔记+severlet jsp 分页 ajax等技术的笔记

    JSP的指令元素(如page、include、taglib)和动作元素(如jsp:useBean、jsp:setProperty、jsp:getProperty)提供了声明式编程的能力,简化了Web开发。 3. **分页**:在处理大量数据时,分页技术是非常必要的,它...

    Java学习笔记全部课件和源代码

    "Java学习笔记全部课件和源代码"是一个针对初学者的资源包,它包含了一系列关于Java编程的学习材料和实例代码,旨在帮助新手快速掌握Java语言的基础和实践应用。 在Java学习的初期,理解基础概念至关重要。这包括...

Global site tag (gtag.js) - Google Analytics