`
:倾诉
  • 浏览: 24057 次
  • 性别: Icon_minigender_1
  • 来自: 广东揭阳
社区版块
存档分类
最新评论

etxjs+ssh的CURD(2)

阅读更多

接着是用户管理.不过,这里的Ext代码还没有用到面向对象的思想,

因为看论坛里有朋友说不喜欢看完整一大堆代码,所以我这里只贴一部分,如果有朋友需要完整的请下载附件,

我自己也还在学习阶段,如果朋友有好的建议请留留言,谢谢!!

 

前台部分代码:

 

一个grid是必要的

var grid = new Ext.grid.GridPanel({
   loadMask:{msg:'正在加载数据,请稍后'},//加载时显示的信息
   store:store,//加载名为store的数据集
   columns:[//要显示的列
       new Ext.grid.RowNumberer,//获得行号
      {header:'ID',dataIndex:'userid',sortable:true},
      {header:'用户名',dataIndex:'username'}//dataIndex对应store的fields中的字段
   ],
   bbar:new Ext.PagingToolbar({//定义分页工具栏
	store:store,//同样要指定对哪个store进行分页
	pageSize:5,//每页数据数
	displayInfo:true,//true时显示displayMsg,emptyMsg等提示信息
	displayMsg:'第{0}条到{1}条,一共{2}条', 
	emptyMsg:'没有记录'
   }),
   tbar:[{
      text:"新增用户",
      handler:addUser
   },"-",{//"-"到页面显示成"|"分隔符状

   }]
});

 这个grid加载的store我在外面定义,在grid中定义也行的

var store = new Ext.data.JsonStore({
   reader:new Ext.data.JsonReader(),//用于将一个json对象转换为元数据对象
   autoLoad:{params:{start:0,limit:5}},//如果有值传入,那么store的load会自动调用,加载时会将params中的属性发送到后台
   root:'result',//指定包含所有行对象的数组名
   totalProperty:'totalProperty',//总记录数
   proxy:new Ext.data.HttpProxy({ //用访问数据对象,用于访问某个url的
      url:'admin!queryAllUser.action'
   }),
   fields:["userid","username","password","sex","age"]//从后台接受的字段
});
 

新增用户和更新用户代码差不多,我就说更新用户的,但是radiogroup加载不到,我在网上暂时找不到合适的解决方法,如果有朋友知道麻烦留言指点一下

 

 

function updateUser(){
   var record = grid.getSelectionModel().getSelected();//获得当前选中的行的全部数据
   if(!record){//说明没选中任何一行
	 Ext.Msg.alert("提示","请选择一条记录");
   }
   if(!win){//如果win存在,就不用创建,配合closeAction使用
	var win = new Ext.Window({
	closeAction:"hide",//表示关闭窗口时将窗口隐藏,因为新建一个窗口将消耗不小的资源,速度也慢
	items:[{
		xtype:"form",//定义window中有一个form组件,用于提交数据
           	method:"post",
		items:[{
			xtype:"panel",
			layout:"column",
			labelWidth:50,
			border:false,
			items:[{
                           xtype:"panel",
                           layout:"form",
                           border:false,
		           items:[{
				xtype:"hidden",//不允许
				name:"userid"
			   },{
				xtype:"textfield",
				fieldLabel:"用户名",
				name:"username"
			  }]
		      },{
			xtype:"panel",
			layout:"form",
			border:false,
			items:[{
				xtype:"textfield",
				fieldLabel:"密码",
				name:"password",
				inputType:"password"
			}]
		   }]
		},{
			xtype:"panel",
			border:false,
			layout:"form",
			items:[{
				xtype:"radiogroup", 
			        fieldLabel : "类型", 
			        columns:1, //三个空心圆排成一竖列
			        items : [{
			             name : "sex",  
			             inputValue : "男",  //选中后sex的值是"男"
			             boxLabel : "男"
			         },{  
			             name : "sex",  
			             inputValue : "女",  
			             boxLabel : "女"
			         },{  
			              name : "sex",  
			              inputValue : "未知",  
			              boxLabel : "未知"
			        },]
			},{
				xtype:"panel",
                                layout:"form",
				border:false,
				items:[{
					xtype:"numberfield",
					fieldLabel:"年龄",
					name:"age"
				}]
			}]
		}]
	}]	,
	buttons:[{
		text:"保存",
		handler:function(){
			win.getComponent(0).getForm().submit({//getComponent(0)表示获得win的第一个组件,即form,再调用getForm()方法获得basicform对象,操作表单数据都要通过这个对象
				url:"admin!updateUser.action",
				success:function(){
				   Ext.Msg.alert("提示","更新用户成功");
				   win.close();
				   store.reload();
				}
			});
		}
	},{
		text:"重置",
		handler:function(){
			win.getComponent(0).getForm().reset();
		}
	},{
		text:"取消",
		handler:function(){
			win.close();
		}
	}]						
     });
     win.getComponent(0).getForm().loadRecord(record);//加载这一行的数据,但是radiogroup加载不到,我在网上暂时找不到合适的解决方法,如果有朋友知道麻烦留言指点一下
     win.show();
   }
}

 最后还有删除用户:

 部分代码如下

function deleteUser(){
   var record  =  //同上
   Ext.Msg.confirm("提示","是否确定删除?",function(b){//参数是响应的值
	if(b == "yes"){
		var userId = record.get("userid");//record获得方法同上,get方法获得该字段的值
		Ext.Ajax.request({//向后台发送请求
			url:"admin!deleteUser.action",
			params:{userId:userId},//将userId传到后台
			success:function(){
				Ext.Msg.alert("提示","删除成功!");
				store.reload();
			}
		});
	}
   });
}
 

更新用户的后台部分代码:

public String updateUser() throws IOException{
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType( "text/html;charset=utf-8");
		
		int userid = Integer.parseInt(request.getParameter( "userid"));//这样就可以获得前台传过来的字段
		String username = request.getParameter("username");
		if("".equals(username)){//对于数据库中非空的字段,需要进行判断
			response.getWriter().write( "{\"success\":false,\"errors\":{\"username\":\"用户名不能为空!\"}}");
			return null;
		}
		
		User user = new User();
		user.setUserid(userid);
		user.setUsername(username);
		
		as.updateUser(user);
		response.getWriter().write( "{success:true}");
		return null;
	}

 删除用户的后台:

通过 request.getParameter("userId")就可以进行操作了

 

 

不好意思,还少了加载store时查询用户的后台:

DAO中:

public List<User> queryAllUser(final String start,final String limit){
		final String sql = "select new map" 
			+	"(u.userid as userid,u.username as username,u.password as password,u.sex as sex,u.age as age)"
            + " from User u order by u.userid";//将查询到得数据转换成map再放进list中,并且指定根据userid排序
	
		return ht.executeFind(new HibernateCallback(){
			public Object doInHibernate(Session session){
				Query query = session.createQuery(sql);
				return query.setFirstResult(Integer.parseInt(start)).setMaxResults(Integer.parseInt(limit)).list();
			}
		});
	}

 service中:

public String queryAllUser(String start,String limit){
		List<User> listUser = ad.queryAllUser(start,limit);
		JSONArray json = JSONArray.fromObject(listUser);//将DAO传过来的list转化为json数组的形式
		String jsonMsg = "{\"totalProperty\":" + ad.queryUserSize() + ",\"result\":" + json.toString() + "}";//拼装传向前台的json数据
		return jsonMsg;
	}

 action中:

private String start;//其实定义为int的就行了
private String limit;//这里我设计得不好
	
public String queryAllUser() throws IOException{
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType( "text/html;charset=gb2312");
		response.getWriter().write( as.queryAllUser(getStart(),getLimit()));//往前台传送json数据
		System.out.println(as.queryAllUser(getStart(),getLimit()));//通过get方法即可获得前台autoLoad中传的属性
		return null;
	}

 

 

 

0
0
分享到:
评论

相关推荐

    S2 + S + H CURD

    标题中的"S2 + S + H CURD"很可能指的是在Java开发中常见的三个开源框架的组合:Spring Boot(S),Spring Cloud(S),以及Hibernate(H)。这三个框架在企业级应用开发中广泛使用,用于实现快速的CURD操作,即创建...

    ssh_test.zip_SSH+CURD

    这个"ssh_test.zip_SSH+CURD"的压缩包很可能是关于如何通过SSH连接到远程服务器并执行数据库CURD操作的教程或示例代码。 SSH主要用于加密网络通信,防止数据在传输过程中被窃听或篡改。它通常用于管理远程服务器,...

    gin + mysql + jwt + captcha curd 学习.zip

    2. MySQL数据库:MySQL是一款开源的关系型数据库管理系统,广泛应用于Web应用程序。它支持SQL标准,提供了高性能、高可用性和安全性。在本项目中,MySQL用于存储和管理应用的数据,如用户信息、令牌等,通过GORM或者...

    MVC +EF +Linq+Lamda+CURD

    2. **读取(Read)**: 使用Linq查询语言从数据库中检索数据,可以结合Lambda表达式进行复杂的查询。 3. **更新(Update)**: 找到要修改的数据,更新其属性,然后再次调用SaveChanges()以保存更改。 4. **删除...

    ssh curd jar包

    在IT行业中,SSH CURD Jar包是一个常见的Java开发工具包,它包含了Struts2、Hibernate2.0和Spring这三个框架的库文件。这些框架在Java Web应用开发中扮演着核心角色,极大地提高了开发效率和代码的可维护性。下面将...

    struts2+spring+ibaites+oracle+CURD

    Struts2、Spring、iBatis 和 Oracle 是四个...综上所述,"struts2+spring+ibaites+oracle+CURD" 这个组合提供了完整的 Java Web 应用解决方案,涵盖了从用户交互到数据库操作的整个流程,是企业级开发中常见的技术栈。

    Servlet+ajax+CURD实现增删改查功能程序

    此“Servlet+ajax+CURD实现增删改查功能程序”是一个典型的示例,展示了如何利用这些技术来实现数据的CRUD(Create、Read、Update、Delete)操作。 Servlet是Java服务器端编程的一种方式,它扩展了HTTP服务器的功能...

    springMVC+spring3=hibernate4整合的CURD项目

    在这个基于SSH的CURD(创建、读取、更新、删除)项目中,我们将深入探讨这三个框架如何协同工作。 Spring MVC 是 Spring 框架的一部分,它是一个模型-视图-控制器(MVC)架构模式的实现,用于处理Web应用的请求和...

    Struts2+Hibernate+Spring整合与增、删、改、查CURD操作

    Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts2处理MVC(Model-View-Controller)架构中的控制层,Hibernate专注于数据持久化,而Spring则提供了全面的依赖注入...

    SSH简单CURD有Oracle数据库

    SSH整合是指将Spring、Struts2和Hibernate这三个开源框架结合在一起,用于构建高效、模块化的企业级Web应用程序。在这个项目中,“SSH简单CURD有Oracle数据库”标题表明我们将讨论如何利用SSH框架进行基本的创建...

    java后台+easyui完整curd

    2. **EasyUI**:EasyUI是一个基于jQuery的UI库,它为开发者提供了丰富的组件和主题,如表格、表单、下拉框、按钮等,简化了前端页面的构建。在CURD操作中,EasyUI的表格组件可以用于显示数据库中的数据,表单组件...

    spring+springmvc+mybatis(CURD)

    2. SpringMVC的配置文件(如`servlet-context.xml`),设置了URL映射、视图解析器以及其他Web相关的配置。 3. MyBatis的配置文件(如`mybatis-config.xml`),包含了数据源、事务管理器以及映射文件的引用。 4. ...

    ssh三大框架整合 curd

    SSH三大框架整合CURD指的是将Spring、Struts2和Hibernate这三个流行开源框架集成在一起,用于构建Web应用程序,尤其是处理CRUD(Create、Read、Update、Delete)操作。这些框架分别负责应用的依赖注入、表现层管理和...

    MVC+LINQ进行CURD操作

    2. **读取(READ)**:读取数据通常在控制器的GET方法中完成,可以使用`context.Set().ToList()`获取所有记录,或者使用`Where()`、`Find()`等查询方法根据特定条件筛选记录。查询结果可以传给视图进行展示。 3. **...

    Struts2+Spring+IBatis实现CURD

    在Java Web开发中,"Struts2+Spring+IBatis"是一个常见的企业级应用框架组合,也被称为SSI(Struts2、Spring、iBatis)框架。这种组合提供了模型-视图-控制器(MVC)架构,事务管理,以及灵活的数据访问机制。以下是...

    SpringBoot+MyBatis+Mysql+Easyui+Ajax实现CURD实例

    通过Spring Initializr快速生成springboot项目+mybatis generator反向生成代码+easyui 的表单设计(增删改查-分页)+ajax异步操作+mysql源数据库+单元测试+详细注解及个人编程的运到困难

    MVC3+Entity进行CURD操作

    2. **读取(Read)**: 使用Entity Framework的LINQ查询,可以从数据库中检索数据。例如,获取所有记录: ```csharp var entities = from e in db.MyEntities select e; return View(entities.ToList()); ``` 3. **...

Global site tag (gtag.js) - Google Analytics