pom.xml
http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
zttc.itat.user
user-parent
0.0.1-SNAPSHOT
../user-parent/pom.xml
user-log
jar
user-log
junit
junit
commons-logging
commons-logging
log4j
log4j
src/main/java/zttc/itat/user/log
log.java
package zttc.itat.user.log;
public class Log {
}
user-core
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
zttc.itat.user
user-parent
0.0.1-SNAPSHOT
../user-parent/pom.xml
user-core
jar
user-core
junit
junit
org.hibernate
hibernate-core
mysql
mysql-connector-java
log4j
log4j
dbunit
dbunit
org.apache.maven.plugins
maven-compiler-plugin
org.codehaus.mojo
sql-maven-plugin
org.codehaus.mojo
cobertura-maven-plugin
src/main/java
--zttc/itat/user/dao
userdao
package zttc.itat.user.dao;
import org.hibernate.Session;
import zttc.itat.user.model.User;
import zttc.itat.user.util.HibernateUtil;
public class UserDao implements IUserDao {
public void add(User user) {
Session session = null;
try {
session = HibernateUtil.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.close(session);
}
}
public User loadByUsername(String username) {
Session session = null;
User user = null;
try {
session = HibernateUtil.openSession();
user = (User)session.createQuery("from User where username=?")
.setParameter(0, username).uniqueResult();
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.close(session);
}
return user;
}
}
iuserdao
package zttc.itat.user.dao;
import zttc.itat.user.model.User;
public interface IUserDao {
public void add(User user);
public User loadByUsername(String username);
}
zttc/itat/user/model
user.java
package zttc.itat.user.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
private int id;
private String username;
private String password;
private String nickname;
public User() {
// TODO Auto-generated constructor stub
}
public User(String username, String password, String nickname) {
super();
this.username = username;
this.password = password;
this.nickname = nickname;
}
public User(int id, String username, String password, String nickname) {
super();
this.id = id;
this.username = username;
this.password = password;
this.nickname = nickname;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int 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;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
zttc/itat/user/util
DbUtil.java
package zttc.itat.user.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DbUtil {
public static Connection getConnection() throws SQLException {
Connection con = null;
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/itat_hibernate",
"root", "123456");
return con;
}
public static void close(Connection con) {
try {
if(con!=null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(PreparedStatement ps) {
try {
if(ps!=null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(ResultSet rs) {
try {
if(rs!=null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
hibernateUtil.java
package zttc.itat.user.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil {
private final static SessionFactory FACTORY = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
Configuration cfg = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);
return factory;
}
public static SessionFactory getSessionFactory() {
return FACTORY;
}
public static Session openSession() {
return FACTORY.openSession();
}
public static void close(Session session) {
if(session!=null) session.close();
}
}
src/main/resource
hibernate.cfg.xml
br /> "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- hibernate的方言,用来确定连接的数据库 -->
org.hibernate.dialect.MySQLDialect
<!-- 数据库的连接类 -->
com.mysql.jdbc.Driver
<!-- 数据库的连接字符串和用户名密码 -->
jdbc:mysql://localhost:3306/itat_hibernate
root
123456
<!-- 在使用hibernate时会显示相应的SQL -->
<!-- true -->
<!-- 会自动完成类到数据表的转换 -->
update
<!-- 加入实体类的映射文件 -->
init.sql
use itat_maven_test;
create table IF NOT EXISTS t_user(
id int(10) auto_increment primary key,
username varchar(20),
password varchar(20)
);
log4j.properties
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
#log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
user-parten
http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
zttc.itat.user
user-parent
0.0.1-SNAPSHOT
pom
http://maven.apache.org
<!-- 导入了三个模块,把这三个模块聚合在一起了 -->
<!-- 聚合是模块的位置 -->
../user-core
../user-log
../user-service
user-release
user release resp
http://localhost:8081/nexus/content/repositories/cms-release/
user-snapshots
user snapshots resp
http://localhost:8081/nexus/content/repositories/cms-snapshots/
UTF-8
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306
root
123456
D:\apache-tomcat-6.0.33-windows-x86
<!-- nexusNexus Repository
http://localhost:8081/nexus/content/groups/public/
true snapshots默认是关闭的,需要手动开启 true
-->
junit
junit
4.10
test
org.hibernate
hibernate-core
4.1.10.Final
mysql
mysql-connector-java
5.1.24
runtime
log4j
log4j
1.2.17
dbunit
dbunit
2.2
commons-logging
commons-logging
1.1.1
org.easymock
easymock
3.1
test
org.mortbay.jetty
servlet-api
2.5.20110712
provided
${project.groupId}
user-core
${project.version}
${project.groupId}
user-service
${project.version}
${project.groupId}
user-log
${project.version}
<!-- 可以排除依赖 -->
commons-logging
commons-logging
org.mortbay.jetty
jetty-maven-plugin
10
/hello
8787
60000
com.github.goldin
copy-maven-plugin
0.2.5
copy-war
package
copy
${catalina.home}/webapps
${project.build.directory}
user-web.war
org.eclipse.m2e
lifecycle-mapping
1.0.0
org.codehaus.mojo
sql-maven-plugin
[1.5,)
execute
org.codehaus.mojo
sql-maven-plugin
1.5
<!-- 使用插件依然可以指定相应的依赖 -->
mysql
mysql-connector-java
5.1.24
${jdbc.driver}
${jdbc.url}
${jdbc.username}
${jdbc.password}
create-db
compile
execute
create database IF NOT EXISTS itat_maven_test
init-table
test-compile
execute
src/main/resources/init.sql
org.apache.maven.plugins
maven-rar-plugin
2.3
rar
package
true
org.codehaus.mojo
cobertura-maven-plugin
html
xml
cobertura-report
cobertura
test
org.apache.maven.plugins
maven-source-plugin
2.2.1
compile
jar
org.apache.maven.plugins
maven-compiler-plugin
3.0
1.6
1.6
<!-- 此处设置了skip等于设置了把所有的测试编译都跳过,如果测试类写得有问题,也不会报错,所以一般不使用 -->
<!-- true -->
org.apache.maven.plugins
maven-surefire-plugin
2.14
<!-- 设置包含的测试类 -->
<!-- **/Hello* -->
<!-- 设置不进行测试的类 Test* -->
<!-- 跳过测试阶段,一般不推荐跳过 -->
<!-- true -->
user-services
pom.xml
http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
zttc.itat.user
user-parent
0.0.1-SNAPSHOT
<!-- 继承的绝对路径是pom的文件 -->
../user-parent/pom.xml
user-service
jar
user-service
junit
junit
test
org.jasig
AjaxPortletSupport
1.0.7
org.easymock
easymock
${project.groupId}
user-core
${project.groupId}
user-log
org.apache.maven.plugins
maven-source-plugin
org.apache.maven.plugins
maven-compiler-plugin
org.apache.maven.plugins
maven-rar-plugin
src/main/java
zttc/itat/user/service/userservice.java
package zttc.itat.user.service;
import zttc.itat.user.dao.IUserDao;
import zttc.itat.user.model.User;
public class UserService implements IUserService {
private IUserDao userDao;
public UserService(IUserDao userDao) {
super();
this.userDao = userDao;
}
public void add(User user) {
userDao.add(user);
}
public User loadByUsername(String username) {
return userDao.loadByUsername(username);
}
}
iuserservice.java
package zttc.itat.user.service;
import zttc.itat.user.model.User;
public interface IUserService {
public void add(User user);
public User loadByUsername(String username);
}
src/test/java
zttc/itat/user/service
testuserservice.java
package zttc.itat.user.service;
import static org.easymock.EasyMock.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import zttc.itat.user.dao.IUserDao;
import zttc.itat.user.model.User;
import zttc.itat.user.util.EntitiesHelper;
public class TestUserService {
private IUserDao userDao;
private IUserService userService;
private User baseUser;
@Before
public void setUp() {
userDao = createStrictMock(IUserDao.class);
userService = new UserService(userDao);
baseUser = new User("admin","123","admin");
}
@Test
public void testAdd() {
userDao.add(baseUser);
expectLastCall();
replay(userDao);
userService.add(baseUser);
}
@Test
public void testLoadByUsername() {
expect(userDao.loadByUsername("admin")).andReturn(baseUser);
replay(userDao);
User tu = userService.loadByUsername("admin");
EntitiesHelper.assertUser(tu,baseUser);
}
@After
public void tearDown() {
verify(userDao);
}
}
zttc/itat/user/util/entitieshelper.java
package zttc.itat.user.util;
import junit.framework.Assert;
import zttc.itat.user.model.User;
public class EntitiesHelper {
private static User baseUser = new User(1,"admin","123","管理员");
public static void assertUser(User expected,User actual) {
Assert.assertNotNull(expected);
Assert.assertEquals(expected.getId(), actual.getId());
Assert.assertEquals(expected.getUsername(), actual.getUsername());
Assert.assertEquals(expected.getPassword(), actual.getPassword());
Assert.assertEquals(expected.getNickname(), actual.getNickname());
}
public static void assertUser(User expected) {
assertUser(expected, baseUser);
}
}
user-web
pom.xml
<?xml version="1.0"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4.0.0
zttc.itat.user
user-parent
0.0.1-SNAPSHOT
../user-parent/pom.xml
user-web
war
user-web Maven Webapp
http://maven.apache.org
junit
junit
org.mortbay.jetty
servlet-api
${project.groupId}
user-service
user-web
org.mortbay.jetty
jetty-maven-plugin
src/main/java
zttc/itat/servlet/helloservlet.java
package zttc.itat.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import zttc.itat.user.model.User;
public class HelloServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setAttribute("user", new User("admin","123","管理员123"));
req.getRequestDispatcher("/hello.jsp").forward(req, resp);
}
}
src/main/webapp
hello.jsp
pageEncoding="UTF-8"%>
Insert title here
Hello---->${user.nickname }
ddd
web.xml
<?xml version="1.0" encoding="UTF-8"?>
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
Archetype Created Web Application
HelloServlet
zttc.itat.servlet.HelloServlet
HelloServlet
/hello.do
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30117285/viewspace-1414560/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30117285/viewspace-1414560/