Spring:与Struts2与Mybatis的整合

0c70332bfc5c4d4896ab5e356239cc9e.png

dfae11cc662b477a8a539c8737590210.png

7ae87cbc2ed240cd89676359da373899.png

 f17c560da49d4b2d98a743a387f69f11.png

b0823e733b5d430cba6bb082a7fca37f.png

首先在pom.xml引入依赖,上片已经移入

e236b4a163564a52adcd32329d53ece9.png

RegAction、UserService、UserServiceImpl上篇已创建 ,这里用不到

初始化配置:

web.xml:

<?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>

    <package name="ssm" extends="struts-default">
        <!-- 用户通过url访问,可以通过reg.action进行访问,会接受用户的请求,创建RegAction这个对象,进行相应处理-->
        <action name="reg" class="regAction">
            <!--跳转页面-->
            <result name="success">/regOk.jsp</result>
        </action>
    </package>

</struts>

UserService:

package com.baizhiedu.service;

import com.baizhiedu.entiry.User;

public interface UserService {
    public void register(User user);
}

 UserServiceImpl:

package com.baizhiedu.service;

import com.baizhiedu.entiry.User;
import com.baizhiedu.dao.UserDAO;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public class UserServiceImpl implements UserService {
    private UserDAO userDAO;

    public UserDAO getUserDAO() {
        return userDAO;
    }

    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    @Override
    public void register(User user) {
        userDAO.save(user);
    }
}

spring与Mybatis的整合

fe3ee92ccc85494b86544aecabbb0c62.png

aoolicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">


<!--
  id:名字唯一
  class属性:类的全限定名
  通过写bean标签告诉工厂生产的对象
-->
    <!--创建连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;charaterEcoding=utf-8"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>

    <!--    创建SqlSessionFactory SqlSessionFactoryBean-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--指定数据源-->
        <property name="dataSource" ref="dataSource"></property>
        <!--指定类别名-->
        <property name="typeAliasesPackage" value="com.baizhiedu.entiry"/>
        <!--指定mapper文件-->
        <property name="mapperLocations">
            <!--mapperLocations对应的是数组类型的赋值 spring内置关键字代表src-->
            <list>
                <value>classpath:com.baizhiedu.mapper/*Mapper.xml</value>
            </list>
        </property>
    </bean>

    <!--创建DAO对象 MapperScannerConfigure  -->
    <bean id="confiure" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        <property name="basePackage" value="com.baizhiedu.dao"></property>
    </bean>


<!--    事务-->
<!--    告知要创建的UserServiceImpl对象  -->
    <bean id="userService" class="com.baizhiedu.service.UserServiceImpl">
        <property name="userDAO" ref="userDAO"/>
    </bean>

<!-- 指定额外功能 事务-->
    <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
<!--    整合切面-->
    <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>

<!--    指定Action-->
    <bean id="regAction" class="com.baizhiedu.action.Regaction" scope="prototype">
        <property name="userService" ref="userService"/>
    </bean>
</beans>


实体类: 

User:

package com.baizhiedu.entiry;

import java.io.Serializable;

public class User implements Serializable {
    private Integer id;
    private String name;
    private String password;

    public User() {
    }

    public User(Integer id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

 UserDAO:

package com.baizhiedu.dao;

import com.baizhiedu.entiry.User;

public interface UserDAO {
    public void save(User user);
}

UserDAOMapper.xml:

<?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="com.baizhiedu.dao.UserDAO">
    <!--使用insert,update,delete,select标签来写sql语句-->
    <insert id="save" parameterType="User">
        insert into tb_users(name,password) values (#{name},#{password})
    </insert>
</mapper>

 开发Service:Spring添加事务:上面applicationContext.已添加

Action,Regaction:

package com.baizhiedu.action;


import com.baizhiedu.entiry.User;
import com.baizhiedu.service.UserService;
import com.opensymphony.xwork2.Action;

public class Regaction implements Action {
    private UserService userService;

    //表单d的name属性要写<input type="text" name="user.name"/>自动传给User对象的name属性
    //表单d的name属性要写<<input type="text" name="user.password"/>
    private User user;

    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String execute() throws Exception {
        userService.register(user);
        return Action.SUCCESS;
    }
}

log4j.properties:

#resources文件夹根目录下
### 配置根
log4j.rootLogger=debug,console

### 日志输出到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -%m%n

然后再在applicationContext.xml进行指定Action对象

struts.xml:

<?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>

<package name="ssm" extends="struts-default">
    <!-- 用户通过url访问,可以通过reg.action进行访问,会接受用户的请求,创建RegAction这个对象,进行相应处理-->
    <action name="reg" class="regAction">
        <!--跳转页面-->
        <result name="success">/regOk.jsp</result>
    </action>
</package>

</struts>

创建reg.jsp页面

<%--
  Created by IntelliJ IDEA.
  User: DELL
  Date: 2022/5/24
  Time: 23:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<html>
<head>
    <title>Title</title>
    <base href="<%=basePath%>">
</head>
<body>
   <form method="post" action="${pageContext.request.contextPath}/reg.action">
       UserName<input type="text" name="user.name"/><br>
       Password<input type="text" name="user.password"/><br>
       <input type="submit" value="reg">
   </form>
</body>
</html>

创建regOK.jsp:

<%--
  Created by IntelliJ IDEA.
  User: DELL
  Date: 2022/5/24
  Time: 23:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<html>
<head>
    <title>Title</title>
    <base href="<%=basePath%>">
</head>
<body>
<h1>RegOk!!!!!!!</h1>
</body>
</html>

访问:

9970984910ba4c2388bc551c746bab06.png

 点击reg

78b22282c6a649f79c74f0a023ea588e.png

 f43b68704cf7461ba1940c5d4a33d8d7.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值