基于Struts_Spring_MyBatis项目基础搭建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Struts_Spring_MyBatis项目基础搭建相关的知识,希望对你有一定的参考价值。
一、整合步骤
基于Spring+Struts+MyBatis的SSM项目整合。
创建一个新的web项目
整合MyBatis
整合Spring
整合Struts
二、整合MyBatis
由于需要用到数据库,所以需要准备数据库对应的Jar包,如mysql。
mysql-connector-java-5.1.26-bin.jar
导入MyBatis的Jar包。
创建测试数据库和表。
CREATE TABLE `t_user_2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) DEFAULT NULL,
`password` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
加入一条数据:
连接数据库的配置信息,在类路径下创建resources/db.properties文件,内容容下
db_driver=com.mysql.jdbc.Driver
db_url=jdbc:mysql://localhost:3306/ssm
db_username=root
db_password=root
实体对象的创建。
代码清单1:
public class User {
private int id;
private String username;
private String password;
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;
}
}
创建DAO接口和实现类
代码清单2:
public interface IUserDAO {
public boolean isExistUser(User user);
}
public class UserDAOImpl implements IUserDAO {
public boolean isExistUser(User user) {
return false;
}
}
核心配置文件,在类路径下创建resources/mybatis-config.xml。
代码清单3:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 数据源 负责来连接数据库的配置信息 -->
<dataSource type="POOLED">
<property name="driver" value="${db_driver}"/>
<property name="url" value="${db_url}"/>
<property name="username" value="${db_username}"/>
<property name="password" value="${db_password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn\itsource\domain\UserMapper.xml"/>
</mappers>
</configuration>
Mapper映射文件,cn/itsource/domain/UserMapper.xml
代码清单4:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.itsource.domain.UserMapper">
<select id="isExist" parameterType="cn.itsource.domain.User" resultType="Integer">
select count(*) from t_user where username=#{username} and password=#{password}
</select>
</mapper>
工具类获取SqlSession,cn.itsource.util.MyBatisUtil
代码清单5:
/**
* MyBatis工具类
* @author Administrator
*
*/
public enum MyBatisUtil {
INSTANCE;
//静态代码块实现工厂的初始化
private static SqlSessionFactory factory;
static{
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//得到对应的SqlSessionFactory对象
factory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public SqlSession openSession(){
return factory.openSession();
}
}
完成DAO的实现类的实现
代码清单6:
public boolean isExistUser(User user) {
boolean isExist = false;
SqlSession session = MyBatisUtil.INSTANCE.openSession();
try{
int count = session.selectOne("cn.itsource.domain.UserMapper.isExist",user);
return count==0?isExist:true;
}catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
return isExist;
}
}
单元测试
导入单元测试JUnit4的Jar包,创建测试包,创建测试类。
代码清单7:
public class UserDAOTest extends TestCase {
IUserDAO dao = new UserDAOImpl();
public void testIsExistUser() {
boolean isExist = dao.isExistUser(new User("admin","123456"));
System.out.println(isExist);
}
}
如果测试通过说明MyBatis到目前为止已经整合完毕。
配置log4j,resources/log4j.properties
代码清单8:
log4j.rootLogger=ERROR, stdout
#log4j.rootLogger=NONE
log4j.logger.cn.itsource=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
三、整合Struts2
导入对应的Jar包
删除对应重复的Jar包,留版本高的包,删除版本低的包。
配置核心过滤器web.xml
代码清单9:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
配置struts.xml
代码清单10:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
</package>
</struts>
创建对应的登陆页面和Action,部署测试是否能正常登陆。
四、整合Spring
导入Spring的Jar包
注意:将MyBatis和Struts2集成需要导入两个核心的集成包
mybatis-spring-1.2.0.jar
struts2-spring-plugin-2.3.20.jar
spring的配置文件
resources/applicationContext.xml,利用Spring后那么核心对象都将交给Spring容器进行管理,原来在MyBatis中操作数据库的SqlSession现在交给Spring的org.mybatis.spring.SqlSessionTemplate利用IOC注入。实例化SqlSessionTemplate需要用到SqlSessionFactoryBean,在包mybatis-spring-1.2.0.jar中提供了对应类的封装。
代码清单11:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!--配置数据源属性文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:db.properties</value>
</property>
</bean>
<!--配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${db_driver}</value>
</property>
<property name="url">
<value>${db_url}</value>
</property>
<property name="username">
<value>${db_username}</value>
</property>
<property name="password">
<value>${db_password}</value>
</property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!--SqlSessionTemplate-->
<bean id="session" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="userAction" class="cn.itsource.action.UserAction">
<property name="dao" ref="dao"></property>
</bean>
<bean id="dao" class="cn.itsource.dao.impl.UserDAOImpl">
<property name="session" ref="session"></property>
</bean>
</beans>
上面的配置中如果不希望用到原来的Mybatis的配置文件也可,直接关联Mapper映射文件即可。
配置web.xml配置启动Spring的监听器。
代码清单12:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
调试,到此为止,如果能正常进行登录判断,那么就已经将Spring、Struts2和Mybatis集成好了。
感谢源码时代JAVA学科讲师提供
以上是关于基于Struts_Spring_MyBatis项目基础搭建的主要内容,如果未能解决你的问题,请参考以下文章
基于.NetCore开发博客项目 StarBlog - 开始搭建Web项目
基于.NetCore开发博客项目 StarBlog - 模型设计
基于.NetCore开发博客项目 StarBlog - 图片批量导入