首先在pom.xml引入依赖,上片已经移入
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的整合
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&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>
访问:
点击reg