`
梦想家dream
  • 浏览: 63238 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

struts2从零开始(六)

阅读更多
  
      知识点:struts2页面标签和ognl
       1、struts2页面标签
          要使用struts2的标签必须在jsp页面导入<%@ taglib prefix="s"  uri="/struts-tags"%>
      1.1、select标签(代码如下)
    
 <!-- select标签 #表示取值栈中的值 attr. 不需要指定作用域--> 
     <s:select list="#attr.list"  name="mylist" listKey="age" listValue="uname" headerKey="0" headerValue="请选择" size="7" >
         
     </s:select>

    注意:#表示取值栈中的值,而attr表示不需要指定作用域,用的比较多,但是用request也是可以的。
         struts2首先访问jsp页面的时候,不会像struts1一样调用get方法来初始化页面的标签,而是直接到值栈中去拿值(容错能力比struts1强)

     1.2、checkboxlist标签(代码如下)
     
 <!-- 复选框 checkbox -->
       <s:checkboxlist list="#attr.list" name="mycheckbox" listKey="age" listValue="uname"  ></s:checkboxlist>


  注意:当在页面上选中select标签的值或者checkbox的值,假如要在后台拿选择的情况,则必须定义相应的变量,命名必须和页面相应标签的名字相同,当是checkbox时,则action中定义拿值的变量必须是数组。假如页面有多个标签则后台必须有相对应的拿值属性,否则会报空指针错误(代码如下)
        
package cn.zhuojingxinxi.web;

import java.util.ArrayList;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import cn.zhuojingxinxi.entity.Users;

public class UsersAction {

	 private Users users=null;
	 private int [] mycheckbox;
	 private int [] mylist;

	public int[] getMycheckbox() {
		return mycheckbox;
	}

	public void setMycheckbox(int[] mycheckbox) {
		this.mycheckbox = mycheckbox;
	}

	public int[] getMylist() {
		return mylist;
	}

	public void setMylist(int[] mylist) {
		this.mylist = mylist;
	}

	public int[] getCheckbox() {
		return mycheckbox;
	}

	public void setCheckbox(int[] mycheckbox) {
		this.mycheckbox = mycheckbox;
	}

	public Users getUsers() {
		return users;
	}

	public void setUsers(Users users) {
		this.users = users;
	}
	   
	
	public String execute(){
	    ServletActionContext.getRequest().setAttribute("list", getList());
	      if(mycheckbox!=null){
	    	
	    	for (int i = 0; i < mycheckbox.length; i++) {
	    		System.out.println(mycheckbox[i]);
	    		
	    	}
	    }
		return "success";
	}
	
	
	public List<Users> getList(){
		  List<Users> list=new ArrayList<Users>();
		  Users users1=new Users();
		  users1.setUname("zhangsan");
		  users1.setAge(21);
		  list.add(users1);
		  
		  Users users2=new Users();
		  users2.setUname("lisi");
		  users2.setAge(24);
		  list.add(users2);
		  
		  Users users3=new Users();
		  users3.setUname("wangwu");
		  users3.setAge(25);
		  list.add(users3);
		  
		  return list;
		
		
		
	}
}


    1.3、迭代(见证ognl的强大之处,能够调用后台的方法这是EL表达式不能做到的)
         
 <s:iterator value="#attr.list" status="i" id="u">
         
           <s:property value="#u.test()"/>
         
         
         </s:iterator>


   其中test方法是定义在后台实体类Users中的。执行这段代码能在页面中输出三个sss
      
package cn.zhuojingxinxi.entity;

public class Users {
	private String uname;
	private int age;
	
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public String test(){
		return "ssss";
	}
	
	
	
	
	
	

}

  

    # 的三种用途:1、取值栈中的值
                   
 <s:set name="myage" value="20"></s:set>
         
           <s:property value="#myage"/>

                  2、投影一个集合
                  ? 的用途是给条件
                   
<s:iterator value="#attr.list.{?#this.age>20}.{uname}">
              <s:property />
           
           </s:iterator>

                  3、构建一个map
              
<s:set name="mymap" value="#{'one':'first','two':'second'}"></s:set>
           
           <s:iterator value="#mymap">
                <s:property value="key"/>
                <s:property value="value"/>
           
           </s:iterator>



    % 取资源文件中的内容(或者计算字符串的值类似于js中的eval,可用于做国际化)
       
 <s:submit value="%{#mymap.one}"></s:submit>

       
 <s:textfield name="ssss" label="%{getText('uname')}"></s:textfield>

        以上拿的是国际化资源文件中键为uname的值,假如在action要拿资源文件中的值可以继承actionSupport,然后可以在execute方法中调用this.getText("uname");
    

    @ 表示调用静态方法
    
  <s:if test="@cn.zhuojngxinxi.biz.UserService@login('aasssaa')">
                     登录成功
                 </s:if>
                <s:else>
                    失败
                </s:else>

  后台login代码:
   
package cn.zhuojingxinxi.biz;

public class UserService {
	
	public static Boolean login(String uname){
		if(uname!=null&&uname.length()>6){
			
			return true;
		}
		
		   return false;
		
		
	}

}

  

源码下载请点这里:
   
分享到:
评论

相关推荐

    struts2从零开始(一)

    NULL 博文链接:https://1136051009.iteye.com/blog/1768000

    struts2从零开始(七)

    本教程将带你从零开始学习Struts2,通过第七个部分的内容,我们将深入理解其核心概念和实际应用。 首先,让我们探讨Struts2的基础知识。Struts2是Apache软件基金会的产品,它是基于Struts1的升级版,引入了更多现代...

    struts2从零开始(三)

    在"Struts2从零开始(三)"这个主题中,我们将会深入探讨Struts2的核心概念和实际应用,逐步了解如何使用Struts2来构建一个Web应用程序。 1. **MVC设计模式**:Struts2遵循Model-View-Controller(MVC)设计模式,...

    struts2从零开始(四)

    本教程将从零开始,帮助你深入理解并掌握Struts2的核心概念和实践技巧。 首先,我们要理解Struts2的核心架构。Struts2通过拦截器(Interceptor)机制实现了请求处理流程的控制,它允许开发者插入自定义的逻辑来扩展...

    struts2从零开始(二)

    在“Struts2从零开始(二)”这个主题中,我们将会深入探讨Struts2的核心概念和实践操作,以帮助初学者更好地理解和掌握这个框架。 首先,Struts2的核心在于它的Action类,它是业务逻辑处理的主要组件。Action类...

    struts2从零开始(五)

    本篇文章将从零开始,逐步介绍如何使用Struts2进行开发,带你走进Struts2的世界。 首先,让我们理解Struts2的核心概念。Struts2是一个轻量级、可扩展的MVC框架,它继承了Struts1的优点并解决了其不足,如性能问题和...

    Struts 从零开始

    这个"Struts 从零开始"的压缩包显然是为初学者提供的一套学习资源,包含了六个基础练习工程,帮助理解并实践 Struts 框架的关键概念和功能。 首先,让我们深入了解一下 Struts 框架的核心组件和原理: 1. **控制器...

    简述STRUTS2_Convention零配置

    从Struts2.1版本开始,推荐使用Convention插件替代Codebehind插件,因为它更加自动化,几乎无需手动配置。 Convention插件的工作原理是基于“约定优于配置”(Convention over Configuration)的原则,它会自动识别...

    struts2零配置个人整理文档

    ### Struts2零配置个人整理文档 #### 一、Convention插件详解 ##### 1. 设置结果页面路径 - **背景介绍**:Struts2框架提供了便捷的方式来处理Web请求,并返回响应视图。为了简化配置过程,Struts2提供了一个名为...

    如何使用struts2的零配置插件convention

    从Struts2.1版本开始,`Codebehind`插件被`Convetion`插件取代,以提供更全面的零配置支持。`Convetion`插件通过自动扫描和推理应用程序中的类和方法来配置Action和结果映射,不需要开发者显式地在`struts.xml`或...

    struts2资源包

    使用这个“struts2资源包”,开发者可以快速搭建一个基于Struts2的Web应用,无需从零开始配置所有的依赖。通过导入这些库,你可以实现动作类的定义、拦截器的设置、结果页面的跳转、表单验证、国际化、文件上传下载...

    从零开始创建基于struts1.2 + Hibernate3.0的Web工程

    2. 例子工程说明..........................................................3 3. 建立工程..............................................................4 3.1. 创建新的Web Project ..........................

    使用Struts2和jQuery EasyUI实现简单CRUD系统

    在本文中,我们将探讨如何使用Struts2和jQuery EasyUI框架创建一个简单的CRUD(创建、读取、更新、删除)系统。首先,我们需要理解这两个技术的基础概念。 Struts2是一个基于MVC(Model-View-Controller)架构的...

    struts2零配置入门代码

    在“struts2零配置入门代码”这个主题中,我们将深入探讨如何在不编写大量XML配置文件的情况下,启动并运行一个基本的Struts2应用程序。 Struts2的核心在于它的Action类,它是业务逻辑处理的主要组件。在“零配置”...

    struts2参考文档(word版)

    最后,文档可能包含了一些实战示例,引导读者从零开始搭建一个完整的Struts2项目,通过实际操作加深对理论知识的理解。 总的来说,这份Struts2参考文档全面覆盖了Struts2框架的主要概念和技术,对于想要学习或已经...

    Struts2权威指南完整版

    12. **实战案例**:通过实际项目示例,展示如何从零开始构建一个完整的Struts2应用,涵盖需求分析、设计、编码和测试的全过程。 通过阅读《Struts2权威指南》,开发者不仅可以掌握Struts2框架的使用,还能深入理解...

    轻松入门之struts2 3.0版

    10. **实战项目**:通过一个实际的小型项目,展示如何从零开始搭建一个基于Struts2 3.0的应用,涵盖了上述所有知识点的综合运用。 通过阅读“轻松入门之Struts2 3.0版”,开发者不仅能掌握Struts2的基本用法,还能...

    ajax与Struts2交互实例

    使用Struts2和jQuery EasyUI实现简单CRUD系统,从零开始,从基础的ajax与Struts2的交互开始。

Global site tag (gtag.js) - Google Analytics