index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.zkoss.org/jsp/zul" prefix="z"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ZK Data Demo</title>
</head>
<body>
<z:page zscriptLanguage="java">
<z:window id="win3" title="Spring后台获取数据---------->Users"
border="normal" width="500px"
use="cn.wempire.zkcrud.web.ui.UserWindow">
<z:vbox>
<z:listbox mold="paging" id="lb" width="490px" rows="5" pageSize="5">
<z:listhead>
<z:listheader label="LoginName" width="150px" sort="auto" />
<z:listheader label="Password" width="150px" sort="auto"/>
</z:listhead>
</z:listbox>
<z:hbox>
<z:button label="Change Paging Mold">
<z:attribute name="onClick">
lb.pagingChild.mold = "os".equals(lb.pagingChild.mold) ? "default" : "os";
</z:attribute>
</z:button>
<z:button label="创建" forward="onNew" />
<z:button label="更新" forward="onUpdate" />
<z:button label="删除" forward="onDelete" />
</z:hbox>
</z:vbox>
</z:window>
</z:page>
</body>
</html>
分页,排序(使用默认算法)都在下面一段代码中,一看就懂,不赘述:
<z:listbox mold="paging" id="lb" width="490px" rows="5" pageSize="5">
<z:listhead>
<z:listheader label="LoginName" width="150px" sort="auto" />
<z:listheader label="Password" width="150px" sort="auto"/>
</z:listhead>
</z:listbox>
在后台创建Window的类UserWindow:
public class UserWindow extends Window
{
/**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService;
private List users;
public void onCreate() throws Exception
{
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext((ServletContext) getDesktop()
.getWebApp().getNativeContext());
userService = (UserService) ctx.getBean("userService");
users = userService.findAllUsers();
render();
}
protected void render()
{
Listbox lb = (Listbox) this.getFellow("lb");
lb.getItems().clear();
for (Iterator it = users.iterator(); it.hasNext();)
{
User t = (User) it.next();
Listitem lt = new Listitem();
lt.setValue(t);
Listcell lc = new Listcell(t.getLoginName());
lc.setHeight("30px");
lt.appendChild(lc);
Listcell lc2 = new Listcell(t.getPassword());
lc2.setHeight("30px");
lt.appendChild(lc2);
lb.appendChild(lt);
}
}
public void onNew() throws Exception
{
Window win = (Window) Executions.createComponents("task.zul", null,
null);
win.doModal();
if (win.getAttribute("OK") != null)
{
users = userService.findAllUsers();
render();
}
}
public void onUpdate() throws Exception
{
Listbox lb = (Listbox) this.getFellow("lb");
Listitem lt = lb.getSelectedItem();
if (lt == null)
return;
User t = (User) lt.getValue();
Map params = new HashMap();
params.put("user", t);
Window win = (Window) Executions.createComponents("task.zul", null,
params);
win.doModal();
if (win.getAttribute("OK") != null)
{
users = userService.findAllUsers();
render();
}
}
public void onDelete() throws Exception
{
Listbox lb = (Listbox) this.getFellow("lb");
Listitem lt = lb.getSelectedItem();
if (lt == null)
return;
User t = (User) lt.getValue();
userService.delete(t.getId());
lt.detach();
}
}
用于创建和更新数据的页面task.zul,注意user属性与后台的对应,arg指后台传递过来的数据(即UserWindow中的params):
<?xml version="1.0" encoding="utf-8"?>
<window id="userWnd" title="User" border="normal" width="300px"
use="cn.wempire.zkcrud.web.ui.PopWindow" user="${arg.user}">
<vbox>
<grid>
<columns>
<column width="150px"/>
</columns>
<rows>
<row>
LoginName:
<textbox id="LoginName"/>
</row>
<row>
Password:
<textbox id="Password" rows="5" cols="25"/>
</row>
</rows>
</grid>
<hbox>
<button label="OK" forward="onOK()"/>
<button label="Cancle" forward="onCancle()"/>
</hbox>
</vbox>
</window>
task.zul背后的类PopWindow.java:
package cn.wempire.zkcrud.web.ui;
import javax.servlet.ServletContext;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
import cn.wempire.zkcrud.pojo.User;
import cn.wempire.zkcrud.service.UserService;
public class PopWindow extends Window
{
/**
*
*/
private static final long serialVersionUID = 1L;
protected UserService userService;
protected User user;
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
public void onCreate()
{
if (user != null)
{
// update
Textbox ctrl = (Textbox) this.getFellow("LoginName");
ctrl.setValue(user.getLoginName());
ctrl = (Textbox) this.getFellow("Password");
ctrl.setValue(user.getPassword());
}
// spring bean
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext((ServletContext) getDesktop()
.getWebApp().getNativeContext());
userService = (UserService) ctx.getBean("userService");
}
public void onOK() throws Exception
{
if (user == null)
{
// new
user = new User();
Textbox ctrl = (Textbox) this.getFellow("LoginName");
user.setLoginName(ctrl.getValue());
ctrl = (Textbox) this.getFellow("Password");
user.setPassword(ctrl.getValue());
userService.save(user);
}
else
{
// update
Textbox ctrl = (Textbox) this.getFellow("LoginName");
user.setLoginName(ctrl.getValue());
ctrl = (Textbox) this.getFellow("Password");
user.setPassword(ctrl.getValue());
userService.update(user);
}
this.setAttribute("OK", Boolean.TRUE);
this.detach();
}
public void onCancle()
{
this.detach();
}
}
注意PopWindow中得到Spring类的方式:
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext((ServletContext) getDesktop()
.getWebApp().getNativeContext());
userService = (UserService) ctx.getBean("userService");
分享到:
相关推荐
本案例主要展示了如何使用Spring、Jersey、Hibernate和MySQL这些技术来实现一个完整的用户信息管理系统的后端逻辑,并结合HTML进行前端展示,实现用户信息的创建(Create)、读取(Read)、更新(Update)和删除...
在这个案例中,"SpringMVC+Spring+Hibernate+Oracle 实现图书管理(CRUD)"是一个使用了四大主流Java技术栈的项目,分别是SpringMVC作为前端控制器、Spring作为应用层框架、Hibernate作为持久层框架,以及Oracle作为...
- 使用SessionFactory:在DAO层,通过Spring提供的SessionFactory Bean来获取Session,进行CRUD操作。 - 事务管理:Spring可以使用编程式或声明式事务管理,通常推荐使用声明式事务,通过@Transactional注解来控制...
(CRUD) ... 运行 AutoCreateTable.java 直接创建 表:t_user(注:hibernate.cfg.xml是用来创建表的,建完表以后可以将其删除) 输入网址运行:http://localhost:8000/SSH_CRUD/ 即可使用 实现的类库
在这个场景下,"avue-crud-数据字典(网络-dicUrl:返回数据格式data:)"指的是使用avue框架在进行CRUD操作时,如何处理通过网络请求获取的数据字典。 avue是一个基于Vue.js的后台管理框架,提供了丰富的组件和便捷...
本实例将深入探讨如何实现一个完整的Spring MVC CRUD操作。 首先,我们来了解CRUD操作的基本概念。CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)的首字母缩写,代表了数据库操作中最基本的...
运行 AutoCreateTable.java 直接创建 表:t_user(注:hibernate.cfg.xml是用来创建表的,建完表以后可以将其删除) 输入网址运行:http://localhost:8000/SSH_CRUD/ 即可使用 适合初学者,也是初学者必须经历的...
Spring的AOP模块可以让我们实现声明式事务管理,这样在执行CRUD操作时,事务的开始、提交、回滚等都可以自动处理。只需在配置中启用事务管理器,并在需要事务的方法上添加`@Transactional`注解即可。 ```xml <aop:...
Struts2和Hibernate是两种非常重要的Java开源框架,它们在Web开发中被广泛使用。Struts2是一个MVC(Model-View-Controller)框架,主要负责处理用户请求、控制业务流程,并将数据传递到视图层展示。而Hibernate则是...
在IT领域,Spring、Hibernate和JSP是三个非常重要的技术,它们在开发Web应用程序时起着关键作用。这个"spring+Hibernate+jsp的简单例子"是为初学者提供了一个了解和学习这些技术如何协同工作的实践项目。下面我们将...
"ext3+struts2+hibernate+spring的CRUD+分页"是一个典型的Java Web开发组合,用于实现全面的数据管理功能。这个组合充分利用了各个框架的优势,提供了一个强大的后端数据处理和前端展示的解决方案。 首先,EXT3是一...
【Spring4-Struts2-Hibernate4 CRUD Demo_3】是一个综合性的开发示例,它展示了如何在Java Web应用程序中整合三大主流框架:Spring 4、Struts 2和Hibernate 4来实现CRUD(创建、读取、更新、删除)操作。这个Demo...
1. **读取并解析配置文件**:Hibernate通过读取hibernate.cfg.xml或hibernate.properties文件来获取数据库连接信息和其他配置设置。 2. **解析映射信息,创建SessionFactory**:映射信息通常在.hbm.xml文件中定义,...
在这个“Struts_Spring_Hibernate_CRUD操作案例_分页查询”中,我们将深入探讨如何整合这三大框架实现数据的创建、读取、更新、删除(CRUD)以及分页查询。 1. **Struts框架**: - **Action类**:它是业务逻辑的...
在Java开发领域,Hibernate和Spring都是极为重要的框架。Hibernate是一个对象关系映射(ORM)工具,它简化了数据库操作,而Spring则是一个全面的企业级应用框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-...
在CRUD操作中,JSP页面通常包括表单元素,用于用户输入数据,并通过提交按钮触发请求。 2. **业务逻辑层(Controller)**:通常由Servlet或自定义的Java类实现,接收来自JSP的请求,处理业务逻辑,然后调用数据访问...
Spring还提供了与Hibernate的集成,简化了数据访问层的实现。 Hibernate4是一个持久化框架,主要用于操作数据库。它通过ORM(对象关系映射)技术将Java对象与数据库表进行映射,简化了SQL的编写和维护。Hibernate...
在这个案例中,我们使用了Java服务器页面(JSP)作为视图层,Hibernate作为持久层框架来处理数据库操作,实现了留言板的功能。下面我们将深入探讨这两个技术及其在留言板应用中的具体应用。 **1. JSP(Java Server ...
`使用需知.txt`可能包含了整合过程中的注意事项和步骤,例如如何配置Struts2的拦截器来支持Hibernate的事务管理,或者在JSP页面中如何正确绑定数据到表单元素,以及如何处理可能出现的异常等。 `Tabletemplate`可能...