Ajax+SSM 实现客户端开发 实现简单的前后端分离
- 2021 年 12 月 21 日
本文字数:4412 字
阅读完需:约 14 分钟

Ajax+SSM 实现客户端开发
引言
本文实现基于 JS Ajax+SpringMVC 实现客户端功能,详细需求如下
需求
写一个 edit.html 文件,可以显示企业的信息。
点击保存将企业信息保存到数据表中。
效果图
数据表结构
CREATE TABLE `t_company` ( `noid` int(11) NOT NULL AUTO_INCREMENT, `company_name` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '公司名称', `zhuce_money` decimal(10,2) DEFAULT NULL COMMENT '注册资金', PRIMARY KEY (`noid`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
注意:数据表中只有一条企业信息,没有则新增、有了就编辑。
* 请基于 js ajax+spring mvc 实现前后端分离,实现企业信息的编辑。
* 要求服务端必须是 SpringMVC 三层架构的,服务端基于 mybatis 将数据保存在数据库中。**
pom 依赖
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency>
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.13</version> </dependency>
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.10</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.10</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.10</version> </dependency>
<!-- mybatis 相关的依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.13</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency>
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.8</version> </dependency>
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency>
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency>
</dependencies>
<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> </properties>
服务端核心代码
CompanyController 类:
@Controller@CrossOrigin@RequestMapping("/company")public class CompanyController {
@Autowired private CompanyService companyService;
@ResponseBody @PostMapping("/saveCompany.do") public ResultBean<Company> saveCompany(@RequestBody Company param) { ResultBean<Company> res = companyService.saveCompany(param); return res; }}
大致解释下意思:
==CrossOrigin==:解决跨域问题,客户端与服务端代码不在一个地址时,客户端访问服务端代码会出现跨域问题,因为 Spring MVC 默认不允许跨域访问,所以我们加上该注解允许跨域访问
==ResponseBody==:Spring MVC 中要想将数据返回字符串,就必须加上该注解,如果不加,默认为转发
==RequestBody==:在参数中加上该注解,表明前端返回的是一个 JSON 字符串的形式,通过该注解映射实体类
ResultBean 统一返回类:
package com.wanshi.spring.entity;
public class ResultBean<C> {
private Integer code;
private String msg;
private C data;
private ResultBean(Integer code, String msg, C data) { this.code = code; this.msg = msg; this.data = data; }
public static ResultBean create(Integer code, String msg, Object data) { ResultBean res = new ResultBean(code, msg, data); return res; }
public Integer getCode() { return code; }
public void setCode(Integer code) { this.code = code; }
public String getMsg() { return msg; }
public void setMsg(String msg) { this.msg = msg; }
public C getData() { return data; }
public void setData(C data) { this.data = data; }}
CompanyService 类:
@Servicepublic class CompanyService {
@Autowired private CompanyMapper companyMapper;
/** * 从数据库中获取数据库中的数据 * @return */ public ResultBean<Company> get() { Company company = companyMapper.get(); return ResultBean.create(0, "success", company); }
/** * 保存公司信息,进行新增或修改 * @param param * @return */ public ResultBean<Integer> saveCompany(Company param) { Company company = companyMapper.get(); if (company != null) { company.setCompany_name(param.getCompany_name()); company.setZhuce_money(param.getZhuce_money()); companyMapper.update(company); } else { companyMapper.insert(param); } Company company1 = companyMapper.get(); return ResultBean.create(0, "success", 0); }}
前端核心代码
ajax.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> button{ width: 80px; height: 40px; background-color: cadetblue; border: none; text-align: center; border-radius: 10px; color: #fff; } </style></head><body> <h2>修改企业信息</h2> <div> <p> <label>企业名称:</label> <input type="text" id="company_name"> </p> <p> <label>注册资金:</label> <input type="text" id="zhuce_money"> 万元 </p> <button id="saveCompany">保存</button> </div></body></html><script src="js/jquery-3.6.0.js"></script><script> //打开页面时就加载此函数 $(function () { getCompany(); $("#saveCompany").click(function () { //获取输入框中的数据 let company_name = $("#company_name").val(); let zhuce_money = $("#zhuce_money").val(); let url = "http://localhost:8087/AjaxServer/company/saveCompany.do"; let data = {"company_name":company_name,"zhuce_money":zhuce_money}; $.ajax({ url:url, //这里极其重要,如果不转化为json格式,则会报400请求出错 data:JSON.stringify(data), type:'post', //传输到后端的参数类型为json contentType : 'application/json;charset=utf-8', dataType:'json', //回调函数,表明如果请求成功则进入该函数内,参数为服务端返回的数据 success: function (res) { console.log(res); $("#company_name").val(res.data.company_name); $("#zhuce_money").val(res.data.zhuce_money); getCompany(); } }) }) })
/** * * 初始化加载回显数据 * */ function getCompany() { let url = "http://localhost:8087/AjaxServer/company/get_company.do"; let data = {}; $.get(url, data, function (res) { $("#company_name").val(res.data.company_name); $("#zhuce_money").val(res.data.zhuce_money); }, 'json'); }</script>
结语
至此,一个简单的基于 Ajax+SSM 的前后端分离项目完美结束,一定要多加练习,熟悉其中的执行流程,心中明确,努力练习,摆正心态,你会拥有一个崭新的未来!
若在本项目中遇到技术难题,可在下方评论区留言或私信我,授人以鱼不如授人以渔
如果你觉得博主写的不错的话,不妨给个一键三连,点击下方小拳头即可一键三连。
感谢你的支持!
版权声明: 本文为 InfoQ 作者【Bug终结者】的原创文章。
原文链接:【http://xie.infoq.cn/article/b06532e2c1775cf3261e6b4bc】。文章转载请联系作者。
Bug终结者
励志成为一个优秀的开发者~ 2021.12.09 加入
星星之火,可以燎原











评论