栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM-crud项目笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

只扫描控制器:

use-default-filters设为false(true为扫描所有)

配置视图解析器:方便页面返回

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路径:

不以/开始的相对路径找资源,以当前资源的路径为基准,经常容易出问题

以/开始的相对路径找资源,以服务器的路径为标准,需要加上项目名

如http://localhost:3306/crud

使用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自动导入到服务器中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749423.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号