快速上手ssm项目

quick_ssm

写在前面:

1.项目代码及实现思路来自nomico271

2.本项目适宜人群为刚刚学完SSM框架需要练手或对SSM开发感兴趣的童鞋

3.要求明白如何进行dao、service、controller的开发

一步步带你学会如何快速搭建ssm框架及项目的避坑


一.搭建SSM框架

  1. 打开IDEA,使用Maven创建一个webapp项目

    PS:创建项目名称确认为maven-archetype-webapp

  2. 在pom.xml引入所需依赖
  • 在properties内使用EL表达式${spring.version}进行版本的统一管理
  • 使用了tomcat的插件
  1. 创建数据库表
tbl_emp可参照Employee.java,tbl_dept可参照Department.java
  1. 配置xml及相关配置
  • applicationContext.xml
  • SpringMVC.xml
  • SqlMapConfig.xml
  • web.xml
  • jbbc.properties
  • log4j.properties

    使用jbdc.properties进行数据库连接属性的统一管理

    log4j.properties进行日志管理

  1. 创建表对应实体类
  • Employee
  • Department
  1. 测试控制器方法
  • TestController
  • success.jsp

二、编写DAO层

1.mybatis配置文件

  • SqlMapConfig.xml
  • 由于mapper.java和mapper.xml不在一个包路径下,需在SqlMapConfig.xml文件中配置xml文件的资源路径
    2.mapper代理开发
  • 此处使用xml写sql,注意xml文件需与mapper.java命名相同

    mapper.xml文件的namespace以接口的位置为准(精确到接口的类名)

    使用resultMap时,多表间的关系需要通过bean包下类的getter方法进行映射

  1. 配置applicationContext.xml文件
  • 通过MapperScannerConfigure自动扫描加载mapper
  1. 测试一个查询接口方法
  • pass!
排坑:报错Parameter 'offset' not found. Available parameters are [arg1, arg0, param1,param2]
问题原因:找不到offset,limit
解决方案:将mapper.xml中占位符属性改为arg0,arg1后解决

三、搭建前端页面(搬运为主)

  1. 主页面的静态资源搭建
  • head.jsp --> 导航栏
  • foot.jsp --> 底部栏
  • leftsidebar.jsp --> 左侧导航
排坑:主页轮播图不加载,查看为找不到资源(404)
问题原因:未加载是由于dispatcherServlet拦截了所有的请求,包括静态资源
解决方案:
1. 在SpringMVC.xml中配置<mvc:default-servlet-handler/>
2. 在web.xml中配置
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/img/*</url-pattern>
</servlet-mapping>

PS:在web.xml中的配置需在dispatcherServlet前

  1. 公共页面的jsp实现及分层
  • 新建main.jsp,head.jsp,foot.jsp,leftsidebar.jsp使用
<%@include file="/WEB-INF/jsp/common/head.jsp"%>
  1. 员工操作/部门操作的静态页面
  • 基本框架相同,需注意的是,将main.jsp的轮播图改为表格展示

    主要是配置好JSTL表达式,注意jsp内的属性与接口属性的对应关系,如JSTL表达式不生效,在jsp页面添加

<%@page isELIgnored="false" %>

四、基本的CRUD操作实现

实现过程:数据库查询 --> 放在SpringMVC的ModelAndView,前端通过JSTL解析获取到的结果集

  1. 编写service类
  • service类实现mapper的方法,需引入mapper的bean,这里使用@Autowired
  1. 编写json类
  • 提供错误状态、提示信息、封装数据
  1. 编写controller类
  • 在controller类中调用service实现类的方法,引入service实现类的bean,使用@Autowired
排坑:在controller内使用service实现类的bean编译出错
问题原因:spring找不到所需的bean对象
解决方案:需要在web.xml中配置启动Spring的容器

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
  1. 在jsp内提取服务端返回的数据
  • 基本完成!
排坑:启动服务器时报错nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/mybatis/SqlMapConfig.xml]
问题原因:emmm
解决方案:在applicationContext.xml内将/mybatis/SqlMapConfig.xml的类路径前加上classpath:后恢复

五、基本代码完成后的前端测试

排坑:使用新增方法接口500
问题原因:前端页面接收的字段名称与接口定义的字段名称不匹配
解决方案:由于我自己前端页面大部分搬运的,所以这里调试了很久……已经统一了所有需要改动地方的字段名称为数据库字段名称

排坑:使用新增方法页面405,提示不支持GET方法
问题原因:在ajax内的TYPE设置与controller内不一致
解决方案:本项目使用基于rest风格的URI,需对GET、POST、PUT、DELETE在前后端进行统一

六、留下的坑

  1. 顶部导航栏的内容待完善
    <<<<<<< HEAD
  2. 登录页待制作

  3. 登录页待制作
  4. 在进入员工信息页或部门信息页后,通过左侧导航栏进行交叉跳转,url错误导致404
  5. 部门信息添加后页面不自动刷新的问题
  6. 右上角的账户管理待完善
  7. 待使用mybatis的逆向工程插件自动生成实体类
    <<<<<<< HEAD
  8. 写了这么多真的有人看吗。。。

  9. 事务控制

猜你喜欢

转载自www.cnblogs.com/zbb2161228/p/10506739.html