`

jsp脚本、jsp声明、jsp输出表达式、javascript、jsp标签、struts2标签、struts2 action传值问题

 
阅读更多

源自:

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。例如:

 <%
    ValueStack vs = (ValueStack) request.getAttribute("struts.valueStack");
    User user=(User)vs.findValue("user");  

    String name=vs.findValue("name");  

 %>

其中,user和name是action中定义的成员变量,并有对应的getter和setter方法。

5. jsp标签、struts2标签、struts2 action之间

struts2 action要访问jsp标签、struts2标签的值,需要有和标签同名的变量,并有对应的getter和setter方法,这是struts2的传值机制。当然,struts2 action传值给result中转向的jsp页面中的jsp标签、struts2标签时,也使用同名机制。注意,值的传递是单次的,也就是说,如果jsp1->action1->jsp2,jsp1只能传值给action1。

 jsp标签、struts2标签通过页面中的form或s:form将值传递给action,action通过setter方法或直接给与标签同名的action成员变量赋值的方法将值传递给jsp页面。

1)对jsp标签来讲,需要使用<s:property>访问action传来的值。例如:

<input name="name" type="text" class="form_field_default" size="50" id="name" value="<s:property value="user.name"/>" >

<input name="name" type="text" class="form_field_default" size="50" id="name" value="<s:property value="name"/>" >

前者传过来的user是对象,有name属性;后者传过来的name是简单类型数据,如string。

2)对struts2标签来讲,需要%{变量}的方式访问传来的值。例如:

<s:textfield name="name" id="name"  size="40"  value="%{user.name}"> </s:textfield>  

<s:textfield name="name" id="name" size="40"  value="%{name}"> </s:textfield>  

 6. jsp输出表达式、struts2 action之间

jsp输出表达式也可以直接输出struts2 action传来的值。例如:

<%=pageNum * pageSize%>

其中,pageNum和pageSize是struts2 action传来的值。

7. javascript访问struts2 action传来的数据

使用s:property读取即可。下例中,smsUnit是从action传过来的变量。

document.getElementById("smsUnit").value="<s:property value="smsUnit"/>"

分享到:
评论

相关推荐

    Struts2标签集锦(附Struts2标签详解word文档)

    在实际使用中,Struts2标签的灵活性和便利性体现在数据绑定上,它可以直接与Action类的属性进行交互,无需繁琐的EL表达式。例如,`&lt;s:textfield name="username"&gt;`会自动找到对应的Action中的`username`属性,并将...

    struts1.2标签实例

    Struts1.2标签库大大简化了视图层的开发,使开发者可以避免过多地在JSP中编写Java脚本和表达式语言,从而提高了代码的可读性和可维护性。 一、Struts1.2标签库概述 Struts1.2标签库包含了一系列与ActionForm、...

    struts2官方例子3--使用Struts2标签

    在例子中,你可以看到如何在JSP页面上使用Struts2标签,以及如何在Action类中处理这些数据。同时,还可以学习到如何配置Struts2的配置文件(struts.xml)来关联标签和Action,以及如何设置Action的属性。 总结,...

    Struts2综合演示实例

    在这个综合演示实例中,我们将深入探讨如何使用Struts2框架,结合SQL、JDBC、Java、JSP、JavaScript以及Struts2标签库和OGNL表达式来创建一个完整的应用。 首先,让我们了解Struts2的核心概念。Struts2框架提供了一...

    基于 JSP+Struts2医院挂号系统

    【JSP+Struts2医院挂号系统】是一个典型的Web应用程序,它利用了Java服务器页面(JSP)技术和Struts2框架来构建一个高效、可扩展的医院管理平台。该系统旨在提升医疗机构的服务质量和效率,通过在线预约挂号、患者...

    JSP项目+Struts框架实现

    开发者可以通过声明式和脚本元素在JSP页面上编写代码,结合HTML和Java表达式,使得前端和后端的交互更为直观。 ### Struts框架 Struts是一个开源的MVC(Model-View-Controller)框架,它是Java EE应用程序开发中的...

    jsp+struts小项目-2

    但通常一个基于Struts的项目会包含以下组件:Web应用配置文件(web.xml)、Struts配置文件(struts-config.xml)、Action类、JavaBean类、JSP页面、以及其他必要的资源文件(如图片、CSS样式表、JavaScript脚本等)...

    仓储管理系统(struts2+ibatis+jsp+jquery)

    在这个系统中,Struts2作为控制器负责处理用户的请求,Ibatis作为数据持久层框架用于数据库操作,而jsp和jQuery则分别在视图和前端交互上发挥作用。DWZ(UI Framework)可能被用作前端页面的布局和组件库。 **...

    JSP2 编程指南:从初学者到专家

    而脚本元素则包含Java代码,如声明、脚本片段、表达式等。JSP2鼓励使用EL来减少脚本元素,以提高页面的可维护性。 ### JSP2的标签库 JSP2支持自定义标签库,使得开发人员能够创建可重用的组件,这些组件可以像HTML...

    java+jsp+struts2电子商务小项目

    它可能包含了Struts2的配置文件(struts.xml)、Action类(用于处理业务逻辑)、JSP页面以及其他的辅助资源,如CSS样式表和JavaScript文件。开发者可以通过分析这个文件来理解项目结构,学习如何实现用户注册登录、...

    运用JSP+Struts+JSTL技术的MVC架构项目实例源码.rar

    JSP页面通常包含了HTML、CSS和JavaScript,以及嵌入的Java脚本元素,如声明、脚本片段、表达式和指令,用于生成动态内容。 Struts是Apache软件基金会的一个开源项目,它是一个基于MVC设计模式的Java Web应用程序...

    struts的九个必备常用包

    9. **struts-scripting**:支持脚本语言(如Groovy、JavaScript)的标签库,使得开发者可以在JSP页面中直接编写脚本,增强页面交互和动态功能。 了解并熟练掌握这些核心包的使用,对于开发高效、可维护的Struts应用...

    JSP源码 基于struts的图书管理系统_struts_ts.rar

    【标题】"JSP源码 基于struts的图书管理系统_struts_ts.rar" 提供的是一个使用Java Server Pages(JSP)技术,并结合Struts框架开发的图书管理系统的源代码。Struts是一个开源的MVC(Model-View-Controller)框架,...

    java strtus jsp javascript

    `JAVA JSP study.chm`可能涵盖JSP基本语法、JSP动作标签、EL(表达式语言)、JSTL(JavaServer Pages Standard Tag Library)以及Servlet的关联知识。学习JSP,你需要理解请求响应生命周期、隐式对象以及如何通过JSP...

    Struts2无刷新实现登陆退出

    在这个项目中,"Struts2无刷新实现登陆退出"是通过整合Struts2框架、JavaScript库如jQuery和Ajax技术,以及OGNL(Object-Graph Navigation Language)表达式来实现的一种优化用户体验的登录和退出功能。 首先,让...

    jsp源码(非常好)

    2. **Java表达式**:`&lt;%= %&gt;` 是JSP中的表达式标签,它将Java表达式的值转换为字符串并插入到HTML输出流中。例如,`() %&gt;` 将显示用户的名字。 3. **脚本元素**:JSP允许在页面中使用 `! %&gt;` 和 `&lt;script&gt;` 标签来...

    Struts2-网上投票系统

    10. **安全性考虑**:Struts2提供了一些安全插件和配置来防止XSS(跨站脚本攻击)、CSRF(跨站请求伪造)等安全问题。在设计投票系统时,需要确保这些安全措施已经得到充分实施。 综上所述,"Struts2-网上投票系统...

    struts2.jar包(完整版).rar

    4. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,用于在Action与视图之间传递数据。OGNL提供了强大的表达式解析能力,可以方便地访问对象属性、执行方法等。 5. **插件支持*...

Global site tag (gtag.js) - Google Analytics