这几天在学习Jsp过程中遇到了一系列关于引号的问题,与html中的语法易混淆,让人超级超级郁闷!经过编写案例反复测试,终于解决啦!下面总结出了单、双引号的用法,让我们一起来看看吧!
首先, 需要明确的是,单引号与双引号混用是Jsp中的语法;在html中,只能用双引号。
-
我们先来看一下在只有双引号的运用(html中):
PrintWriter pw = resp.getWriter(); //Servlet语法 pw为输出到浏览器(区别于System类输出到控制台) pw.println("<html><body>"); pw.println("<a href=welcome?userId="+ub.getUserId()+">你好,我是html</a>"); pw.println("</body></html>");
双引号 两两为一对,一对引号中的字符串直接输出到浏览器,即 “<a href=welcome?userid=” 和 “>你好,我是html” 为字符串直接拼接,中间的 ub.getUserId() 则是调getUserId(),获取值后,把值拼接进来。也就是说上面的超链接输出到浏览器,点击“你好,我是html“ 后,跳转到:welcome?userId= ub.getUserId()
- 而当我们遇到了引号的嵌套时,就需要加转义字符了(html中):
/**
* 双引号 两两为一对,一对引号中的字符串直接输出到浏览器,
*
* 即下面的超链接输出到浏览器,点击“你好,我还是html“ 后,弹出”确认跳转页面“,点击后再跳转到:welcome?userId= ub.getUserId()
*/
PrintWriter pw = resp.getWriter(); //Servlet语法 pw为输出到浏览器(区别于System类输出到控制台)
pw.println("<html><body>");
pw.println("<a href=welcome?userid="+ub.getUserId()+"onclick=\"return window.confirm(\"确认跳转\")\">你好,我还是html</a>");
pw.println("</body></html>");
同理,双引号 两两为一对,一对引号中的字符串直接输出到浏览器,即
“<a href=welcome?userid=” 、 “οnclick=” 、 “确认跳转” 、 “>你好,我还是html” 为字符串直接拼接,中间的 ub.getUserId() 则是调getUserId(),获取值后,把值拼接进来,return window.confirm 是调用了一个确认框
所以,我们很容易得出:上面的超链接输出到浏览器,点击“你好,我还是html“ 后,跳出确认框,确认后就跳转到:welcome?userId= ub.getUserId()
可以发现,上述几个字符串中,有几个双引号加了斜杠 \,斜杠 \ 为转义字符,大家一定联想到了\t、\n 表示跳到下一制表符和换行,如果不加斜杠 \ 就无法表示 ,而 " 与 \ 一样,加了斜杠 \ 才能表示它们本身的 含义
那像这样每次都多加一个斜杠 \ ,我们需要大量编写代码时,岂不是很麻烦?
所以,JSP给出了一种解决方法,单引号和双引号同时交替使用,它们含义相同。我们遇到需要加斜杠的双引号时,只需要改成一个单引号,就可以很方便的解决问题了!
继续沿用上面的小案例,以下两行代码含义相同:
pw.println("<a href=welcome?userid="+ub.getUserId()+"onclick=\"return window.confirm(\"确认跳转\")\">你好,我还是html</a>");
pw.println("<a href=welcome?userid="+ub.getUserId()+"onclick=‘return window.confirm(’确认跳转‘)’>你好,我还是html</a>");