- 浏览: 304689 次
文章分类
最新评论
-
流年末年:
那四个参数还是没看懂.....能不能解释下showPassst ...
我写的密码强度验证方法(原创) -
kingcs2008:
// 验证pws.jsshowPassstrength(&qu ...
我写的密码强度验证方法(原创) -
h957355152:
请问博主这个怎么用呢?我直接放到jsp里面调用showPass ...
我写的密码强度验证方法(原创) -
qq_15138059:
我写的全国省市县三级联动菜单,拿出来和大家分享了(原创) -
valenon:
评论呢?从MAIL FROM命令开始貌似就出错了:500 Er ...
如何发送伪造的电子邮件
前面的文章:
struts+spring+hibernate 的 web 应用 < 一 > 架构搭建
struts+spring+hibernate 的 web 应用 < 二 > Dao 层代码编写
现在开始编写 Service 层代码:
在 com.game.products.services.iface 包中新建 ProductsService 接口,代码如下:
import java.util.List;
import com.game.products.model.Products;
public interface ProductsService {
void addProduct(Products pd); // 添加记录
void deleteProduct(Products pd); // 删除记录
List getProducts(); // 获得所有记录
int getRows();; // 获得总行数
List getProducts( int pageSize, int startRow) ; // 获得一段记录
Products getProduct(String gameId); // 根据ID获得记录
String getMaxID(); // 获得最大ID值
void updateProductd(Products pd); // 修改记录
List queryProducts(String fieldname,String value); // 根据条件查询的所有记录
int getRows(String fieldname,String value); // 获得总行数
List queryProducts(String fieldname,String value, int pageSize, int startRow); // 根据条件查询的一段记录
}
在
com.game.products.services
包中新建
ProductsServiceImp
类,这个类实现了
ProductsService
接口,代码如下:
import java.util.List;
import com.game.products.dao.iface.ProductsDao;
import com.game.products.model.Products;
import com.game.products.services.iface.ProductsService;
public class ProductsServiceImp implements ProductsService {
private ProductsDao productsDao;
public ProductsServiceImp() {}
/**
* 函数说明:添加信息
* 参数说明:对象
* 返回值:
*/
public void addProduct(Products pd) {
productsDao.addProduct(pd);
}
/**
* 函数说明:删除信息
* 参数说明: 对象
* 返回值:
*/
public void deleteProduct(Products pd) {
productsDao.deleteProduct(pd);
}
/**
* 函数说明:获得所有的信息
* 参数说明:
* 返回值:信息的集合
*/
public List getProducts() {
return productsDao.getProducts();
}
/**
* 函数说明:获得总行数
* 参数说明:
* 返回值:总行数
*/
public int getRows() {
return productsDao.getRows();
}
/**
* 函数说明:获得一段信息
* 参数说明:
* 返回值:信息的集合
*/
public List getProducts( int pageSize, int startRow) {
return productsDao.getProducts(pageSize, startRow);
}
/**
* 函数说明:获得一条的信息
* 参数说明: ID
* 返回值:对象
*/
public Products getProduct(String gameId) {
return productsDao.getProduct(gameId);
}
/**
* 函数说明:获得最大ID
* 参数说明:
* 返回值:最大ID
*/
public String getMaxID() {
return productsDao.getMaxID();
}
/**
* 函数说明:修改信息
* 参数说明: 对象
* 返回值:
*/
public void updateProductd(Products pd) {
productsDao.updateProductd(pd);
}
/**
* 函数说明:查询信息
* 参数说明: 集合
* 返回值:
*/
public List queryProducts(String fieldname,String value) {
return productsDao.queryProducts(fieldname, value);
}
/**
* 函数说明:获得总行数
* 参数说明:
* 返回值:总行数
*/
public int getRows(String fieldname,String value) {
return productsDao.getRows(fieldname, value);
}
/**
* 函数说明:查询一段信息
* 参数说明: 集合
* 返回值:
*/
public List queryProducts(String fieldname,String value, int pageSize, int startRow) {
return productsDao.queryProducts(fieldname, value,pageSize,startRow);
}
public ProductsDao getProductsDao() {
return productsDao;
}
public void setProductsDao(ProductsDao productsDao) {
this .productsDao = productsDao;
}
}
基本的业务层代码就这些了。因为还有分页的业务,所以接下来编写分页的代码。
分页是个公共的类,所以放在
com.game.commons
中。
Pager
类,封装了分页需要的属性,代码如下:
import java.math. * ;
public class Pager {
private int totalRows; // 总行数
private int pageSize = 30 ; // 每页显示的行数
private int currentPage; // 当前页号
private int totalPages; // 总页数
private int startRow; // 当前页在数据库中的起始行
public Pager() {
}
public Pager( int _totalRows) {
totalRows = _totalRows;
totalPages = totalRows / pageSize;
int mod = totalRows % pageSize;
if (mod > 0 ) {
totalPages ++ ;
}
currentPage = 1 ;
startRow = 0 ;
}
public int getStartRow() {
return startRow;
}
public int getTotalPages() {
return totalPages;
}
public int getCurrentPage() {
return currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setTotalRows( int totalRows) {
this .totalRows = totalRows;
}
public void setStartRow( int startRow) {
this .startRow = startRow;
}
public void setTotalPages( int totalPages) {
this .totalPages = totalPages;
}
public void setCurrentPage( int currentPage) {
this .currentPage = currentPage;
}
public void setPageSize( int pageSize) {
this .pageSize = pageSize;
}
public int getTotalRows() {
return totalRows;
}
public void first() {
currentPage = 1 ;
startRow = 0 ;
}
public void previous() {
if (currentPage == 1 ) {
return ;
}
currentPage -- ;
startRow = (currentPage - 1 ) * pageSize;
}
public void next() {
if (currentPage < totalPages) {
currentPage ++ ;
}
startRow = (currentPage - 1 ) * pageSize;
}
public void last() {
currentPage = totalPages;
startRow = (currentPage - 1 ) * pageSize;
}
public void refresh( int _currentPage) {
currentPage = _currentPage;
if (currentPage > totalPages) {
last();
}
}
}
PagerService
类,主要有个
getPager
方法返回
Pager
类。代码如下:
public class PagerService {
public Pager getPager(String currentPage,String pagerMethod, int totalRows) {
// 定义pager对象,用于传到页面
Pager pager = new Pager(totalRows);
// 如果当前页号为空,表示为首次查询该页
// 如果不为空,则刷新pager对象,输入当前页号等信息
if (currentPage != null ) {
pager.refresh(Integer.parseInt(currentPage));
}
// 获取当前执行的方法,首页,前一页,后一页,尾页。
if (pagerMethod != null ) {
if (pagerMethod.equals( " first " )) {
pager.first();
} else if (pagerMethod.equals( " previous " )) {
pager.previous();
} else if (pagerMethod.equals( " next " )) {
pager.next();
} else if (pagerMethod.equals( " last " )) {
pager.last();
}
}
return pager;
}
}
这个分页方法比较简单,而且功能也齐全,许多页面级的开源 table 中分页很多也是基于这个原理,所以理解了这个分页,对其他各种分页技术的理解也就迎刃而解了。
服务层的代码就这些了,接下来就可以写 spring 的配置文件来用 spring 管理这些 Dao 和 Service 了。
在
spring-context
包中新建
applicationContext.xml
。配置的写法如下:
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
< beans >
<!-- dataSource config -->
< bean id ="dataSource" class ="org.springframework.jndi.JndiObjectFactoryBean" >
< property name ="jndiName" >
< value > java:comp/env/jdbc/game </ value >
</ property >
</ bean >
<!-- SessionFactory -->
< bean id ="sessionFactory"
class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name ="dataSource" >
< ref bean ="dataSource" />
</ property >
< property name ="configLocation" >
< value > classpath:com\game\bean\hibernate\hibernate.cfg.xml </ value >
</ property >
</ bean >
<!-- TransactionManager -->
< bean id ="transactionManager"
class ="org.springframework.orm.hibernate3.HibernateTransactionManager" >
< property name ="sessionFactory" >
< ref local ="sessionFactory" />
</ property >
</ bean >
<!-- DAO -->
< bean id ="productsDao" class ="com.game.products.dao.hibernate.ProductsMapDao" >
< property name ="sessionFactory" >
< ref bean ="sessionFactory" />
</ property >
</ bean >
<!-- Services -->
< bean id ="productsService" class ="com.game.products.services.ProductsServiceImp" >
< property name ="productsDao" >
< ref bean ="productsDao" />
</ property >
</ bean >
< bean id ="pagerService" class ="com.game.commons.PagerService" >
</ bean >
</beans>
配置文件不难,主要是些
IOC
控制。数据库链接我采用的是数据源方式,需要在
tomcat
的conf文件夹下的
server.xml
中添加数据源,添加的数据如下:
< Resource
name ="jdbc/game"
type ="javax.sql.DataSource"
password =""
driverClassName ="net.sourceforge.jtds.jdbc.Driver"
maxIdle ="2"
maxWait ="5000"
username ="sa"
url ="jdbc:jtds:sqlserver://127.0.0.1:16899/game"
maxActive ="4" />
</ Context >
这个数据源是针对 tomcat 5.5 以上版本的,以下版本的写法有所不同,不同之处可以用 google 搜索得知。这个数据源很简单,并没有过多的配置来优化系统,只是为了让项目更容易让人理解。需要注意都是,我的数据链接的 JDBC 包是 jtds 包,而不是普通的那个三个 jar 包。
发表评论
-
java正则表达式高级用法:转换驼峰标示
2012-06-26 16:47 5803String source = "LastLog ... -
你会做Web上的用户登录功能吗?(转)
2012-06-25 13:22 1374Web上的用户登录功能应 ... -
使用pager-taglib.jar实现的分页技术
2012-06-24 02:34 934//1.导入pager-taglib.jar包; / ... -
我写的验证码生成方案,可防止绝大多数机械识别。
2012-06-20 14:59 2408web.xml <!DOCTYPE web-app ... -
如何在myeclipse中使用maven?
2012-06-11 14:22 168431.下载maven,解压到D盘ma ... -
安装subclipse, MyEclipse8 SVN插件
2012-06-09 22:39 962安装subclipse, MyEclipse8 SVN插件 ... -
PDF生成器
2012-05-28 02:53 851我自己写的一个pdf生成器,能导出百度博客为PDF -
我的自动投票器
2012-04-17 13:58 1301自动投票器,支持windows的32位机器 下面的压缩包是编 ... -
list,set,map,数组间的相互转换(转载)
2012-03-16 16:29 28621.list转set Java代码 ... -
一个给pojo生成hashcode、equals、toString等方法的工具类
2012-03-06 09:52 4256一个给pojo生成hashcode、equals、toStri ... -
ehcache的用法
2012-02-13 22:13 0Spring ... -
使用ehcache来缓存页面
2012-02-13 22:08 812关于缓存的话题,在坛子里已经有很多讨论,简单的来说,如果一个应 ... -
java笔记:自己动手写javaEE框架(二)--业务层Service以及Service单元测试
2012-02-13 00:55 0前一篇博文里有三 ... -
struts+spring+hibernate的web应用<四> Web层代码编写(2)
2012-02-13 00:50 0接着就是写资源文件了。 在 com.game. ... -
struts+spring+hibernate的web应用<四> Web层代码编写(1)
2012-02-13 00:49 1048前面的文章: ... -
struts+spring+hibernate的web应用<二> Dao层代码编写
2012-02-13 00:45 864前一篇文章 (struts+spring ... -
struts+spring+hibernate的web应用<一> 架构搭建
2012-02-13 00:44 779许久没有些文章了,现 ... -
ehcache缓存管理
2012-02-12 23:52 1004EHCache 是一个纯java的,在Hibernate2 ... -
检测一个字符串是否在jvm的常量池中(原创)
2012-01-11 09:07 2160检测一个字符串是否在jvm的常量池中 public ... -
我写的密码强度验证方法(原创)
2011-12-18 15:26 8390/* *说明: * 该方法主要分析密码的内容构成 ...
相关推荐
在完成上述配置后,开发者可以创建Action类(Struts2的控制器),Service层(Spring的业务逻辑),DAO层(数据访问对象,使用Hibernate进行数据库操作),以及相应的视图(JSP页面)。通过Maven的生命周期管理,可以...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
SSH(Struts+Spring+Hibernate)是Java Web开发中一种常见的技术栈,它将MVC设计模式、依赖注入和持久层框架集成为一个整体,大大提高了开发效率和代码的可维护性。下面我们将深入探讨SSH框架的各个组成部分及其结合...
在项目源代码目录中创建四个包:`po`(持久化对象)、`dao`(数据访问对象)、`service`(业务逻辑层)以及`action`(Struts的Action)。 #### 三、模型层开发 ##### 1. 构建实体类 在`po`包中创建`User`类: ```...
Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们结合使用可以构建高效、模块化的应用程序,特别是对于处理用户登录和文件上传等常见功能。在这个项目中,"struts+spring+hibernate(mysql)用户登录及...
Struts、Spring 和 Hibernate 是Java开发中非常著名的三个开源框架,它们构成了经典的“SSH”(Struts + Spring + Hibernate)企业级应用开发架构。这个架构为开发者提供了模型-视图-控制器(MVC)设计模式的实现,...
Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...
Struts2.1、Spring2.5和Hibernate3.3是经典的Java企业级开发框架组合,它们各自在应用程序的不同层面提供了强大的支持。本篇将详细阐述这三个组件的整合过程,以及各自的核心特性。 首先,Struts2是一个基于MVC设计...
Struts、Spring 和 Hibernate 是三个流行的开源框架,它们在构建 Web 应用程序时各司其职,共同形成一个强大的架构。Struts 主要负责表示层(Presentation Layer),Spring 负责业务层(Business Layer),而 ...
Struts、Spring 和 Hibernate 是Java开发领域中三大主流框架,它们在构建企业级Web应用程序时起着关键作用。Struts提供了MVC(Model-View-Controller)架构,Spring提供了依赖注入和面向切面编程,而Hibernate则是一...
网上订餐系统是一种基于互联网技术实现的餐饮服务应用,它结合了Struts、Spring和Hibernate三个核心Java EE框架,为用户提供便捷的在线订餐体验。这个压缩包文件"网上订餐系统(struts+spring+hibernate).rar"很可能...
将Struts、Spring和Hibernate结合在一起,可以构建出一个完整的三层架构应用:Struts作为前端控制器,负责接收和响应用户请求;Spring作为业务层,管理对象和事务;Hibernate作为持久层,处理数据库操作。以下是如何...
SSH(Struts+Spring+Hibernate)是Java Web开发中常用的一种三层架构模式,它将应用程序分为表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer),以实现清晰的...
这个“博客Struts2+Spring2+Hibernate3 web应用示例”旨在展示如何将这三个框架有效地结合在一起,以实现一个完整的后端管理系统,比如书管理应用。 Struts2是Action导向的MVC框架,负责处理HTTP请求,提供控制器层...
Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们的组合,通常被称为SSH(Struts2+Spring+Hibernate)或SSH2。这个“Struts2+Hibernate+Spring基于单表的增删改查code”项目是一个典型的Java Web应用...
Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们的组合通常被称为SSH(Struts、Spring、Hibernate)。这个“struts+spring+hibernate开发 注册小实例”是为初学者设计的一个教程,目的是帮助他们快速...
Struts2、Spring4和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC模式中的表现层、业务层和服务层。SSH(Struts2、Spring、Hibernate)的整合是构建高效、灵活的企业级应用的常用方式。下面将详细阐述...
"Struts2 + Spring + Hibernate + DWR"是一个常见的Java Web开发框架组合,用于构建动态、数据驱动的Web应用程序。这个项目部署笔记将深入探讨这四个组件的核心功能以及它们如何协同工作。 首先,Struts2是一个基于...