基于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 - 图片批量导入

基于项目和基于内容的协同过滤有啥区别?

基于.NetCore开发博客项目 StarBlog - (11) 实现访问统计

基于.NetCore开发博客项目 StarBlog - (15) 生成随机尺寸图片