Spring MVC+MyBatis

SSM整合
项目源码下载(http://pan.baidu.com/s/1gf6yKU3)
备注:本项目中还要其他的功能点,但是该笔记中只是对ssm框架进行的解析
1 、导入相关 jar 包(所有的 jar 包都导入了)


graphic *jar 包有些没用的这里没有进行删除
2 、配置相关配置文件,
1 web.xml
<display-name>NA_web</display-name>
    <!--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 >
    <!-- springmvc 配置 -->
    < servlet >
       <!--springmvc 的核心是 dispatcherServlet ,它负责控制整个页面的请求路径 -->
       < servlet-name > dispatcherServlet </ servlet-name >
       < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
       <!-- 初始化参数 , 相当于 src 目录 -->
       < init-param >
          < param-name > contextConfigLocation </ param-name >
          < param-value > classpath:na.xml </ param-value >
       </ init-param >
       <!-- 表示启动容器时初始化 Servlet -->
       < load-on-startup > 1 </ load-on-startup >
    </ servlet >
    <!-- 拦截器,拦截所有以 .do 结尾的请求 -->
    < servlet-mapping >
       < servlet-name > dispatcherServlet </ servlet-name >
       < url-pattern > *.do </ url-pattern >
    </ servlet-mapping >
    <!-- 处理从页面传递中文到后台而出现的中文乱码问题 -->
    < 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 >
    < welcome-file-list >
       < welcome-file > index.jsp </ welcome-file >
    </ welcome-file-list >
(2).applicationcontext.xml spring 的配置)
<!-- 配置dataSource -->
    <!-- 获取配置文件 -->
    < bean id = "config"
       class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
       < property name = "locations" >
          < list >
             < value > classpath:db-config.properties </ value >
          </ list >
       </ property >
    </ bean >
    <!-- 获取数据源 -->
    < bean id = "dataSource"
       class = "org.springframework.jdbc.datasource.DriverManagerDataSource" >
       < property name = "driverClassName" value = "${db.dirverClass}" />
       < property name = "url" value = "${db.url}" />
       < property name = "username" value = "${db.username}" />
       < property name = "password" value = "${db.password}" />
    </ bean >
   
    < bean id = "mybatisConfig" class = "org.springframework.core.io.ClassPathResource" >
       < constructor-arg index = "0" value = "mybatis.cfg.xml" ></ constructor-arg >
    </ bean >
    <!-- 配置工厂 -->
    < bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" >
       < property name = "dataSource" ref = "dataSource" ></ property >
       < property name = "configLocation" ref = "mybatisConfig" ></ property >
    </ bean >
    <!-- 配置声明式事务 -->
    <!-- 配置事务管理器 -->
    < bean id = "txManager"
       class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" >
       < property name = "dataSource" ref = "dataSource" ></ property >
    </ bean >
    < tx:advice id = "txAdvice" transaction-manager = "txManager" >
       < tx:attributes >
          < tx:method name = "save" propagation = "REQUIRED" />
          < tx:method name = "get" read-only = "true" />
          < tx:method name = "*" propagation = "REQUIRED" />
       </ tx:attributes >
    </ tx:advice >
    < aop:config >
       < aop:pointcut expression = "execution(* com.na.service.impl.*.*(..))"
          id = "pointcut" />
       < aop:advisor advice-ref = "txAdvice" pointcut-ref = "pointcut" />
    </ aop:config >
    < context:component-scan base-package = "com.na" ></ context:component-scan >
3 )、 springmvc.xml 配置( 本项目中用的是 na.xml
<!-- 配置视图解析器 -->
    < bean id = "jspViewResolver"
       class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
       <!-- 结果视图的前缀 -->
       < property name = "prefix" value = "/WEB-INF/jsp/" />
       <!-- 结果视图的后缀 -->
       < property name = "suffix" value = ".jsp" />
    </ bean >
   
   
    <!-- 处理直接返回 json 格式字符串 -->
    < bean id = "stringHttpMessageConverter"
       class = "org.springframework.http.converter.StringHttpMessageConverter" >
       < property name = "supportedMediaTypes" >
          < list >
             < value > text/plain;charset=UTF-8 </ value >
          </ list >
       </ property >
    </ bean >
    <!-- 处理 json -->
    < bean id = "mappingJacksonHttpMessageConverter"
       class = "org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
    </ bean >
    <!-- 启动 Spring MVC 的注解功能,完成请求和注解 POJO 的映射 -->
    < bean
       class = "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
       < property name = "messageConverters" >
          < list >
             < ref bean = "stringHttpMessageConverter" />
             < ref bean = "mappingJacksonHttpMessageConverter" />
          </ list >
       </ property >
    </ bean >
    <!-- 配置拦截器 -->
    <!-- 可以配置很多个拦截器 -->
    < mvc:interceptors >
       <!-- 其中的一个拦截器 -->
       < mvc:interceptor >
          <!-- /** 表示路径及其子路径下进行拦截 如果是 /admin/* 会拦截 admind 的子路径例如 /admin/list 但是 admin/list/test 就不会被拦截
             /admin/** 则会拦截所有的 -->
          < mvc:mapping path = "/**" />
          <!-- 拦截器所在的位置 -->
          < bean class = "com.na.intercept.NaIntercept" >
             <!-- 注入, loedPass 就是 com.na.intercept.NaIntercept 类中定义的属性名 -->
             < property name = "loedPass" >
                 <!-- loedPass 赋值。 loedPass list 类型 -->
                 < list >
                    < value > login.do </ value >
                    < value > welcome.do </ value >
                    < value > list.do </ value >
                 </ list >
             </ property >
          </ bean >
       </ mvc:interceptor >
    </ mvc:interceptors >
    < context:component-scan base-package = "com.na.controller" />
4 mybatis.xml 配置( mybatis.cfg.xml 中配置)
<configuration>
    < typeAliases >
       < package name = "com.na.vo" />
    </ typeAliases >
    < mappers >
       <!-- 所有 mappers 填写文件 -->
       < mapper resource = "com/na/vo/user.mapper.xml" />
    </ mappers >
</ configuration >

3 、项目中需要创建的包以及类
1 )整体结构。 其中 jdbc 包下的类是测试数据库连接的
graphic
2 )实体类创建
graphic
user.java
graphic
注意实体类的有参和无参构造方法以及相应的 set get 方法都要有,因为不是重点所以此处省略
user.mapper.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.na.dao.UserDao" >
    < select id = "list" resultType = "com.na.vo.User" >
      select * from user
    </ select >
</ mapper >
(3)Dao 层以及实现层
graphic
public interface UserDao {
    public List<User> list();
}
graphic

@Repository ( "userDao" )
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
    @Autowired
    @Override
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory ) {
       super .setSqlSessionFactory( sqlSessionFactory );
   };
    public List<User> list() {
       return getSqlSession().selectList( "com.na.dao.UserDao.list" );
   }
}
4 Service 层以及实现层
graphic
UserService.java
public interface UserService {
    public List<User> list();
}
 
UserServiceImpl.java

@Service ( "userService" )
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao ;
    /*public UserDao getUserDao() {
      return userDao;
   }
*/
    public void setUserDao(UserDao userDao ) {
       this . userDao = userDao ;
   }
    public List<User> list() {
       return userDao .list();
   }
}
(5)Controller
graphic
只写 userController.java 就行其他的是一些小的功能测试点
@Controller
public class UserController {
    @Autowired
    private UserService userService ;
   
    @RequestMapping ( "/list" )
// public String list(Model model){
//    model.addAttribute("userList", userService.list());
//    return "/list";    
// }
    public ModelAndView list() {
      ModelAndView mav = new ModelAndView( "/list" );
       mav .addObject( "userList" , userService .list());
       return mav ;
   }
   
    public UserService getUserService() {
       return userService ;
   }
    public void setUserService(UserService userService ) {
       this . userService = userService ;
   }
}
6 jsp 界面测试
graphic
注意:在 jsp 文件夹下创建 list.jsp ,必须在 jsp 文件夹下创建,因为在 na.xml 配置的视图解析器就是指向改 jsp 文件夹的
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding = "UTF-8" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" >
< title > 框架测试 </ title >
</ head >
< body >
    < table >
       < tr >
          < td > 编号 </ td >
          < td > 姓名 </ td >
          < td > 密码 </ td >
       </ tr >
       < c:forEach items = " ${userList} " var = "b" >
          < tr >
             < td > ${b.id } </ td >
             < td > ${b.name } </ td >
             < td > ${b.pwd } </ td >
          </ tr >
       </ c:forEach >
       < tr ></ tr >
    </ table >
</ body >
</ html >
到此。 springmvc+spring+mybatis 框架就全部完成,因为篇幅的问题没有做过多的解释,具体的解析参照源码,源码中还有其他的知识点,可以只看文章中列出的地方,其他的代码可以忽略
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猪头的彩虹糖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值