快速上手ssm项目

quick_ssm

写在前面:

项目地址:https://github.com/yyconstantine/quick_ssm,若是此博文对您有所帮助,还请点亮小星星~


1.项目代码及实现思路来自nomico271
2.本项目适宜人群为刚刚学完SSM框架须要练手或对SSM开发感兴趣的童鞋

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

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


一.搭建SSM框架

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

    PS:建立项目名称确认为maven-archetype-webappgithub

  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.propertiesweb

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

    log4j.properties进行日志管理ajax

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

2、编写DAO层

1.mybatis配置文件spring

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

    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后解决

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

  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前json

  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" %>

4、基本的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:后恢复

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

排坑:使用新增方法接口500
问题缘由:前端页面接收的字段名称与接口定义的字段名称不匹配
解决方案:因为我本身前端页面大部分搬运的,因此这里调试了好久……已经统一了全部须要改动地方的字段名称为数据库字段名称

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

6、留下的坑

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

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

  9. 事务控制
相关文章
相关标签/搜索