日期:2014-05-16 浏览次数:20332 次
源自:
http://blog.csdn.net/moonsheep_liu/article/details/6768699
?
开发过程中常常遇到值的传递问题,不胜其扰,今天写出一些认识,也可能有的认识是错的,也请看到的大侠给指出来。文中用了不少书上和网上的例子,在此先谢过,就不一一指出了。
?1. 先界定一下题目中概念。
(1)jsp脚本:有的地方也叫java脚本,指用<%%>括起来的jsp页面中的java脚本。所有能在java程序中执行的代码,都可以通过jsp脚本执行。
(2)jsp声明:用<%!声明部分%>形式声明的变量和方法。可以直接用在jsp脚本中。
(3)jsp输出表达式:用<%=表达式%>输出表达式的值,效果与jsp脚本中的out.println相同。表达式后面不能有分号。
(4)javascript:页面中<script></script>之间的代码,简称js。js插入的位置不同,执行效果也不同。放在<head>中的js调用时才执行,而放在<body>部分的在网页读到这部分时就会执行。也可以像添加外部CSS一样添加外部javaScript脚本文件,其后缀通常为.js。例如:
<head>
???????? <script src="example.js"></script>
</head>
(5) 剩下的几个好像就没有必要解释了,在此略过。
2. jsp脚本、jsp声明、jsp输出表达式之间
jsp声明中声明的变量和方法对应于Servlet中的成员变量和方法(可以从tomcat的work\Catalina\localhost目录下找到转换成的类)。可以在jsp脚本和jsp输出表达式中直接使用。
jsp脚本中定义的变量也可以在jsp输出表达式中使用。例如:
<!-- 下面是JSP声明部分 -->
<%!
public int count;
public String info()
{?return "hello";}
%>
<%
Integer i=10;
out.println(count++);
%>
<%
out.println(info());
%>
<%=count++%>
<%=info()%>
<%=i%>
3. jsp标签、struts2标签和javascript之间
用var orgIP=document.getElementById("address").value之类在javascript中获取标签的值。不同的标签方法读取值可能会不同。例如,struts2的autocompleter就需要用下面的方式获得。
?var completer=dojo.widget.byId("name");
?var organizationName=completer.comboBoxSelectionValue.value;
而getElementByName用户获取一组同名的标签。
也可以在javascript中设置标签的值。例如:
document.getElementById("code").value="test";
4. jsp脚本、struts2 action之间
jsp脚本要访问struts2 action传过来的变量,要用到ValueStack。例如:
?<