Spring_SSH整合之_架构的历史(四层架构整合JSP+MySQL+JavaBean+Hibernate+Dao+Impl)_4

40 篇文章 0 订阅
User.java-->User.hbm.xml-->Hibernate.cfg.xml-->HibernateUtil.java
-->UserDao.java-->UserDaoImpl.java-->UserManager.java-->UserManagerImpl.java
   |-->UserManagerTest.java												
-->|							             |-->registFail.jsp
   |-->regist.jsp-->registDeal.jsp-->|
								     |-->registSuccess.jsp


User.java

package com.bjsxt.registration.model;

//贫血模型 充血模型
public class User {
	private Integer id;
	private String username;
	private String password;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	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;
	}

}


User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!-- This mapping demonstrates how to use an "inverse" join to map an association 
	table as an association with one-to-many multiplicity at the level of the 
	object model. -->

<hibernate-mapping package="com.bjsxt.registration.model">
	<class name="User" table="user">
		<id name="id" type="integer" column="id">
			<generator class="native" />
		</id>
		<property name="username" type="string" column="username"/>
		<property name="password" type="string" column="password"/>
	</class>

</hibernate-mapping>

Hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory name="foo">
		<!-- 数据库连接:方言、驱动、连接、用户名、密码 -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/spring</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>

		<!-- 显示SQL语句 -->
		<property name="show_sql">true</property>
		<!-- 自动构建表结构 -->
		<property name="hbm2ddl.auto">update</property>

		<!-- 映射配置 -->
		<mapping resource="com/bjsxt/registration/model/User.hbm.xml" />
	</session-factory>
</hibernate-configuration>

HibernateUtil.java
package com.bjsxt.registration.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	private static SessionFactory sessionFactory;
	static {
		sessionFactory = new Configuration().configure().buildSessionFactory();
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
}

UserDao.java
package com.bjsxt.registration.dao;

import com.bjsxt.registration.model.User;

public interface UserDao {
	/** 保存数据 */
	public void save(User user);

	/** 查询某个数据是多少条 */
	public Long getCount(User user);
}

UserDaoImpl.java
package com.bjsxt.registration.dao.impl;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.bjsxt.registration.dao.UserDao;
import com.bjsxt.registration.model.User;
import com.bjsxt.registration.util.HibernateUtil;

public class UserDaoImpl implements UserDao {

	public void save(User user) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		session.save(user);

		tx.commit();
		session.close();
	}

	public Long getCount(User user) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		Long count = (Long) session.createQuery(//
				"select count(u) from User u where username=:name")//
				.setParameter("name", user.getUsername())//
				.uniqueResult();
		tx.commit();
		session.close();
		return count;
	}

}

UserManager.java
package com.bjsxt.registration.service;

import com.bjsxt.registration.model.User;

public interface UserManager {
	/** 判断是否存在 */
	public boolean exists(User user);

	/** 增加数据 */
	public void add(User user);
}

UserManagerImpl.java
package com.bjsxt.registration.service.impl;

import com.bjsxt.registration.dao.UserDao;
import com.bjsxt.registration.dao.impl.UserDaoImpl;
import com.bjsxt.registration.model.User;
import com.bjsxt.registration.service.UserManager;

public class UserManagerImpl implements UserManager {
	private UserDao userDao = new UserDaoImpl();

	public boolean exists(User user) {
		Long count = userDao.getCount(user);
		if (count > 0) {
			return true;
		}
		return false;
	}

	public void add(User user) {
		userDao.save(user);
	}
}

UserManagerTest.java
package com.bjsxt.registration.service;

import org.junit.Assert;
import org.junit.Test;

import com.bjsxt.registration.model.User;
import com.bjsxt.registration.service.impl.UserManagerImpl;

public class UserManagerTest {
	private UserManager um = new UserManagerImpl();

	@Test
	public void testExists() {
		User u = new User();
		u.setUsername("a");
		boolean exists = um.exists(u);
		Assert.assertEquals(true, exists);
	}

	@Test
	public void testAdd() {
		User u = new User();
		u.setUsername("123");
		u.setpassword("a");
		boolean exists = um.exists(u);
		if (!exists) {
			um.add(u);
			u.setUsername(u.getUsername());
			Assert.assertEquals(true, um.exists(u));
		} else {
			Assert.fail("not added");
		}
	}

}

regist.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>用户注册</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

</head>

<body>
	<h1>用户注册</h1><br/>
	<form action="registDeal.jsp" method="post">
		用户名:<input type="text" name="username"/><br/>
		密码:<input type="password" name="password"/><br/>
		确认密码:<input type="password" name="password2"/><br/>
		<input type="submit" value=" 提 交 "/>
	</form>
</body>
</html>

registDeal.jsp
<%@ page language="java" import="java.util.*, java.sql.*"
	pageEncoding="GB18030"%>
<%@ page import="com.bjsxt.registration.model.User"%>
<%@ page import="com.bjsxt.registration.service.UserManager"%>
<%@ page import="com.bjsxt.registration.service.impl.UserManagerImpl"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
	String username = request.getParameter("username");
	String password = request.getParameter("password");
	String password2 = request.getParameter("password2");

	User u = new User();
	u.setUsername(username);
	u.setpassword(password);

	UserManager um = new UserManagerImpl();
	boolean exits = um.exists(u);
	if (exits) {
		response.sendRedirect("registFail.jsp");
		return;
	}

	um.add(u);
	response.sendRedirect("registSuccess.jsp");
%>

registFail.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>失败</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

</head>

<body>
	<h1>Fail!</h1>
</body>
</html>

registSuccess.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>成功</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

</head>

<body>
	<h1>Success!</h1>
</body>
</html>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值