[SSM]前后台协议联调①

网友投稿 275 2022-09-05

[SSM]前后台协议联调①

文章目录

​​前后台协议联调​​

​​环境准备​​​​列表功能​​​​添加功能​​​​添加功能状态处理​​

前后台协议联调

环境准备

项目结构与前文相同:

我们添加新的静态资源:

因为添加了静态资源,SpringMVC会拦截,所有需要在SpringConfig的配置类中将静态资源进行放行:

我们新建SpringMvcSupport

@Configurationpublic class SpringMvcSupport extends WebMvcConfigurationSupport { @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/pages/**").addResourceLocations("/pages/"); registry.addResourceHandler("/css/**").addResourceLocations("/css/"); registry.addResourceHandler("/js/**").addResourceLocations("/js/"); registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/"); }}

配置完成后,我们要在SpringMvcConfig中扫描SpringMvcSupport:

@Configuration@ComponentScan({"com.nefu.controller","com.nefu.config"})@EnableWebMvcpublic class SpringMvcConfig {}

接下来我们就需要将所有的列表查询、新增、修改、删除等功能一个个来实现下。

列表功能

需求:页面加载完后发送异步请求到后台获取列表数据进行展示。

找到页面的钩子函数,​​created()​​​​created()​​​方法中调用了​​this.getAll()​​方法在getAll()方法中使用axios发送异步请求从后台获取数据访问的路径为​​ "data": [ { "id": 1, "type": "计算机理论", "name": "Spring实战 第五版", "description": "Spring入门经典教程,深入理解Spring原理技术内幕" }, { "id": 2, "type": "计算机理论", "name": "Spring 5核心原理与30个类手写实践", "description": "十年沉淀之作,手写Spring精华思想" },... ], "code": 20041, "msg": ""}

发送方式:

getAll() { //发送ajax请求 axios.get("/books").then((res)=>{ this.dataList = res.data.data; });}

添加功能

需求:完成图片的新增功能模块

找到页面上的​​新建​​按钮,按钮上绑定了​​@click="handleCreate()"​​方法在method中找到​​handleCreate​​方法,方法中打开新增面板新增面板中找到​​确定​​按钮,按钮上绑定了​​@click="handleAdd()"​​方法在method中找到​​handleAdd​​方法在方法中发送请求和数据,响应成功后将新增面板关闭并重新查询数据

​​handleCreate​​打开新增面板

handleCreate() { this.dialogFormVisible = true;},

​​handleAdd​​方法发送异步请求并携带数据

handleAdd () { //发送ajax请求 //this.formData是表单中的数据,最后是一个json数据 axios.post("/books",this.formData).then((res)=>{ this.dialogFormVisible = false; this.getAll(); });}

添加功能状态处理

基础的新增功能已经完成,但是还有一些问题需要解决下:

需求:新增成功是关闭面板,重新查询数据,那么新增失败以后该如何处理?1.在handlerAdd方法中根据后台返回的数据来进行不同的处理2.如果后台返回的是成功,则提示成功信息,并关闭面板3.如果后台返回的是失败,则提示错误信息

(1)修改前端页面

handleAdd () { //发送ajax请求 axios.post("/books",this.formData).then((res)=>{ //如果操作成功,关闭弹层,显示数据 if(res.data.code == 20011){ this.dialogFormVisible = false; this.$message.success("添加成功"); }else if(res.data.code == 20010){ this.$message.error("添加失败"); }else{ this.$message.error(res.data.msg); } }).finally(()=>{ this.getAll(); });}

(2)后台返回操作结果,将Dao层的增删改方法返回值从​​void​​​改成​​int​​

public interface BookDao {// @Insert("insert into tbl_book values(null,#{type},#{name},#{description})") @Insert("insert into tbl_book (type,name,description) values(#{type},#{name},#{description})") public int save(Book book); @Update("update tbl_book set type = #{type}, name = #{name}, description = #{description} where id = #{id}") public int update(Book book); @Delete("delete from tbl_book where id = #{id}") public int delete(Integer id); @Select("select * from tbl_book where id = #{id}") public Book getById(Integer id); @Select("select * from tbl_book") public List getAll();}

(3)在BookServiceImpl中,增删改方法根据DAO的返回值来决定返回true/false

@Servicepublic class BookServiceImpl implements BookService { @Autowired private BookDao bookDao; public boolean save(Book book) { return bookDao.save(book) > 0; } public boolean update(Book book) { return bookDao.update(book) > 0; } public boolean delete(Integer id) { return bookDao.delete(id) > 0; } public Book getById(Integer id) { if(id == 1){ throw new BusinessException(Code.BUSINESS_ERR,"请不要使用你的技术挑战我的耐性!"); }// //将可能出现的异常进行包装,转换成自定义异常// try{// int i = 1/0;// }catch (Exception e){// throw new SystemException(Code.SYSTEM_TIMEOUT_ERR,"服务器访问超时,请重试!",e);// } return bookDao.getById(id); } public List getAll() { return bookDao.getAll(); }}

(4)测试错误情况,将图书类别长度设置超出范围即可

处理完新增后,会发现新增还存在一个问题,

resetForm(){ this.formData = {};}handleCreate() { this.dialogFormVisible = true; this.resetForm();}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:电热水器营销:家用电器营销新趋势!
下一篇:[SSM]前后台协议联调②
相关文章

 发表评论

暂时没有评论,来抢沙发吧~