查看: 106|回复: 0

SSM整合

[复制链接]
发表于 2020-2-15 21:50:29 | 显示全部楼层 |阅读模式
环境搭建

1、新建SpringMVC项目,添加所需的jar包


  • spring-core.jar
  • spring-beans.jar
  • spring-context.jar
  • spring-expression.jar
  • spring-aop.jar   (利用spring的注解)
  • spring-jdbc.jar  (spring-tx.jar依赖spring-jdbc,如果要利用spring的事务管理,需添加此包。就算不利用spring的事务管理,mybatis-spring.jar依赖此包,也必须添加此包)
  • spring-tx.jar  (事务一般是用spring的事务管理,如果要利用spring的事务管理,需要添加此包)

  (如果要整合AspectJ)

  • spring-aspects.jar
  • aopalliance.jar
  • aspectjweaver.jar


  • mybatis.jar


  • log4j.jar
  • commons-logging.jar


  • mybatis-spring.jar   (spring整合mybatis需要的包。springmvc自己就是spring的一部分,原来就要搭配利用,不存在什么整合的说法)



  • dbcp的jar包 (也可以利用其它连接池)


  • java web2个jar:servlet、jsp各一个  (需要用到request、response、session等对象)



2、项目下新建文件夹config,右键标识为资源根目次(Resources Root),把spring的配置文件applicationContext.xml、springmvc的配置文件dispatcher-servlet.xml放进去。

原来applicationContext.xml、dispatcher-servlet.xml、web.xml都在WEB-INF下的,因为ssm配置文件多,一般都拿出来单独放在一个文件夹里,只在WEB-INF下留一个web.xml。
在spring配置文件中引入mybatis配置文件,然后在web.xml中引入spring配置文件、springmvc配置文件。web服务器默认加载WEB-INF下的web.xml,web.xml不能移到别处。

其实spring、springmvc的配置文件都是spring的配置文件,可以写在一个xml中,但ssm配置多,分开来写,使单个xml不痴肥,即模块化配置。
springmvc配置文件中一般只写springmvc相干的配置,比如springmvc的注解驱动、视图解析、controller层的包扫描、springmvc的拦截器,其它配置都写到spring配置文件中。

如果spring配置文件很大,也可以划分为多个xml,比如spring-tx.xml(事务配置)、spring-db.xml(数据库相干配置).....在web.xml中利用spring-*.xml引入即可。



3、config下新建db.properties
  1. jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/my_db?serverTimezone=GMTjdbc.username=chyjdbc.password=abcdjdbc.initialSize=5jdbc.maxTotal=30jdbc.maxIdle=10
复制代码



4、config下新建log4j.properties
  1. # Global logging configurationlog4j.rootLogger=DEBUG, stdout,D# MyBatis logging configuration...log4j.logger.org.mybatis.example.BlogMapper=TRACE # Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #如果查看调试信息,改为DEBUG即可log4j.appender.stdout.Threshold = ERRORlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n# File output...log4j.appender.D = org.apache.log4j.DailyRollingFileAppender#相对路径,摆设到tomcat后,会输出日记到tomcat的logs文件夹下的error.log中log4j.appender.D.File = ../logs/error.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = ERRORlog4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%nlog4j.appender.D.encoding=UTF-8
复制代码



5、config下新建mybatis-config.xml
  1.                     
复制代码
数据库配置、mapper指定都移到spring配置文件中去了,mybatis配置文件只需指定po类的别名。




6、新建包、文件夹


dao下面放mapper接口、映射文件。
service下放业务层的接口、实现类,可以建一个子包impl来放实现类。
controller不需要写接口。
如果po类需要序列化,需要implements Serializable。

WEB-INF下新建lib文件夹来存放jar包,新建jsp文件夹来存放jsp文件。

静态资源的放法许多:

  • 在web下新建resource(不需要右键标注),resource下新建css、js、image。(最常用)
  • web下新建css、js、image
  • WEB-INF下新建css、js、image



7、在dispatcher-servlet.xml中配置springmvc
  1.                                                                     
复制代码

既然是springmvc,那mvc(表现层,前端+controller)的controller(包扫描)、view(视图解析器)、前端要用的静态资源都要配置,
至于model,表现层、业务层、长期层都要用,放到spring配置文件中去配置。


看到、开头的标签,十有八九IDEA要导错约束,将cache换为mvc、tx即可,xsi中对应的部分也要改(已标红)。
如果不改,会报错:“通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明。”、没有如许的bean。


静态资源路径的2种写法:(不能直接利用IDEA提示的路径)
  1.     [img]https://www.mfsun.com/resource/image/1.jpg[/img]      [align=center][img]https://www.mfsun.com/${pageContext.request.contextPath}/resource/image/1.jpg[/img][/align]
复制代码


静态资源的配置,有时间代码自己没有错误,报404可能是因为:

  • 利用的是浏览器缓存,扫除缓存或者换个浏览器试试。
  • IDEA中调试时,先前就已run | debug,修改代码后,未先点击停止,直接点重新摆设 | 重启服务器。不要图省事儿,先点停止,再点摆设|重启服务器,能避免许多问题。
  • 摆设项目时资源拷贝不全,可在out目次查看资源是否拷贝齐全。




7、在applicationContext.xml中配置spring
  1.                                                                                                                                                                                                 
复制代码




各层编写示例

po:
  1. @Componentpublic class User implements Serializable {    private int id;    private String username;    private String password;    public int getId() {        return id;    }    public void setId(int 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;    }}
复制代码



dao:
  1. public interface UserDao {    public User queryUserById(Integer id);}
复制代码
  1.             select * from user_tb where id=#{id}   
复制代码
这2个是mapper接口、映射文件。



service:
  1. public interface UserService {    public User queryUserById(Integer id);}
复制代码
  1. @Service("userService")public class UserServiceImpl implements UserService {    private UserDao userDao;    @Autowired    public void setUserDao(UserDao userDao) {        this.userDao = userDao;    }    @Override    public User queryUserById(Integer id) {        return userDao.queryUserById(id);    }}
复制代码



controller:
  1. @[email protected]("/user")public class UserController {    private UserService userService;    @Autowired    public void setUserService(UserService userService) {        this.userService = userService;    }    @RequestMapping("/{id}")    public String queryUserById(@PathVariable Integer id, Model model){        User user = userService.queryUserById(id);        model.addAttribute("user", user);        return "user_info";    }}
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

天涯海角也要找到Ni:SSM整合

中发现Ni: SSM整合
中发现Ni: SSM整合
中发现Ni: SSM整合
中发现Ni: SSM整合
中发现Ni: SSM整合
中发现Ni: SSM整合
相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表