Struts2框架下拉选择框详解及与Struts1对比

需积分: 21 0 下载量 193 浏览量 更新于2024-08-18 收藏 493KB PPT 举报
本文主要探讨了HTML中的表单标签`<select>`,以及Struts2框架中`s:select`标签的使用,特别针对Java程序员进行讲解。文章通过示例展示了如何创建下拉选择框,并对比了Struts1和Struts2的区别。 在HTML中,`<select>`标签用于创建下拉列表,用户可以从中选择一个或多个选项。例如: ```html <select name="list" id="list"> <option value="Java" selected="selected">Java</option> <option value=".Net">.Net</option> </select> ``` 在这个例子中,`<select>`标签定义了一个名为"list"的选择框,`id`属性用于唯一标识该元素。`<option>`标签则定义了可以选择的值和显示文本。`value`属性是选项的值,`selected`属性表示默认选中的选项。 在Struts2框架中,`<s:select>`标签提供了更为灵活的选项绑定。例如: ```jsp <s:select name="list" list="{'Java','.Net'}" value="'Java'"/> ``` 这里,`list`属性用于绑定一个Java集合,如数组或列表,其值会作为下拉选项。`value`属性指定了默认选中的值。 对于对象和映射的绑定,Struts2同样提供了支持: ```jsp <s:select name="beans" list="#request.persons" listKey="personid" listValue="name"/> <s:select name="map" list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}" listKey="key" listValue="value" value="1"/> ``` 在上述例子中,`listKey`和`listValue`分别指定了集合中用于显示和值的属性。`#request.persons`通常是从请求上下文中获取的Map,`personid`和`name`是Map中的键和值。而对于直接的Map对象,如示例中的#{...},`key`和`value`属性则直接对应Map的键和值。 接下来,文章提到了Struts框架的发展历程。Struts1虽然在早期非常流行,但由于其与JSP/Servlet的紧密耦合,以及单一的表现层技术,逐渐暴露出一些问题。因此,Struts2应运而生,它融合了WebWork框架,解决了Struts1的很多局限性,提供了更强大的拦截器机制和更灵活的视图层支持。 Struts2的处理流程大致如下: 1. 浏览器发起请求。 2. FilterDispatcher(核心控制器)根据请求调用相应的Action。 3. WebWork的拦截器链处理通用功能,如验证。 4. Action的`execute`方法执行业务逻辑。 5. 处理结果返回给浏览器,支持多种视图展示方式。 与Struts1相比,Struts2的改进包括但不限于: - 更低的侵入性,减少对API的依赖。 - 拦截器链使得扩展性和可测试性更强。 - 支持更多视图技术,如FreeMarker和Velocity等。 - 更好的类型安全性和动态方法调用。 本资源提供了关于HTML`<select>`标签和Struts2`s:select`标签的基础知识,同时深入介绍了Struts1与Struts2框架的差异和改进之处,对于理解Java Web开发中的表单处理和MVC框架有很好的帮助。