SSM-crud项目笔记

  • 基础环境搭建
    • 创建一个maven工程
    • 引入项目依赖的jar包(pom.xml)
      • spring、springMVC、mybatis
      • 数据库连接池、驱动包
      • mybatis逆向工程
      • 其他(jstl、servlet-api、junit)
    • 引入bootstrap前端框架
    • 编写ssm整合的关键配置文件
      • 配置web.xml:
        • 启动spring容器:applicationContext.xml
          • src/main/resources/applicationContext.xml
        • springMVC的前端控制器,拦截所有请求:dispatcherServlet
          • src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml
        • 字符编码过滤器,一定要放在所有过滤器之前
        • 使用Rest风格URI:将页面普通的post请求转为指定的delete或put请求
      • 配置springMVC:包含网站跳转逻辑的控制、配置
        • dispatcherServlet:src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml
        • 只扫描控制器:<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
          • use-default-filters设为false(true为扫描所有)
        • 配置视图解析器:方便页面返回
          • <property name="prefix" value="WEB-INF/views/"></property>
          • <property name="suffix" value=".jsp"></property>
            • prefix : 是指访问页面的前缀,指定页面存放的文件夹
            • suffix : 是指文件的后缀名,常见的后缀名有html,jsp,php,txt,mp3
        • springMVC两个标准配置:
          • 将springMVC不能处理的请求交给tomcat:mvc:default-servlet-handler
          • 能支持springMVC更高级的一些功能:如映射动态请求、JSR303校验、快捷的ajax:mvc:annotation-driven
      • 配置spring:主要配置与业务逻辑相关的内容
        • applicationContext.xml:src/main/resources/applicationContext.xml
        • 核心点:配置数据源、与mybatis的整合、事务控制等
        • 数据源:bean id="pooledDataSource"
          • 连接数据库:jdbcUrl
          • 数据库驱动:driverClass
          • 用户名:user
          • 密码:password
          • 创建配置文件设置value:src/main/resources/dbconfig.properties
          • 引入外部文件:
            • context:property-placeholder location="classpath:dbconfig.properties"
          • 在该文件中取值:如value="${jdbc.jdbcUrl}"
        • 扫描业务逻辑组件:component-scan
        • 配置和mybatis的整合:sqlSessionFactory
          • 指定mybatis全局配置文件:configLocation(mybatis-config.xml)
          • 数据源:dataSource
          • 指定mybatis的mapper文件位置:mapperLocations
            • (mapper/*.xml:扫描mapper下的所有文件)
          • 配置扫描器,将mybatis接口的实现加入ioc容器
            • 扫描所有dao接口的实现,加入ioc容器中:basePackage
          • 事务控制配置:
            • 事务管理器:transactionManager(DataSourceTransactionManager)
              • 控制数据源即能管理事务:dataSource
          • 开启基于注解的事务,使用xml配置形式的事务(主要都使用配置式)
            • aop:
              • 切入点表达式:aop:pointcut->哪些方法要切入事务
              • 配置事务增强:aop:advisor
            • 配置事务增强,事务如何切入:tx:advice
              • 所有的方法都是事务方法:tx:method name="*"
              • 以get开始的所有的方法 :tx:method name="get*" read-only="true"
      • mybatis逆向工程:
        • mybatis-config.xml
        • configuration:将不好配置的settings放在全局配置文件中
          • 驼峰命名规则:mapUnderscoreToCamelCase
          • 类型别名:typeAliases
            • package name="com.atguigu.crud.bean":放入bean包方便引用
          • 分页插件:plugin interceptor="com.github.pagehelper.PageInterceptor"
        • mapper文件:对应mapper接口(接口是dao层直接与数据库进行交互,增删改查)
        • 使用mybatis逆向工程生成对应的bean和mapper:mybatis.generator.xml
          • 引入jar包:org.mybatis.generator
          • 创建配置文件:mybatis-generator.xml
            • 配置数据库连接信息:jdbcConnection
            • 指定javaBean的生成位置:javaModelGenerator
            • 指定sql映射文件生成的位置:sqlMapGenerator
            • 指定dao接口的生成位置,mapper接口:javaClientGenerator
            • 指定每个表的生成策略:table
            • commentGenerator:
              • suppressAllComments属性值:
                • true:自动生成实体类、SQL映射文件时没有注释
                • false:自动生成实体类、SQL映射文件,并附有注释
          • 建立测试文件:MybatisGeneratorTest.java
            • 生成java.bean:example做复杂查询
            • 生成java.dao:复杂的增删改查
            • 生成resources.mapper.xml配置
          • mapper文件:.java中声明方法;.xml中实现方法
    • 测试mapper:src/test/java/test/MapperTest.java
      • 推荐spring的项目使用spring的单元测试,可以自动注入需要的组件
      • 导入springtest模块
      • ContextConfiguration指定spring配置文件的位置
      • RunWith(SpringJUnit4ClassRunner.class)指定运用进行单元测试的模块
      • 直接autowired要使用的组件即可
        • 插入部门
        • 生成员工数据,测试员工插入
        • 批量插入多个员工,使用可以执行批量操作的sqlsession
          • 在applicationContext.xml中配置可以执行批量的sqlsession
  • 查询:
    • 访问index.jsp页面->页面发送查询员工列表请求->EmployeeController接受请求,查出员工数据->来到list页面进行展示
      • 服务器将有效的数据以json的形式返回给客户端:使用ajax
        • index.jsp页面直接发送ajax请求进行员工分页数据的查询
        • 服务器将查出的数据,以json字符串的形式返回给浏览器
        • 浏览器收到js字符串,可以使用js对json进行解析,使用js通过dom增删改来改变页面
        • 返回json,实现客户端的无关性(浏览器、安卓等)
      • 使用一个msg通用的返回类,在bean下创建一个Msg.java(需用导入json包)
      • index使用js发送一个ajax请求,ajax请求要到员工数据后返回给js,js解析json数据,然后在页面进行显示
        • 页面加载完成以后,直接发送ajax请求,要到分页数据
          • 解析并显示员工数据
          • 解析并显示分页信息
          • 解析并显示分页条数据
      • 使用Spring测试模块提供的测试请求功能,测试crud请求的正确性
        • spring4测试时,需要servlet3.0的支持
        • 传入springMvc的ioc容器:@Autowired WebApplicationContext context;
        • 虚拟mvc请求,获取处理结果:MockMvc
        • 模拟请求拿到返回值
        • 请求成功以后,请求域中会有pageInfo,可以取出pageInfo进行验证
        • 获取员工数据
      • 分页查询(不使用)
        • 引入分页插件,在查询之前只需调用,传入页码以及每页的大小
        • 使用pageinfo包装查询后的结果,只需将pageinfo交给页面,封装了详细的分页信息,包括查询出的数据,传入连续显示的页数
      • 搭建bootstrap分页页面(不使用list.jsp)
        • web路径:
          • 不以/开始的相对路径找资源,以当前资源的路径为基准,经常容易出问题
          • 以/开始的相对路径找资源,以服务器的路径为标准,需要加上项目名
            • 使用pageContext.setAttribute("APP_PATH", request.getContextPath());
            • 在取路径时,在开头使用${APP_PATH}+/+路径
        • 以row为单位设置页面内容
  • 新增:
    • 在index.jsp页面点击“新增”
    • 弹出新增对话框
      • 清除表单数据:表单完整重置,包括表单数据、表单样式
      • 在数据库中查询部门列表,显示在对话框中
        • DepartmentService.java查询部门信息给controller
        • DepartmentController.java将数据返回给index.jsp
    • 用户输入数据,完成保存
      • 模态框中填写的表单数据提交给服务器进行保存(controller、service)
      • 对要提交给服务器的数据进行JQuery前端校验
        • 拿到要校验的数据,使用正则表达式
        • 显示校验结果的提示信息
          • 首先清除当前元素的校验状态
        • 发送ajax请求校验用户名是否可用(controller、service)
          • 先判断用户名是否是合法的表达式
          • 再判断数据库用户名是否重复
      • 判断之前的ajax用户名校验是否成功
      • 后端校验JSR303:重要数据,进行唯一约束
        • 支持JSR303校验,需要导入Hibernate-Validator包(pom.xml)
      • 发送ajax请求保存员工(controller、service)
        • 校验失败,应该返回失败,在模态框中显示校验失败的错误信息
        • 校验成功,则返回成功
      • 员工保存
        • 如果成功:关闭模态框,来到最后一页,发送ajax请求显示刚才保存的数据
        • 如果失败,则显示失败信息
      • URI:
        • /emp/{id} GET:查询员工
        • /emp POST:保存员工
        • /emp/{id} PUT:修改员工
        • /emp/{id} DELETE:删除员工
  • 修改:
    • 点击编辑
      • 在按钮创建之前就绑定了click,绑定的方式有两种
        • 在创建按钮时绑定
        • 绑定点击.on() //jQuery新版使用on,旧版使用.live()
          • 查出部门信息,显示部门列表
          • 查出员工信息,显示员工信息
          • 把员工的id传递给模态框的更新按钮
    • 弹出用户修改的模态框:显示用户信息
    • 点击更新,完成用户修改
      • 验证邮箱是否合法
      • 发送ajax请求,保存更新员工信息
        • 发送PUT请求时,请求体中的数据拿不到(request.getParameter),Tomcat检测到时PUT请求不会封装请求体中的数据为map,只有POST形式的请求才封装请求体为map
        • 要能支持直接发送PUT之类的请求,还要封装请求体中的数据,配置HttpPutFormContentFilter,将请求体中的数据解析包装成一个map,reques被重新包装,request.getParameter()被重写,就会从自己封装的map中取数据
  • 删除:
    • 删除单个:
      • URI:/emp/{id} DELETE
      • 弹出删除对话框,发送ajax请求删除
    • 删除多个:
      • attr获取checked时undefined,attr获取自定义属性的值
      • 用prop获取和修改dom原生属性的值
      • 全选/全不选:先判断当前选择元素是否选满,点击全部删除就批量删除,发送ajax请求
  • 总结:
    • 前端用户界面UI使用bootstrap搭建,向界面发送请求,来到tomcat服务器
    • 使用Tomcat作为servlet容器进行处理
      • 当前项目收到请求后,使用SSM处理请求
        • SpringMVC前端控制器判断能不能处理请求:若能,则调用Controller控制器层某一个处理请求的方法;若不能,交给tomcat服务器(静态资源交给服务器直接返回);
        • controller调用service层的处理逻辑:若要进行数据库的交互,则调用Dao层的组件,Dao的组件都是用Mybatis写的,由mybatis生成的mapper直接与数据库进行交互,操纵数据库的增删改查
        • 使用MybatisGenerator生成mapper接口、mapper文件,复杂的查询在基于mapper上定义一些新的方法
        • mapper能实现是因为项目启动时被扫描进ioc容器中,也因为组件之间都自动装配autowired,在spring容器中
        • 大部分使用ajax请求,返回结果为json,使用js解析json数据在页面显示
        • 项目中调用的jar包,都由maven自动导入到服务器中
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值