表白墙服务器版【交互接口、服务器端代码、前端代码、数据存入文件/数据库】
文章目录
- 一、准备工作
- 二、约定前后端交互接口
- 三、实现服务器端代码
- 四、调整前端页面代码
- 五、数据存入文件
- 六、数据存入数据库
1) 创建 maven 项目 2) 创建必要的目录 webapp, WEB-INF, web.xml;web.xml如下:Archetype Created Web Application
3) 引入依赖(Servlet、Jackson)
4) 把表白墙前端页面代码拷贝到 webapp 目录中二、约定前后端交互接口
所谓 "前后端交互接口" 是进行 Web 开发中的关键环节。
为了完成前后端交互,要约定两个交互接口:
1.从服务器上获取到所有消息:
请求: GET/message
响应: JSON 格式
{
{from:"xxx" ,to:"xxx", message:"xxxxxx"}
..............
.............
}
2.往服务器上提交数据
请求: body 也为 JSON 格式
POST/message
{from:"xxx" ,to:"xxx", message:"xxxxxx"}
响应: JSON 格式
{ok:1}
三、实现服务器端代码
//这个类表示一条消息的数据格式 class Message{ public String from; public String to; public String message; } @WebServlet("/message") public class MessageServlet extends HttpServlet { // 用于转换 JSON 字符串 private ObjectMapper objectMapper = new ObjectMapper(); // 用于保存所有的留言 private List messageList = new ArrayList(); //doGet方法用来从服务器上获取消息 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("application/json;charset=utf-8"); //writeValue就是把messageList对象转换成json格式的字符串,并通过写入响应(resp.getWriter())返回 objectMapper.writeValue(resp.getWriter(),messageList); } //doPost方法用来把客户端的数据提交到服务器 @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //readValue第一个参数可以支持一个字符串,也可以放inputStream对象;第二个参数是用来接收读取到的结果 //返回值放到Message对象中 //通过这个代码就完成了读取body,并且解析成json的过程 Message message = objectMapper.readValue(req.getInputStream(),Message.class); messageList.add(message); resp.setContentType("application/json;charset=utf-8"); resp.getWriter().write("{\"ok\":1}"); } }
四、调整前端页面代码
//1.在页面加载的时候访问服务器,从服务器这边获取到消息列表,并展示出来 function load(){ $.ajax({ type:'GET', url:'message', success: function(data,status){ let container = document.querySelector('.container'); for(let message of data){ let row = document.createElement('div'); row.className = 'row'; row.innerHTML = message.from + '对' + message.to + '说: ' + message.message; container.appendChild(row); } } }); } load(); //2.点击提交按钮的时候,把当前的数据构造成一个http请求,发送给服务器 let submitButon = document.querySelector('#submit'); submitButon.onclick = function(){ //1.先获取到编辑框中的内容 let edits = document.querySelectorAll('.edit'); console.log(edits); let from = edits[0].value; let to = edits[1].value; let message = edits[2].value; console.log(from+'对'+to+'说,'+message); if(from == '' || to == '' || message == ''){ return; } //2.根据内容构造html元素(.row里面包含用户输入的话 let row = document.createElement('div'); row.className = 'row'; row.innerHTML = from+'对'+to+'说,'+message; //3.把这个元素添加到DOM树上 let container = document.querySelector('.container'); container.appendChild(row); //4.清空原来的输入框 for(let i=0; i
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理!
部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!