转:手动配置三大框架整合:spring+struts2+mybatis

     2022-03-17     806

关键词:

现在主流的项目框架中,数据库持久层有可能不是hibernate,而是mybatis或者ibatis,其实它们都是一样的,下面我来把环境搭建一下:

【导入相关jar包】新建web项目工程mss,Spring+Struts2+mybatis整合,除了Spring和Struts的jar包外(可以在我的资源中下载),我们还需导入mybatis的几个想jar包:

技术分享

三大框架整合后jar包:

技术分享技术分享

【配置web.xml】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!--?xml version="1.0" encoding="UTF-8"?-->
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
   
  <!-- struts启动配置 -->
  <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>
   
  <!-- spring启动加载配置 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springConfig/applicationContext-*.xml</param-value>
  </context-param>
  <listener>
    <listener-class>
            org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
   
  <!-- log4j相关配置 -->
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/classes/log4j.properties</param-value>
  </context-param>
  <context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
</web-app>

【Spring公共配置 applicationContext-common.xml】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!--?xml version="1.0" encoding="UTF-8"?-->
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
 
     
     
    <!-- 读取配置文件 -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties">
    </property></bean>
     
    <!--  数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName">
           <value>${jdbc_driver}</value>
        </property>
        <property name="url">
            <value>${jdbc_url}</value>
        </property>
        <property name="username">
            <value>${jdbc_user}</value>
        </property>
        <property name="password">
            <value>${jdbc_password}</value>
        </property>
        <property name="maxActive" value="100"></property>
        <property name="maxIdle" value="30"></property>
        <property name="maxWait" value="500"></property>
        <property name="defaultAutoCommit" value="true"></property>
    </bean>
 
    <!-- 事务配置 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource">
    </property></bean>
 
    <!-- 实体映射类-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource">
        <property name="typeAliasesPackage" value="com.mss.common.pojo">
    </property></property></bean>
 
</aop:aspectj-autoproxy></beans>

数据库配置文件jdbc.properties:
技术分享

【struts2公共配置】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--?xml version="1.0" encoding="UTF-8" ?-->
<struts>
    <!-- 将struts2交给spring管理-->
    <constant name="struts.configuration.xml.reload" value="true">
    <constant name="struts.action.extension" value="action,do,webwork">
     
    <constant name="struts.enable.DynamicMethodInvocation" value="true">
    <constant name="struts.devMode" value="true">
    <constant name="struts.multipart.maxSize" value="100971520"></constant>
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <constant name="struts.objectFactory.spring.autoWire" value="name"></constant>
    <constant name="struts.objectFactory" value="spring"></constant>
    <constant name="struts.custom.i18n.resources" value="messages"></constant>
     
    <include file="strutsConfig/struts-user.xml"></include>
</constant></constant></constant></constant></struts>

【创建数据表结构】:项目中我们使用的是mysql数据库,在里面新建了一个user表:

技术分享

【搭建项目结构】:这里我使用了三层架构:Action-->Service-->Dao(实体类)

编写user实体类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.mss.common.pojo;
 
import java.io.Serializable;
 
public class User implements Serializable {
 
    /**
     *
     */
    private static final long serialVersionUID = 1L;
 
    private String id;
    private String userName;
    private String password;
    private String email;
 
    public String getId() {
        return id;
    }
 
    public void setId(String 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 getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
}

编写我们的dao层UserDao:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.mss.user.dao;
 
import java.util.List;
import com.mss.common.pojo.User;
 
 
public interface UserDao {
    /**
     * 添加用户
     * @param user
     */
    public void addUser(User user);
     
    /**
     * 列出所有用户
     * @return
     */
    public List<user> queryUsers();
     
    /**
     * 删除用户
     * @param id
     */
    public void delUser(String id);
}
</user>

使用mybatis,我们得配置xml文件,将实体类User与表user映射,也将UserDao中的方法进行映射实现,这样我们不需要写UserDaoImpl,因为对数据库的操作也在这个xml中进行:UserDao.xml,这个很重要

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!--?xml version="1.0" encoding="UTF-8" ?--> 
 
<mapper namespace="com.mss.user.dao.UserDao">
 
    <!-- User实体类、User表映射,注意实体类User和表名应该一致,字段下面可配置 -->
    <resultmap id="UserMap" type="com.mss.common.pojo.User">
        <result property="id" column="ID">
        <result property="userName" column="USERNAME">
        <result property="password" column="PASSWORD">
        <result property="email" column="EMAIL">
    </result></result></result></result></resultmap>
 
    <!-- 将UserDao中的方法进行配置,id=方法名称,parameterType=参数类型,resultMap返回的结果,
        当用户使用UserDao中的方法时,mybaties自己会找相应配置文件中的对数据库的操作 -->
    <insert id="addUser" parametertype="User">
        INSERT INTO USER(
        ID,
        USERNAME,
        PASSWORD,
        EMAIL
        )
        VALUES (
        #{id},
        #{userName},
        #{password},
        #{email}
        )
    </insert>
     
    <!-- 返回一个上面的 resultMap实例,这里的resultMap要与上面的配置的resultMap中的id一致-->
    <select id="queryUsers" resultmap="UserMap">
        SELECT * FROM USER
    </select>
     
    <!-- 删除信息 -->
    <delete id="delUser" parametertype="string">
        DELETE FROM USER WHERE ID = #{id}
    </delete>
     
</mapper>

编写我们的Service和ServiceImpl类,操作Dao层:UserService、UserServiceImpl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public interface UserService {
    /**
     * 添加用户
     * @param user
     */
    public void addUser(User user);
     
    /**
     * 列出所有的用户
     * @return
     */
    public List<user> queryUsers();
     
    /**
     * 删除用户
     * @param id
     */
    public void delUser(String id);
}
</user>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.mss.user.serviceImpl;
 
import java.util.List;
 
import com.mss.common.pojo.User;
import com.mss.user.dao.UserDao;
import com.mss.user.service.UserService;
 
public class UserServiceImpl implements UserService{
    private UserDao userDao;
     

ssh三大框架整合步骤

...struts2必须的jar放到lib目录下,再buildpath添加web工程中 3.配置struts2的核心配置文件:struts.xml 4.在web.xml文件中添加struts2的核心过滤器 5.添加测试页面 6.导入tomcatjar包对j2ee的支持 Spring框架的整合: 1.在struts2框架 查看详情

ssh(struts2+spring+hibernate)三大框架整合

SSH框架整合理论:在SSH框架的JAVAweb项目的开发过程中,WEB层通常使用的是Struts2+jsp,service层使用的是javaBean,DAO层使用的是hibernate,而spring的使用覆盖三层。    使用了spring框架之后,我们可以把对象交给spring来管... 查看详情

struts2,spring,hibernate三大框架ssh的整合步骤

整合步骤创建web工程引入相应的jar包整合spring和hibernate框架编写实体类pojo和hbm.xml文件编写bean-base.xml文件   <!--1)连接池实例-->   <beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSou 查看详情

spring-struts-mybatis整合错误集锦

        尽管三大框架特别特别的好用,可是,当我第一次把这三个框架用maven整合到一起的时候。各种错误接踵而至,以下来做一下三大框架整合的总结:     首先是在导入三大框... 查看详情

ssm三大框架整合(代码片段)

三大框架整合的思路1、Dao层:Mybatis的配置文件:SqlMapConfig.xml不需要配置任何内容,需要有文件头。文件必须存在。applicationContext-dao.xml:mybatis整合spring,通过由spring创建数据库连接池,spring管理SqlSessionFactory、mapper代理对象。... 查看详情

ssh整合

  1.三大框架的整合原理:  spring与struts2整合就是将action对象交给spring容器负责创建  spring与hibernate整合就是将sessionFatory交给spring来维护2.导包hibernate持久化规范数据库驱动struts2struts2整合spring需要的插件包这个插件包... 查看详情

ssh整合!!!!不会的赶紧来

说到SSH也就是Spring,struts2,Hibernate三大框架那么咱们话不多说开始搭建吧  首先我们这个项目的目的是应用三大框架将一个商品的信息保存到数据库中。第一步就是创建Web项目,引入相应的Jar包:Struts2框架开发的相应jar... 查看详情

spring与struts框架整合

Spring,负责对象对象创建Struts,用Action处理请求 Spring与Struts框架整合,        关键点:让struts框架action对象的创建,交给spring完成! Spring与Hibernate整合: 【SSH整合:   &nb 查看详情

三大框架:struts+hibernate+spring

 三大框架:Struts+Hibernate+Spring Java三大框架主要用来做WEN应用。 Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作) Hibernate主要是数据持久化到数据库   再用jsp... 查看详情

ssh(strutsspringhibernate)三大框架整合

1.新建数据库ssh_db->新建表user_tb(id为主键,自动递增)   2.导入jar包(struts、hibernate和spring)  3.注册页面reg.jsp,将表单的action属性设置为handleAction,input元素的name属性值加上前缀“user.”,如user.username... 查看详情

整合struts2框架和spring框架

-----------------------siwuxie095                整合Struts2框架和Spring框架     1、导入相关 jar包(共27个)  查看详情

hibernate+spring+struts2整合

...切面等。如有错误,欢迎指正。SSH框架整合首先时web.xml配置,hibernate的一大亮点就是延迟加载,就是在你需要的时候才会真正的发送SQL语句。加上OpenSessionI 查看详情

spring和struts2整合

目的:spring容器管理Action类,代替Servlet步骤:主要在配置文件Struts2:添加支持spring的jar包,配置<actionclass="Action类在容器中的id" Action类:  定义需要容器注入的属性,也就是定义service,service层也要添加调用DAO的属性... 查看详情

s(spring)s(struts2)框架整合之配置web.xml文件

<?xmlversion="1.0"encoding="UTF-8"?><web-appid="WebApp_9"version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ja 查看详情

spring与struts2整合出现错误httpstatus500-unabletoinstantiateaction

...整合时,spring接管了action对象的创建,所以一定要在spring配置文件中配置action,这里需要注意的是配置<beanid="???">中的id时,要与struts.xml配置action中的<ac 查看详情

ssh三大框架的原理和核心(转)

...容器找到目标web工程。3.进行解析web.xml中的struts标签中的配置:<filter><filter-name>struts2</filter-name><filter-class 查看详情

ssh的框架整合

... 第一步:先创建一个wed项目。   第二步:配置struts21.添加Struts2所需要的基本jar包到lib目录下包名如下图: 2.在web.xml文件里添加struts的过滤器配置如下:《提示:struts2-2 查看详情

ssh整合(struts2+spring+hibernate)

为了方便本次使用的是Myeclipse8.5一、创建web工程,搭建Struts框架开发环境:步骤1::导入struts框架所需的jar包步骤2:在web.xml中配置struts2.0主过滤器<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.5"xmlns="http://java.sun.com/xml/ns/jav 查看详情