SSH整合——架构的历史(二)

N层结构+Entity+Service+Impl+Hibernate+DAO+Impl

(1)将Service业务逻辑层抽象成一个接口

package com.zgy.registration.service;

import java.sql.SQLException;

import com.zgy.registration.model.User;

public interface UserManager {

public abstract boolean exists(User u) throws SQLException,

ClassNotFoundException;

public abstract void add(User u);

}

(2)Service层的实现UserManagerImpl

package com.zgy.registration.serviceImpl;

import java.sql.SQLException;

import com.zgy.registration.dao.UserDao;

import com.zgy.registration.daoImpl.UserDaoImpl;

import com.zgy.registration.model.User;

import com.zgy.registration.service.UserManager;

public class UserManagerImpl implements UserManager {

private UserDao userDao = new UserDaoImpl();

public UserDao getUserDao() {

return userDao;

}

public void setUserDao(UserDao userDao) {

this.userDao = userDao;

}

/* (non-Javadoc)

* @see com.zgy.registration.serviceImpl.UserManager#exists(com.zgy.registration.model.User)

*/

@Override

public boolean exists(User u) throws SQLException, ClassNotFoundException {

return userDao.checkUserExistsWithName(u.getUsername());

}

/* (non-Javadoc)

* @see com.zgy.registration.serviceImpl.UserManager#add(com.zgy.registration.model.User)

*/

@Override

public void add(User u) {

userDao.save(u);

}

}

(3)DAO层UserDao,封装数据库的操作

package com.zgy.registration.dao;

import com.zgy.registration.model.User;

public interface UserDao {

public void save(User u);

public boolean checkUserExistsWithName(String username);

}

(4)DAO的实现层UserDaoImpl,封装具体的数据库的实现

package com.zgy.registration.daoImpl;

import org.hibernate.SessionFactory;

import org.hibernate.classic.Session;

import com.zgy.registration.dao.UserDao;

import com.zgy.registration.model.User;

import com.zgy.registration.util.HibernateUtil;

public class UserDaoImpl implements UserDao {

@Override

public void save(User u) {

SessionFactory sf = HibernateUtil.getSessionFactory();

Session session = sf.getCurrentSession();

session.beginTransaction();

session.save(u);

session.getTransaction().commit();

}

@Override

public boolean checkUserExistsWithName(String username) {

SessionFactory sf = HibernateUtil.getSessionFactory();

Session session = sf.getCurrentSession();

session.beginTransaction();

long count = (Long) session

.createQuery(

"select count(*) from User user "

+ "where user.username= :username")

.setString("username", username).uniqueResult();

session.getTransaction().commit();

if (count > 0) {

return true;

}

return false;

}

}

(5)修改测试类

package com.zgy.registration.service;

import java.sql.SQLException;

import junit.framework.Assert;

import org.junit.Test;

import com.zgy.registration.model.User;

import com.zgy.registration.serviceImpl.UserManagerImpl;

public class TestUserManager {

@Test

public void testExists() throws SQLException, ClassNotFoundException {

UserManager um = new UserManagerImpl();

User u = new User();

u.setUsername("a");

boolean exist = um.exists(u);

Assert.assertEquals(true, exist);

}

@Test

public void testAdd() throws SQLException, ClassNotFoundException {

UserManager um = new UserManagerImpl();

User u = new User();

u.setUsername("e");

u.setPassword("e");

boolean exist = um.exists(u);

if(!exist){

um.add(u);

Assert.assertEquals(true, um.exists(u));

}else{

Assert.fail("not added");

}

}

}

(6)数据存储成功。

(7)加入Struts,引入MVC的概念,使用Struts充当Controller角色,将业务层和View层分离

E、N层结构+Entity+Service+Impl+Hibernate+DAO+Impl+struts

(1)加入UserAction

package com.zgy.registration.action;

import com.zgy.registration.model.User;

import com.zgy.registration.service.UserManager;

import com.zgy.registration.serviceImpl.UserManagerImpl;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

private String username;

private String password;

private String password2;

UserManager um = new UserManagerImpl();

public UserManager getUm() {

return um;

}

public void setUm(UserManager um) {

this.um = um;

}

@Override

public String execute() throws Exception {

User u = new User();

u.setUsername(username);

u.setPassword(password);

if(um.exists(u)) {

return "fail";

}

um.add(u);

return "success";

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getPassword2() {

return password2;

}

public void setPassword2(String password2) {

this.password2 = password2;

}

}

(2)配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"

"http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<package name="registration" extends="struts-default">

<action name="user" class="com.zgy.registration.action.UserAction">

<result name="success">/registerSuccess.jsp</result>

<result name="fail">/registerFail.jsp</result>

</action>

</package>

</struts>

时间: 2024-10-06 08:23:05

SSH整合——架构的历史(二)的相关文章

从MVC和三层架构说到SSH整合开发

相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println(“请继续观看……”) 1.MVC(MODEL-VIEW-CONTROLLER)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写

SSH整合(二)——利用Spring来装配Action类

在上篇文章(SSH整合(一)--直接获取ApplicationContext)中,在Action类中通过获取ApplicationContext对象,调用getBean方法来实例化bean类,这种方法将Action类与Spring的绑定装配JavaBean绑定的过紧,大大增加了他们的耦合度.如果装配文件的内容有变化,很可能要修改Action类的代码. 所以我们将装配Action类及其属性的方法也放到Spring中. 一,由Spring创建Action对象 例如,action代码如下: packa

从MVC和三层架构说到ssh整合开发-上

相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println("请继续观看--") 1.MVC(Model-View-Controller)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controlle

【Struts2+Hibernate3+Spring3】利用SSH整合,完成打印用户表,用户登录、注册、修改密码系统

本文视图尽可能不杂糅其它技术,尽可能少写代码,完成SSH整合.以致于各位在现有网上资料越来越天花龙凤之下,清晰地了解到传说中的三大框架SSH是怎么整合的. 一.SSH的下载 首先SSH的下载就已经是一个难点.SSH三个地方同时推出各自的新技术,已经要求利用Maven完成其版本的同步.毕竟Spring的版本,决定其能整合什么版本的Struts与Hibernate.Spring3.0.5就不能整合Hibernate4.x了.因此本文选取的SSH的版本,分别为struts 2.3.20 GA.Hibe

Spring(八)SSH整合简述

一.Spring与Struts2的整合 1.1.整合步骤 1.2.配置web.xml 1.3.配置spring配置文件applicationContext.xml 1.4.配置struts配置文件 1.5.Action继承ActionSupport类 二.spring与hibernate整合 2.1.步骤 2.2.注入sessionFactory <--数据源--> <bean id="dataSource" class="org.springframewo

SSH整合(配置方式)

工程目录: /SSH1/src/cn/itcast/domain/Book.java package cn.itcast.domain; /** * 图书 */ public class Book { private Integer id; // 图书编号 private String name; // 图书名称 private Double price; // 图书价格 public Integer getId() { return id; } public void setId(Intege

ssh整合例子

今天给大家介绍一下最新版本的SSH(struts2.2.1+ hibernate3.6+spring3.0.5)组合.注意本讲解为手工搭建! 一.为SSH做好准备 struts2-2.2.1-all.zip       hibernate-distribution-3.6.0.Final-dist.zip spring-framework-3.0.5.RELEASE.zip spring-framework-2.5.6-with-dependencies.zip slf4j-1.6.1.zip 

【Java EE 学习第58-67天】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar包 (1)jbpm项目/lib目录下的所有jar包和根目录下的jbpm.jar包放入/WEB-INF/lib文件夹下,同时删除tomcat服务器/lib文件夹中的el-api.jar包. 注意:必须删除el-api.jar包,该jar包和jbpm项目中需要使用到的三个jar包冲突了:juel-api

SSH整合总结(xml与注解)

本人自己进行的SSH整合,中间遇到不少问题,特此做些总结,仅供参考. 一.使用XML配置: SSH版本 Struts-2.3.31 Spring-4.3.5 Hibernate-4.2.21 引入jar包 必须在WEB-INF下添加jar包(其他无效) spring以及它的依赖包 com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar hibernate的jar包及struts2的jar和插件包,包含两个重复的javassist.jar,保留高