我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java Servlet怎么实现表白墙

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java Servlet怎么实现表白墙

本篇内容主要讲解“Java Servlet怎么实现表白墙”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java Servlet怎么实现表白墙”吧!

一、表白墙简介

在表白墙页面中包含三个文本框,分别表示表白者,表白对象,表白内容,在文本框中输入内容之后,内容能够保存,并且在下次启动页面的时候也能显示出之前所保存的内容。

二、代码实现 

1、约定前后端交互的接口

要实现表白墙,首先就需要约定前后端的交互接口,在实际开发过程中,前端人员只负责前端开发,后端人员负责后端开发,那么就需要约定前端发送什么样的请求,后端处理请求之后再以什么格式将数据返回给前端。

那么对于 POST请求:

POST /message{    from:"XX",    to:"XX",    message:"xxx"}

POST响应:

HTTP/1.1 200 OK{    ok:true}

当用户点击提交按钮之后,就会向HTTP服务器发送一个请求,让服务器把这个信息存储起来。

GET 请求

GET /message

GET响应

HTTP/1.1 200 OKContent-Type:application/json{    {        from:"XX",        to:"XX",        message:"xxx"    },    {        from:"XX",        to:"XX",        message:"xxx"    },    ……}

 请求从服务器上获取到之前保存的所有的留言信息,响应是Json格式的数组。

2、后端代码实现

正式写代码之前的准备工作:

需要创建一个maven项目,在这个项目中先引入Servlet依赖,Mysql依赖,以及Jackson依赖并且创建出正确的目录结构。

    <dependencies>    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->    <dependency>        <groupId>javax.servlet</groupId>        <artifactId>javax.servlet-api</artifactId>        <version>3.1.0</version>        <scope>provided</scope>    </dependency>    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.47</version>    </dependency>        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->    <dependency>            <groupId>com.fasterxml.jackson.core</groupId>            <artifactId>jackson-databind</artifactId>            <version>2.13.5</version>    </dependency>    </dependencies>

Java Servlet怎么实现表白墙

web.xml中的内容如下:

<!DOCTYPE web-app PUBLIC        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"        "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app>    <display-name>Archetype Created Web Application</display-name></web-app>

首先创建出一个message类定义from,to,message几个变量。

class Message{    public String from;    public String to;    public String message;}

创建DBUtil连接数据库,并且能够关闭各种资源。 

public class DBUtil {   private static final String url = "jdbc:mysql://127.0.0.1:3306/message?characterEncoding=utf8&useSSL=false";   private static final String user = "root";   private static final String password = "1234";   public volatile static DataSource dataSource;   private static DataSource getDataSource(){       if(dataSource == null){           synchronized (DBUtil.class){               if(dataSource == null){                   dataSource = new MysqlDataSource();                   ((MysqlDataSource)dataSource).setUrl(url);                   ((MysqlDataSource)dataSource).setUser(user);                   ((MysqlDataSource)dataSource).setPassword(password);               }           }       }       return dataSource;   }   public static Connection getConnection() throws SQLException {      return getDataSource().getConnection();   }   public static void closeResource(Connection connection, PreparedStatement statement, ResultSet resultSet){       if(resultSet != null){           try {               resultSet.close();           } catch (SQLException e) {               e.printStackTrace();           }       }       if(statement != null){           try {               statement.close();           } catch (SQLException e) {               e.printStackTrace();           }       }       if(connection != null){           try {               connection.close();           } catch (SQLException e) {               e.printStackTrace();           }       }   }}

在Mysql中创建Message表:

Java Servlet怎么实现表白墙

创建MessageServlet类,继承HttpServlet类,重写doGet方法和doPost方法。 

在doPost方法中,先设置了响应的内容类型为json格式和字符集为utf-8,然后将请求信息转换成Message对象,再将Message对象的内容存入数据库。然后再向body中写入约定的POST响应的内容。

private ObjectMapper objectMapper = new ObjectMapper();    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        resp.setContentType("application/json;charset=utf8");        Message message = objectMapper.readValue(req.getInputStream(),Message.class);        //将处理的请求信息存入数据库        save(message);        resp.getWriter().write("{\"ok\":true");    }    private void save(Message message){        Connection connection = null;        PreparedStatement statement = null;        try {            connection = DBUtil.getConnection();            String sql = "insert into message value(?,?,?)";            statement = connection.prepareStatement(sql);            statement.setString(1,message.from);            statement.setString(2,message.to);            statement.setString(3,message.message);            statement.executeUpdate();        } catch (SQLException e) {            e.printStackTrace();        }finally {            DBUtil.closeResource(connection,statement,null);        }    }

在doGet方法中也要先设置响应的内容格式是json,设置字符集为utf-8,然后从数据库中取出之前存储的信息存到链表中,将Message对象转换成字符串写入作为get方法响应的body中。

@Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        resp.setContentType("application/json;charset=utf8");        List<Message> messages = load();        String jsonString = objectMapper.writeValueAsString(messages);        System.out.println("jsonString:" + jsonString);        resp.getWriter().write(jsonString);    }    private List<Message> load(){        Connection connection = null;        PreparedStatement statement = null;        ResultSet resultSet = null;        List<Message> list  = new LinkedList<>();        try {            connection = DBUtil.getConnection();            String sql = "select * from message";            statement = connection.prepareStatement(sql);            resultSet = statement.executeQuery();            while(resultSet.next()){                Message message = new Message();                message.from = resultSet.getString("from");                message.to = resultSet.getString("to");                message.message = resultSet.getString("massage");                list.add(message);            }        } catch (SQLException e) {            e.printStackTrace();        }finally {            DBUtil.closeResource(connection,statement,resultSet);        }        return list;    }

3、前端代码实现 

需要基于ajax能构造请求并解析响应。

把当前获取到的输入框的内容,构造成一个HTTP POST请求,然后通过ajax发给服务器。

            let body = {                "from": from,                "to": to,                "message": message            };            $.ajax({                type: "post",                url: "message",                contentType: "application/json;charset=utf8",                data: JSON.stringify(body),                success: function() {                    alert("提交成功!");                },                error: function () {                    alert("提交失败");                }            });

在每次刷新页面时,要从服务器上获取到消息,将其进行展示。 

        function getMessages() {            $.ajax({                type: 'get',                url:'message',                contentType: 'json',                success: function(body) {                    let container=document.querySelector('.container');                    console.log(body);                    for(let message of body) {                        let row=document.createElement('div');                        row.innerHTML=message.from+'对'+message.to+'说:'+message.message;                        row.className='row';                        //3.把这个新的元素添加到DOM树上                        container.appendChild(row);                     }                }            });

前端完整代码:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>表白墙</title></head><body><div class="container">    <h2>表白墙</h2>    <p>输入后点击提交,会将信息显示在表格中</p >    <div class="row">        <span>谁:</span>        <input type="text" class="edit">    </div>    <div class="row" >        <span>对谁:</span>        <input type="text" class="edit">    </div>    <div class="row">        <span>说什么:</span>        <input type="text" class="edit">    </div>    <div class="row">        <input type="button" value="提交" id="submit">    </div>    <script class="lazy" data-src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>    <script>        //点击按钮提交的时候,ajax要构造数据发送给服务器        //页面加载的时候,从服务器获取消息列表,并且在页面上直接显示。        function getMessages() {            $.ajax({                type: 'get',                url:'message',                contentType: 'json',                success: function(body) {                    let container=document.querySelector('.container');                    console.log(body);                    for(let message of body) {                        let row=document.createElement('div');                        row.innerHTML=message.from+'对'+message.to+'说:'+message.message;                        row.className='row';                        //3.把这个新的元素添加到DOM树上                        container.appendChild(row);                     }                }            });        }        getMessages();        let submitButton=document.querySelector('#submit');        submitButton.onclick=function(){            //1.先获取到编辑框的内容            let edits=document.querySelectorAll('.edit');            //依靠.value来获得其输入框的值            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里面包含用户输入的话)            //createElement:创建一个元素            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<edits.length;i++){                edits[i].value='';            }           // 5.把当前获取到的输入框的内容,构造成一个HTTP POST请求,然后通过ajax发给服务器            let body = {                "from": from,                "to": to,                "message": message            };            $.ajax({                type: "post",                url: "message",                contentType: "application/json;charset=utf8",                data: JSON.stringify(body),                success: function() {                    alert("提交成功!");                },                error: function () {                    alert("提交失败");                }            });        }    </script>    <style>                *{            margin:0;            padding: 0;            box-sizing: border-box;        }                .container{            width: 400px;            margin:0 auto;        }                h2{            text-align:center;            padding:20px ;        }        p{            text-align:center;            color:#666;            padding: 10px 0;            font-size:14px;        }                .row{            height:50px ;            display: flex;            justify-content: center;            align-items:center;        }        span{            width:90px;            font-size: 20px;        }        input{            width:310px;            height: 40px;            font-size: 18px;        }                 #submit{            width: 400px;            color: white;            background-color:orange;            border:none;            border-radius:5px;            font-size: 18px;        }                #submit:active{            background-color: black;        }    </style></div></body></html>

 三、效果演示

Java Servlet怎么实现表白墙

点击提交按钮之后:

Java Servlet怎么实现表白墙

到此,相信大家对“Java Servlet怎么实现表白墙”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java Servlet怎么实现表白墙

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java Servlet怎么实现表白墙

本篇内容主要讲解“Java Servlet怎么实现表白墙”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java Servlet怎么实现表白墙”吧!一、表白墙简介在表白墙页面中包含三个文本框,分别
2023-07-05

Java Servlet实现表白墙的代码实例

最近用Servlet做了个小项目,分享给大家,下面这篇文章主要给大家介绍了关于Java Servlet实现表白墙的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-02-21

JavaWeb表白墙和在线相册怎么实现

这篇文章主要介绍了JavaWeb表白墙和在线相册怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaWeb表白墙和在线相册怎么实现文章都会有所收获,下面我们一起来看看吧。一. 案例: 表白墙 (使用模
2023-07-05

Python怎么实现表白程序

这篇文章主要介绍“Python怎么实现表白程序”,在日常操作中,相信很多人在Python怎么实现表白程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么实现表白程序”的疑惑有所帮助!接下来,请跟
2023-06-02

怎么用Java+swing实现抖音上的表白程序

本篇内容介绍了“怎么用Java+swing实现抖音上的表白程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.准备工作a.需要下载一个带着
2023-07-02

Java如何实现浪漫流星表白

本篇内容主要讲解“Java如何实现浪漫流星表白”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java如何实现浪漫流星表白”吧!介绍本文实现的功能有:1、播放音乐2、自定义流星数量、飞行速度、光晕
2023-06-30

使用Servlet怎么实现一个表单提交功能

使用Servlet怎么实现一个表单提交功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。用servlet实现一个注册的小功能 ,后台获取数据。注册页面:  注册页面代码 :
2023-05-31

怎么用JavaScript实现情人节表白特效

本篇内容主要讲解“怎么用JavaScript实现情人节表白特效”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaScript实现情人节表白特效”吧!七夕情人节送花动画告白特效效果展示代
2023-06-28

Matlab怎么实现动态表白图的绘制

这篇文章主要介绍了Matlab怎么实现动态表白图的绘制的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Matlab怎么实现动态表白图的绘制文章都会有所收获,下面我们一起来看看吧。提前祝女朋友节日快乐1 展现这里没
2023-06-30

Java列表怎么实现

这篇文章主要介绍“Java列表怎么实现”,在日常操作中,相信很多人在Java列表怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java列表怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!El
2023-06-03

Python中怎么用Tornado框架制作简易表白墙网站

这篇文章主要介绍“Python中怎么用Tornado框架制作简易表白墙网站”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中怎么用Tornado框架制作简易表白墙网站”文章能帮助大家解决问
2023-06-29

Servlet怎么实现登录功能

小编给大家分享一下Servlet怎么实现登录功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!介绍:Servlet 是 JavaWeb 三大组件之一。三大组件分别
2023-06-14

怎么用HTML+CSS+JavaScript实现在线表白神器

这篇文章主要介绍了怎么用HTML+CSS+JavaScript实现在线表白神器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用HTML+CSS+JavaScript实现在线表白神器文章都会有所收获,下面我们
2023-06-27

java日历表怎么实现

Java中的日历类是Calendar,可以通过它来实现日历表。下面是一个简单的Java日历表的实现:import java.util.Calendar;public class CalendarExample {public static
2023-05-13

Java散列表怎么实现

本篇内容主要讲解“Java散列表怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java散列表怎么实现”吧!介绍数组的特点是寻址容易,插入和删除困难;而链表的特点是寻址困难,插入和删除容易
2023-06-28

怎么用java实现word表格

要使用Java实现Word表格,可以使用Apache POI库。以下是一个简单的示例:1. 首先,确保你已经添加了Apache POI库的依赖。2. 创建一个新的Word文档,并添加一个表格:```javaimport org.apache
2023-08-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录