Spring=SpringMVC-Spring-MyBatis=SSM框架整合

一.SSM框架整合

需求:使用ssm框架完成对account表的增删改查操作。

(1)搭建Mybatis环境:

1.确定数据库 和表

CREATE DATABASE /*!32312 IF NOT EXISTS*/`spring_db` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `spring_db`;

/*Table structure for table `account` */

DROP TABLE IF EXISTS `account`;

CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `money` double DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

/*Data for the table `account` */

insert  into `account`(`id`,`name`,`money`) values (1,'tom',1000),(2,'jerry',1000);

2.创建web模块,导入相关坐标:

<!--依赖管理-->
<dependencies>
    <!--mybatis相关坐标-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.15</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.10</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

Account实体

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Account {

    private Integer id;

    private String name;

    private Double money;
}

AccountDao接口和映射

public interface AccountDao {

    public List<Account> findAll();
}

同时在resources资源里面创建mybaits相关的AccountDao.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.wsl.dao.AccountDao">

   <select id="findAll" resultType="com.wsl.domain.Account">
        select * from account
    </select>

</mapper>

SqlMapConfig.xml配置

<?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属性文件-->
    <properties resource="jdbc.properties"></properties>

    <!--设置java类型别名-->
    <typeAliases>
        <package name="com.wsl.domain"></package>
    </typeAliases>

    <!--环境配置-->
    <environments default="mysql">
        <!--mysql环境-->
        <environment id="mysql">
            <!--使用JDBC类型事务管理器 -->
            <transactionManager type="JDBC"></transactionManager>
            <!--使用连接池 POOLED-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}"></property>
                <property name="password" value="${jdbc.password}"></property>
            </dataSource>
        </environment>
    </environments>
    <!--加载映射文件-->
    <mappers>
        <package name="com.wsl.dao"></package>
    </mappers>
</configuration>

测试:

public class MyBatisTest {

    @Test
    public void test01() throws Exception {
        // 1.加载核心配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 2.构建工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        // 3.创建会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 4.创建代理对象
        AccountDao accountDao = sqlSession.getMapper(AccountDao.class);
        // 5.查询
        List<Account> list = accountDao.findAll();
        for (Account account : list) {
            System.out.println(account);
        }
        // 6.释放资源
        sqlSession.close();
    }
}

此时搭建MyBatis环境完毕

 

(2)搭建spring环境

1.导入spring坐标

<!--spring相关坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.5</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.1.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.1.5.RELEASE</version>
</dependency>

2.AccountService接口和实现

public interface AccountService {

    List<Account> findAll();
}

@Service
public class AccountServiceImpl implements AccountService {

    @Override
    public List<Account> findAll() {
        System.out.println("AccountServiceImpl执行了...");
        return null;
    }
}

3.applicationContext.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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       	http://www.springframework.org/schema/beans	http://www.springframework.org/schema/beans/spring-beans.xsd
       	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
       	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">


    <!--开启注解组件扫描-->
    <context:component-scan base-package="com.wsl.service"/>


</beans>

测试:

@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringTest {

    @Autowired
    private AccountService accountService;

    @Test
    public void test01()throws Exception{
        List<Account> list = accountService.findAll();
    }
}

 

(3)spring整合MyBatis环境

思想:

原来我们使用mybatis框架,需要手动创建 sqlSessionFactory 、 sqlSession 、accountDao代理对象,被spring整合后,这些对象的创建权都交给ioc容器,我们的service层就可以直接使用@Autowired 完成依赖注入,整合就搞定了

MyBatis分析:

整合:

1.导入整合坐标:

<!--spring整合mybatis坐标-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.2</version>
</dependency>

<?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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       	http://www.springframework.org/schema/beans	http://www.springframework.org/schema/beans/spring-beans.xsd
       	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
       	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--开启注解组件扫描-->
    <context:component-scan base-package="com.wsl.service"/>

    <!--加载第三方配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!--配置连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>


    <!--配置SqlSessionFactoryBean-->
    <bean id="sessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 指定连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 指定实体类型别名 -->
        <property name="typeAliasesPackage" value="com.wsl.domain"/>
        <!-- 加载mybatis的核心配置文件,如果mybatis核心配置空了,这一步可以省略....-->
        <property name="configLocation" value="classpath:SqlMapConfig.xml"/>
    </bean>


    <!--配置dao层接口代理对象扫描-->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.wsl.dao"/>
    </bean>

</beans>

修改AccountService实现

@Service
public class AccountServiceImpl implements AccountService {

    // 依赖AccountDao
    @Autowired
    private AccountDao accountDao;

    @Override
    public List<Account> findAll() {
          return accountDao.findAll();
    }
}

测试:

@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringTest {

    @Autowired
    private AccountService accountService;

    @Test
    public void test01()throws Exception{
        List<Account> list = accountService.findAll();
        for (Account account : list) {
            System.out.println(account);
        }
    }
}

测试通过:

总结:

 

(4)搭建SpringMVC环境

导入springMVC坐标

<!--springMVC坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

导入相关页面资源:

web.xml

前端控制器,中文过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!--前端控制器-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>4</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <!--post请求中文过滤器-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

spring-mvc.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解组件扫描-->
    <context:component-scan base-package="com.wsl.web"></context:component-scan>
    <!--开启mvc注解支持-->
    <mvc:annotation-driven></mvc:annotation-driven>

   
</beans>

 

AccountController和list.jsp页面

@RequestMapping(value = "/account", name = "账户模块")
public class AccountController {

    @RequestMapping(value = "/findAll", name = "查询账户列表")
    public String findAll(Model model) {
        
        // 模拟service,提供假数据...
        List<Account> list = new ArrayList<>();
        list.add(new Account(1, "jack", 200d));
        list.add(new Account(2, "lucy", 100d));
        list.add(new Account(3, "lufei", 200d));
        list.add(new Account(4, "james", 3000d));
        model.addAttribute("list", list);

        return "/list.jsp"; // 使用默认视图解析器
    }
}

访问测试:在index.jsp配置:

然后进行tomcat部署即可测试成功

 

(5)Spring整合(web容器)

思想:

springMVC和spring本身就是同一家公司,不需要编写任何整合代码,可以做到无缝对接....

虽然不需要写任何整合代码,但是web.xml 只加载了(DispatcherServlet)前端控制器,扫描了 spring-mvc.xml配置文件,并没有去加载 applicationContext.xml配置文件,所以web层无法依赖注入service层代码...

我们现在需要在web项目启动时,加载spring环境,那么springMVC就可以从spring容器获得service对象了...

我们这里需要借助一个监听器:ServletContextListener,就可以在web工程启动时,加载spring的环境 applicationContext.xml,初始化spring容器,至此我们的web层就可以注入service层代码了...

spring框架就提供了这个一个监听器,专门加载applicationContext.xml,配置文件... 这里需要导入一个坐标spring-web,springMVC的坐标其实已经包含了它

在web.xml中配置监听器:

	<!--配置监听器,加载Spring环境-->
	<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>

修改AccountController

@Controller
@RequestMapping(value = "/account", name = "账户模块")
public class AccountController {

    // 依赖AccountService
    @Autowired
    private AccountService accountService;

    @RequestMapping(value = "/findAll", name = "查询账户列表")
    public String findAll(Model model) {
        List<Account> list = accountService.findAll();
        model.addAttribute("list", list);

        return "/list.jsp"; // 使用默认视图解析器
    }
}

自此,三大框架整合成功了

 

(6)账户新增:

add.jsp修改

web层


    @RequestMapping(value = "/save",name = "添加账户")
    public String save(Account account){
        accountService.save(account);
        return "redirect:/account/findAll.do";
    }

service层

dao层:

测试完成即可

 

(7)声明式事务

方式一:注解方式

applicationContext.xml文件

AccountService实现

(2)xml方式:


    <!--配置事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>
    <aop:config>
        <aop:pointcut id="serviceOperation" expression="execution(* com.wsl.service..*.*(..))"></aop:pointcut>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"></aop:advisor>
    </aop:config>

 

(8)账户修改:

list.jsp

web层:

service层:

dao层“

    Account findById(Integer id);

    <select id="findById" resultType="com.wsl.domain.Account">
        select * from account where id=#{id}
    </select>

update.jsp

修改数据:

update.jsp

web层

service层

dao层

    void update(Account account);

一般sql执行方案:
update account set name=#{name},money=#{money} where id=#{id}

动态sql执行方案:

    <update id="update">
        update account
        <set>
            <if test="name !=null">
                name=#{name},
            </if>
            <if test="money !=null">
                money=#{money},
            </if>
        </set>
        where id=#{id}
    </update>

执行完毕即可成功

 

(9)删除账户:

list.jsp

AccountController

    @RequestMapping(value = "/delete",name = "账户删除")
    public String delete(Integer id){
        accountService.delete(id);
        return "redirect:/account/findAll.do";
    }

service

    @Override
    public void delete(Integer id) {
        accountDao.delete(id);
    }

dao层

  void delete(Integer id);


    <delete id="delete">
        delete  from account where id=#{id}
    </delete>

执行完毕即可

(10)批量删除:

全选与反选:

运行流程:

web层:

service层

dao层:

测试完成成功。

 

二.用户登录权限控制:

在企业开发中,有的页面需要进行权限控制。

思想:

(1)用户登录

准备user表与数据:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL,
  `password` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;


insert  into `user`(`id`,`username`,`password`) values (1,'jack','123'),(2,'tom','123');

User实体:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    
    private Integer id;
    
    private String username;
    
    private String password;
}

login.jsp

web层

@Controller
@RequestMapping(value = "/user", name = "用户模块")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/login", name = "登录功能")
    public String login(User user, HttpServletRequest request, HttpSession session) {
        User currentUser = userService.login(user);
        if (currentUser == null) { // 登录失败
            request.setAttribute("error", "用户名或密码错误...");
            return "/login.jsp";
        }

        // 登录成功,跳转到查询列表页面
        session.setAttribute("currentUser", currentUser);
        return "redirect:/account/findAll.do";
    }
}

service层

dao层

login.jsp:显示错误信息

 

(2)权限拦截:

自定义登录拦截器

/*
    登录拦截器
 */
public class LoginInterceptor implements HandlerInterceptor {


    // 预处理拦截

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        // 1.从session中获取登录user对象
        User currentUser = (User) request.getSession().getAttribute("currentUser");
        // 2.判断
        if(currentUser == null){
            try {
                // 重定向到登录页面
                response.sendRedirect(request.getContextPath()+"/login.jsp");
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 未登录,拦截
            return false;
        }
        // 已登录放行
        return true;
    }
}

在spring-mvc.xml中配置拦截器规则

    <!--配置登录拦截器规则-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/account/*"/>
            <bean class="com.wsl.web.interceptor.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

 

三.Spring父子容器;

我们使用的spring框架,通过ContextLoaderListener加载的spring容器(父容器)

我们使用的springMVC框架,通过DispatcherServlet加载springMVC容器(子容器)

 

 

四,总结

ssm配置的总结项:

项目整体架构:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>com.wsl</groupId>  
  <artifactId>springday08_mybatis_spring_springMVC</artifactId>  
  <version>1.0-SNAPSHOT</version>  
  <!--依赖管理-->  
  <packaging>war</packaging>
  <dependencies> 
    <!--mybatis连接相关坐标-->  
    <dependency> 
      <groupId>mysql</groupId>  
      <artifactId>mysql-connector-java</artifactId>  
      <version>5.1.47</version> 
    </dependency>  
    <dependency> 
      <groupId>com.alibaba</groupId>  
      <artifactId>druid</artifactId>  
      <version>1.1.15</version> 
    </dependency>  
    <dependency> 
      <groupId>org.mybatis</groupId>  
      <artifactId>mybatis</artifactId>  
      <version>3.5.1</version> 
    </dependency>  
    <dependency> 
      <groupId>org.projectlombok</groupId>  
      <artifactId>lombok</artifactId>  
      <version>1.18.10</version> 
    </dependency>  
    <dependency> 
      <groupId>junit</groupId>  
      <artifactId>junit</artifactId>  
      <version>4.12</version> 
    </dependency>  
    <!--spring相关坐标-->  
    <dependency> 
      <groupId>org.springframework</groupId>  
      <artifactId>spring-context</artifactId>  
      <version>5.1.5.RELEASE</version> 
    </dependency>  
    <dependency> 
      <groupId>org.aspectj</groupId>  
      <artifactId>aspectjweaver</artifactId>  
      <version>1.9.5</version> 
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>
    <dependency> 
      <groupId>org.springframework</groupId>  
      <artifactId>spring-jdbc</artifactId>  
      <version>5.1.5.RELEASE</version> 
    </dependency>  
    <dependency> 
      <groupId>org.springframework</groupId>  
      <artifactId>spring-test</artifactId>  
      <version>5.1.5.RELEASE</version> 
    </dependency>  
    <!--spring整合mybatis坐标-->  
    <dependency> 
      <groupId>org.mybatis</groupId>  
      <artifactId>mybatis-spring</artifactId>  
      <version>1.3.2</version> 
    </dependency>  
    <!--springMVC坐标-->  
    <dependency> 
      <groupId>org.springframework</groupId>  
      <artifactId>spring-webmvc</artifactId>  
      <version>5.1.5.RELEASE</version> 
    </dependency>  
    <dependency> 
      <groupId>javax.servlet</groupId>  
      <artifactId>servlet-api</artifactId>  
      <version>2.5</version>  
      <scope>provided</scope> 
    </dependency>  
    <dependency> 
      <groupId>javax.servlet</groupId>  
      <artifactId>jsp-api</artifactId>  
      <version>2.0</version>  
      <scope>provided</scope> 
    </dependency>  
    <dependency> 
      <groupId>jstl</groupId>  
      <artifactId>jstl</artifactId>  
      <version>1.2</version> 
    </dependency> 
  </dependencies>  
  <!--指定maven编译版本-->  
  <build> 
    <plugins> 
      <plugin> 
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-compiler-plugin</artifactId>  
        <version>3.1</version>  
        <configuration> 
          <source>1.8</source>  
          <target>1.8</target>  
          <encoding>UTF-8</encoding> 
        </configuration> 
      </plugin> 
    </plugins> 
  </build> 
</project>

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<!--前端控制器  加载springMVC环境-->
<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring-mvc.xml</param-value>
	</init-param>
	<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

	<!--配置监听器,加载Spring环境-->
	<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>

	<!--post请求中中文过滤器-->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app>

SqlMapConfig.xml

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

    <!--&lt;!&ndash;加载properties属性文件&ndash;&gt;-->
    <!--<properties resource="jdbc.properties"></properties>-->
    <!--&lt;!&ndash;设置java类型别名&ndash;&gt;-->
    <!--<typeAliases>-->
        <!--<package name="com.wsl.domain"></package>-->
    <!--</typeAliases>-->
    <!--&lt;!&ndash;环境配置&ndash;&gt;-->
    <!--<environments default="mysql">-->
        <!--<environment id="mysql">-->
            <!--<transactionManager type="JDBC"></transactionManager>-->
            <!--<dataSource type="POOLED">-->
                <!--<property name="driver" value="${jdbc.driver}"></property>-->
                <!--<property name="url" value="${jdbc.url}"></property>-->
                <!--<property name="username" value="${jdbc.username}"></property>-->
                <!--<property name="password" value="${jdbc.password}"></property>-->
            <!--</dataSource>-->
        <!--</environment>-->
    <!--</environments>-->
    <!--<mappers>-->
        <!--<package name="com.wsl.dao"></package>-->
    <!--</mappers>-->
</configuration>

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db?useSSL=false
jdbc.username=root
jdbc.password=root

spring-mvc.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解组件扫描-->
    <context:component-scan base-package="com.wsl.web"></context:component-scan>
    <!--开启mvc注解支持-->
    <mvc:annotation-driven></mvc:annotation-driven>

    <!--配置登录拦截器规则-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/account/*"/>
            <bean class="com.wsl.web.interceptor.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

applicationContext.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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       	http://www.springframework.org/schema/beans	http://www.springframework.org/schema/beans/spring-beans.xsd
       	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
       	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--开启注解组件扫描-->
    <context:component-scan base-package="com.wsl.service"></context:component-scan>

    <!--加载第三方配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

    <!--配置连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!--配置SqlSessionFactoryBean-->
    <bean id="sessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--指定连接池-->
        <property name="dataSource" ref="dataSource"></property>
        <!--指定实体类型名称-->
        <property name="typeAliasesPackage" value="com.wsl.domain"></property>
        <!-- 加载mybatis的核心配置文件,如果mybatis核心配置空了,这一步可以省略....-->
        <property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
    </bean>

    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.wsl.dao"></property>
    </bean>

    <!--&lt;!&ndash;配置事务管理器&ndash;&gt;-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--<tx:advice id="txAdvice" transaction-manager="transactionManager">-->
        <!--<tx:attributes>-->
            <!--<tx:method name="*"/>-->
        <!--</tx:attributes>-->
    <!--</tx:advice>-->
    <!--<aop:config>-->
        <!--<aop:pointcut id="serviceOperation" expression="execution(* com.wsl.service..*.*(..))"></aop:pointcut>-->
        <!--<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"></aop:advisor>-->
    <!--</aop:config>-->
    <!--开启tx注解支持-->
    <tx:annotation-driven></tx:annotation-driven>
</beans>

AccountController

@Controller
@RequestMapping(value = "/account",name = "账户模块")
public class AccountController {

    @Autowired
    AccountService accountService;

    @RequestMapping(value = "/findAll",name = "查询账户列表")
    public String findAll(Model model){
//        List<Account> list = new ArrayList<>();
//        list.add(new Account(1,"javak",2000d));
//        list.add(new Account(2,"abc",2600d));
//        list.add(new Account(3,"ecd",600d));
//        list.add(new Account(4,"edd",1200d));
//        list.add(new Account(5,"tom",4300d));
//        list.add(new Account(6,"c++",3200d));
//        model.addAttribute("list",list);
        List<Account> list = accountService.findAll();
        model.addAttribute("list",list);
        return "/list.jsp";
    }


    @RequestMapping(value = "/save",name = "添加账户")
    public String save(Account account){
        accountService.save(account);
        return "redirect:/account/findAll.do";
    }

    @RequestMapping(value = "/findById",name = "查询账户")
    public String findById(Integer id, Model model){
        Account account = accountService.findById(id);
        model.addAttribute("account",account);
        return "/update.jsp";
    }
    @RequestMapping(value = "/update",name = "更新账户")
    public String update(Account account){
        accountService.update(account);
        return "redirect:/account/findAll.do";
    }
    @RequestMapping(value = "/delete",name = "账户删除")
    public String delete(Integer id){
        accountService.delete(id);
        return "redirect:/account/findAll.do";
    }

    @RequestMapping(value = "/deleteBath",name = "批量删除")
    public String deleteBath(Integer[] ids){
        accountService.deleteBath(ids);
        return "redirect:/account/findAll.do";
    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值