您的当前位置:首 页 >> 信息中心

SSM,SSM系列教材 (一)

发布日期:2021-09-26 23:14:17 作者: 点击:
SSM系列教材 (二)- 分页示例下载区文件名文件大小lib.rar10mssm.rar10m登录后可下载工具版本兼容问题本例演示从0开始逐一整合SSM的步骤,要学习本知识,需要具备Spring, SpringMVC, Mybatis 的基础,如果没有这些基础,请把基础掌握之后再学习,不要跳跃学习,欲速则不达。

必读: 基于框架的程序要成功运行,对于JAR包的版本,配置文件的正确性有着苛刻的要求,任何一个地方出错了,都会导致框架程序运行失败。 如果你是第一次学习本框架,务必严格按照教程的指导,完全模仿操作,直到成功看到运行效果。 第一次成功之后,信心,思路都会有较好的铺垫,然后再根据自己的疑惑,在“成功”的代码上做原本想做的改动和调整,这样可以大大节约学习的时间,提高效率,切勿一来就擅自改动,给自己的学习制造障碍

步骤1:IDEA   步骤2:数据库   步骤3:创建表   步骤4:准备数据   步骤5:JDK版本   步骤6:先运行,再学习   步骤7:新建项目   步骤8:导入jar包   步骤9:pojo   步骤10:CategoryMapper   步骤11:Category.xml   步骤12:CategoryService   步骤13:CategoryServiceImpl   步骤14:CategoryController   步骤15:web.xml   步骤16:applicationContext.xml   步骤17:springMVC.xml   步骤18:listCategory.jsp   步骤19:部署在tomcat中,重启测试   步骤20:思路图   步骤21:删掉,从头开始,这次全部自己做   

步骤1:IDEA edit 顶 折纠问请先登录 本教程是使用Eclipse制作的,如果是用IDEA,请跳转到 IDEA 如何创建SSM项目。 但是跳转过去后的教程,没有当前对每个类,配置文件,JSP的讲解有那么详细,所以最好使用Eclipse把当前的教程撸一遍,理解之后,再使用IDEA教程步骤2:数据库 edit 顶 折纠问请先登录 首先准备数据库 how2java如果没有安装数据库,请参考 安装mysql-server

注: 新安装的数据库账号密码是root:admin, 后续的配置里,也是用的这个账号密码。如果密码不是这个,本知识点右上角的可运行项目跑不起来,所以尽量修改密码为admin, 修改密码办法:修改root密码

create database how2java;create database how2java;步骤3:创建表 edit 顶 折纠问请先登录 接着准备表Category只有2个字段id和nameuse how2java; CREATE TABLE category_ (id int(11) NOT NULL AUTO_INCREMENT,name varchar(30) ,PRIMARY KEY (id)) DEFAULT CHARSET=UTF8;use how2java; CREATE TABLE category_ (id int(11) NOT NULL AUTO_INCREMENT,name varchar(30) ,PRIMARY KEY (id)) DEFAULT CHARSET=UTF8;步骤4:准备数据 edit 顶 折纠问请先登录 use how2java;insert into category_ values(null,"category1");insert into category_ values(null,"category2");insert into category_ values(null,"category3");insert into category_ values(null,"category4");insert into category_ values(null,"category5");select * from category_use how2java;insert into category_ values(null,"category1");insert into category_ values(null,"category2");insert into category_ values(null,"category3");insert into category_ values(null,"category4");insert into category_ values(null,"category5");select * from category_步骤5:JDK版本 edit 顶 折纠问请先登录 本教程是通过JDK8编译的,如果您机器上运行环境是低版本JDK,将无法识别其中的类,否则会出现如图所示的错误。 请使用JDK8 ,请参考 检测JDK版本,以及下载与配置

请勿使用JDK9 或者更高版本,有兼容性风险

JDK版本步骤6:先运行,再学习 edit 顶 折纠问请先登录 SSM整合需要做不少步骤,任何一步部做漏了,做错了,都有可能失败,这样会影响学习的信心,并且误以为本教程是走不通的。

所以先下载右上角的可运行项目 ssm.rar,解压后导入到eclipse中,启动Tomcat,观察是否正常运行。确定可以运行,确定教程是可以跑得起来的,再学习下面的内容。

导入到Eclipse中并运行的办法请参考:导入动态Web项目到Eclipse中

部署成功之后,测试地址

http://127.0.0.1:8080/ssm/listCategory先运行,再学习步骤7:新建项目 edit 顶 折纠问请先登录 在eclipse中新建项目ssm,使用dynamic web project的方式。 不熟悉这种方式的同学,请参考 使用Dynamic Web Project的方式开发J2EE应用新建项目步骤8:导入jar包 edit 顶 折纠问请先登录 下载右上角的lib.rar, 解压后复制到 e:/project/ssm/WebContent/WEB-INF/lib目录下步骤9:pojo edit 顶 折纠问请先登录 package com.how2java.pojo;public class Category {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Category [id=" + id + ", name=" + name + "]";}} 代码行数较多,请点击查看 package com.how2java.pojo;public class Category {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Category [id=" + id + ", name=" + name + "]";}}步骤10:CategoryMapper edit 顶 折纠问请先登录 package com.how2java.mapper; import java.util.List;import com.how2java.pojo.Category; public interface CategoryMapper { public int add(Category category); public void delete(int id); public Category get(int id); public int update(Category category); public List list();public int count();} 代码行数较多,请点击查看 package com.how2java.mapper; import java.util.List;import com.how2java.pojo.Category; public interface CategoryMapper { public int add(Category category); public void delete(int id); public Category get(int id); public int update(Category category); public List list();public int count();}步骤11:Category.xml edit 顶 折纠问请先登录 Category.xml需要和CategoryMapper放在同一个包下面,并且namespace必须写CategoryMapper的完整类名insert into category_ ( name ) values (#{name})delete from category_ where id= #{id} select * from category_where id= #{id}update category_ set name=#{name} where id=#{id}select * from category_ 代码行数较多,请点击查看 insert into category_ ( name ) values (#{name})delete from category_ where id= #{id} select * from category_where id= #{id}update category_ set name=#{name} where id=#{id}select * from category_步骤12:CategoryService edit 顶 折纠问请先登录 package com.how2java.service;import java.util.List;import com.how2java.pojo.Category;public interface CategoryService {List list();}package com.how2java.service;import java.util.List;import com.how2java.pojo.Category;public interface CategoryService {List list();}步骤13:CategoryServiceImpl edit 顶 折纠问请先登录 CategoryServiceImpl被注解@Service标示为一个Service并且装配了categoryMapperpackage com.how2java.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.how2java.mapper.CategoryMapper;import com.how2java.pojo.Category;import com.how2java.service.CategoryService;@Servicepublic class CategoryServiceImplimplements CategoryService{@AutowiredCategoryMapper categoryMapper;public List list(){return categoryMapper.list();}} 代码行数较多,请点击查看 package com.how2java.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.how2java.mapper.CategoryMapper;import com.how2java.pojo.Category;import com.how2java.service.CategoryService;@Servicepublic class CategoryServiceImplimplements CategoryService{@AutowiredCategoryMapper categoryMapper;public List list(){return categoryMapper.list();}}步骤14:CategoryController edit 顶 折纠问请先登录 CategoryController被@Controller标示为了控制器自动装配了categoryService通过@RequestMapping映射访问路径/listCategory路径到方法listCategory()。在listCategory()方法中,通过categoryService获取后,然后存放在"cs"这个key上。package com.how2java.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.how2java.pojo.Category;import com.how2java.service.CategoryService;// 告诉spring mvc这是一个控制器类@[email protected]("")public class CategoryController {@AutowiredCategoryService categoryService;@RequestMapping("listCategory")public ModelAndView listCategory(){ModelAndView mav = new ModelAndView();List cs= categoryService.list();// 放入转发参数mav.addObject("cs", cs);// 放入jsp路径mav.setViewName("listCategory");return mav;}} 代码行数较多,请点击查看 package com.how2java.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.how2java.pojo.Category;import com.how2java.service.CategoryService;// 告诉spring mvc这是一个控制器类@[email protected]("")public class CategoryController {@AutowiredCategoryService categoryService;@RequestMapping("listCategory")public ModelAndView listCategory(){ModelAndView mav = new ModelAndView();List cs= categoryService.list();// 放入转发参数mav.addObject("cs", cs);// 放入jsp路径mav.setViewName("listCategory");return mav;}}步骤15:web.xml edit 顶 折纠问请先登录 在WEB-INF目录下新增加web.xml,这个web.xml有两个作用:1. 通过ContextLoaderListener在web app启动的时候,获取contextConfigLocation配置文件的文件名applicationContext.xml,并进行Spring相关初始化工作

2. 有任何访问,都被DispatcherServlet所拦截,这就是Spring MVC那套工作机制了。

contextConfigLocationclasspath:applicationContext.xmlorg.springframework.web.context.ContextLoaderListenermvc-dispatcherorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:springMVC.xml1mvc-dispatcher/ 代码行数较多,请点击查看 contextConfigLocationclasspath:applicationContext.xmlorg.springframework.web.context.ContextLoaderListenermvc-dispatcherorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:springMVC.xml1mvc-dispatcher/步骤16:applicationContext.xml edit 顶 折纠问请先登录 在src目录下新建applicationContext.xml文件,这是Spring的配置文件,其作用1. 通过注解,将Service的生命周期纳入Spring的管理

2. 配置数据源

3. 扫描存放SQL语句的Category.xml

4. 扫描Mapper,并将其生命周期纳入Spring的管理

com.mysql.jdbc.Driverjdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8rootadmin 代码行数较多,请点击查看 com.mysql.jdbc.Driverjdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8rootadmin步骤17:springMVC.xml edit 顶 折纠问请先登录 在src目录下新建springMVC.xml

1. 扫描Controller,并将其生命周期纳入Spring管理

2. 注解驱动,以使得访问路径与方法的匹配可以通过注解配置

3. 静态页面,如html,css,js,images可以访问

4.视图定位到/WEB/INF/jsp 这个目录下

代码行数较多,请点击查看 步骤18:listCategory.jsp edit 顶 折纠问请先登录 在WEB-INF下创建jsp目录,并创建文件listCategory.jsp。在这个jsp文件中,通过forEach标签,遍历CategoryController传递过来的集合数据。 idname${c.id}${c.name} idname${c.id}${c.name}步骤19:部署在tomcat中,重启测试 edit 顶 折纠问请先登录 部署在Tomcat中,重启tomcat,然后访问地址,观察效果http://127.0.0.1:8080/ssm/listCategory

部署办法请参考 通过Eclipse启动Tomcat-Run On Server

步骤20:思路图 edit 顶 折纠问请先登录 1. 首先浏览器上访问路径 /listCategory2. tomcat根据web.xml上的配置信息,拦截到了/listCategory,并将其交由DispatcherServlet处理。3. DispatcherServlet 根据springMVC的配置,将这次请求交由CategoryController类进行处理,所以需要进行这个类的实例化4. 在实例化CategoryController的时候,注入CategoryServiceImpl。 (自动装配实现了CategoryService接口的的实例,只有CategoryServiceImpl实现了CategoryService接口,所以就会注入CategoryServiceImpl)5. 在实例化CategoryServiceImpl的时候,又注入CategoryMapper6. 根据ApplicationContext.xml中的配置信息,将CategoryMapper和Category.xml关联起来了。7. 这样拿到了实例化好了的CategoryController,并调用 list 方法8. 在list方法中,访问CategoryService,并获取数据,并把数据放在"cs"上,接着服务端跳转到listCategory.jsp去9. 最后在listCategory.jsp 中显示数据思路图步骤21:删掉,从头开始,这次全部自己做 edit 顶 折纠问请先登录 如果是使用的右上角下载的运行项目执行的,那么这个时候,就该把这个项目删掉,然后从头到尾自己做一遍,把这个知识变成自己的东西。文件内容比较器

把你的代码复制到下面区域。 如果在线比较不好用,请使用客户端比较软件: diffmerge 下载和使用教程

复制代码

代码高亮插件双击即可选中,不过部分同学反应,通过代码高亮插件复制的代码无法在IDEA里正常显示,这里提供TEXTAREA的方式,方便复制,谢谢

分享连接

分享如下连接可增加积分,获取50%佣金推

如果不方便发连接(如贴吧),可以使用如下由连接转换为的二维码. 鼠标在图片上右键,然后另存为即可警告: 请勿使用挂机软件刷积分,刷积分不会导致任何注册量,很容易被识别。 一旦发现刷积分,即封号处理,请勿做吃力不讨好之事。 做练习的正确姿势1. 自行完成练习根据练习目标尽量自己实现代码效果,期间会碰到疑问,难题,和自己不懂的地方,这些都是必要的过程2. 带着疑问查看答案完成过程中,碰到无法解决的问题,带着疑问,查看答案,分析答案的解决思路3. 查看答案讲解视频依然有不明白的地方,点开视频讲解,带着疑问,听视频讲解有问题的部分4. 再做一遍理解后,再从头做一遍,把有疑问的地方都捋清楚5. 总结最后再总结一遍,总结思路,总结解决办法,以后遇到类似的问题,怎么处理 SSM系列教材 (一)-Spring+Sping MVC + Mybatis 三大框架整合详细步骤-总结笔记把这时的想法,思路,研究都记录下来,等全部学完了,再回过头来巩固和理解,学习效果就会很好,知识点掌握得也牢固. 点击查看我的笔记总结代码保存中预计需要秒保存完成保存失败,请联系站长 收藏本知识点

有的同学收藏是为了进行标记,过段时间再来看不明白的地方,在此处可以记录哪里不明白. 单纯收藏的, 直接点击提交即可。

点击查看我的收藏 错误纠正专用

站长比较马虎,难免出现错别字,如果发现哪里文字有误,请提交错误,站长会尽快修改,谢谢

SSM系列教材 (二)- 分页示例HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。

问答区域     删除提问已经提交成功,正在审核, 谢谢.回复提问已经提交成功,正在审核, 谢谢.2021-07-02 ModelAndView mav = new ModelAndView();控制层的这个是干嘛的 张_z

关于 JAVA 框架-SSM-整合步骤 的提问 不懂这个是干嘛的

请先登陆回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢删除提问已经提交成功,正在审核, 谢谢.回复提问已经提交成功,正在审核, 谢谢.2021-04-17 直接用站长的代码,404问题 deityyan

关于 JAVA 框架-SSM-整合步骤 的提问

问题截图代码异常直接把站长的代码复制下来运行,出现404状况加载中

2 个答案 王羲之 跳转到问题位置 答案时间:2021-07-05真是个小天才2667818514 跳转到问题位置 答案时间:2021-04-26路径问题,修改一下访问路径就行了,比如:http://127.0.0.1:8080/listCategory

请先登陆回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢

删除提问已经提交成功,正在审核, 谢谢.回复提问已经提交成功,正在审核, 谢谢.2021-04-03 404错误,从站长那下载的可以运行,自己跟着做一遍,没有任何变化,出现404 想翻身不想单身的咸鱼

关于 JAVA 框架-SSM-整合步骤 的提问

问题截图代码异常404错误,从站长那下载的可以运行,自己跟着做一遍,没有任何变化,出现404加载中package com.how2java.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.how2java.pojo.Category;import com.how2java.service.CategoryService;@[email protected]("")public class CategoryController {@Autowiredprivate CategoryService categoryService;@RequestMapping("listCategory")public ModelAndView list(){List cs = categoryService.list();ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("cs",cs);modelAndView.setViewName("listCategory");return modelAndView;}

请先登陆回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢

删除提问已经提交成功,正在审核, 谢谢.回复提问已经提交成功,正在审核, 谢谢.2021-03-12 求解 lingdu

关于 JAVA 框架-SSM-整合步骤 的提问

问题截图代码异常请问大佬这是什么问题 nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private service.CategoryService controller.CategoryController.categoryService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [service.CategoryService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

1 个答案 bcbcbc 跳转到问题位置 答案时间:2021-05-30CategoryService类没有配置到bean(依赖注入到),需要在这个类上面@Service注解

请先登陆回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢

删除提问已经提交成功,正在审核, 谢谢.回复提问已经提交成功,正在审核, 谢谢.2021-03-05 CategoryMapper的add和update为什么都要用int forestfire

关于 JAVA 框架-SSM-整合步骤 的提问

问题截图代码异常这里的add和update为什么要用int,name的话不是应该要用String吗加载中 public int add(Category category);public void delete(int id);public Category get(int id);public int update(Category category);public List list();public int count();

1 个答案 Tabor 跳转到问题位置 答案时间:2021-04-031. 这里的int和name的类型没有关系, 这个int是返回值类型, 可以用来return执行SQl语句后的影响条数.比如调用add方法,会执行mapper中的insert语句, 这个语句执行后如果成功插入了4条记录, 就return值为"4"的返回值, 而int就是这个返回值的类型, 所以用int; 当然也可以使用void, 表示该方法无返回值类型.2. name与这里的int没有关系; name的类型和Category有关, 就是步骤9中的Category类中定义的name就是String类型的: 第五行代码:private String name;

请先登陆回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢

提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 182 条以前的提问,请 点击查看

提问之前请登陆提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢