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

简易版表白墙

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

简易版表白墙

简易版表白墙
  • 1.内存版表白墙
  • 2.数据库版表白墙

1.内存版表白墙

1.创建servlet项目
2.创建必要的目录src
3.调整pom.xml
引入servlet和jackson依赖:

4.message-wall.html:





    
    
    
    表白墙
    
    



表白墙

输入后点击提交, 会将信息显示在表格中

谁:
对谁:
说什么:
猫猫对狗狗说: 喵喵喵
小赵对小张说: 你好

5.AddMeaageServlet.java:

import lombok.Getter;
import lombok.Setter;
import utils.StringUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/message/add")
public class AddMessageServlet  extends HttpServlet {
    public static List msgList = new ArrayList<>();

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int result = -1;
        //1.得到前端参数并效验
        String from = req.getParameter("from");
        String to = req.getParameter("to");
        String msg = req.getParameter("msg");
        if (StringUtils.hasLength(from) && StringUtils.hasLength(to) && StringUtils.hasLength(msg)) {
            //2.将表白对象加入到集合(内存)
            AddMessageServlet.msgList.add(new Message(from, to, msg));
            result = 1;
            //
        }
            resp.setContentType("text/html;charset=utf-8");
            resp.getWriter().println(result);

        }
    }

@Setter
@Getter
class Message{
    private String from;
    private String to;
    private String message;

    public Message(String from, String to, String message) {
        this.from = from;
        this.to = to;
        this.message = message;
    }
}

6.MessageListServlet.java:

import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/message/list")
public class MessageListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List messageList=AddMessageServlet.msgList;
        resp.setContentType("application/json;charset=utf-8");
        ObjectMapper objectMapper=new ObjectMapper();
        resp.getWriter().println(objectMapper.writeValueAsString(messageList));

    }
}

7.通过浏览器访问:http://localhost:8080/first-servlet/message-wall.html可以看到:

添加表白信息:
(1)成功添加表白信息:

(2)用户输入不完整时提示输入错误:

表白信息列表:

上面的程序有一个问题数据是存储在内存中的,当服务器重启之后数据就会丢失。

2.数据库版表白墙

1.创建数据库和数据表:

此时数据库中还没有数据:

2.连接数据库:
pom.xml中添加MYSQL JDBC依赖:



3.message-wallv2.html:





    
    
    
    表白墙——连接数据库版本
    
    



表白墙

输入后点击提交, 会将信息显示在表格中

谁:
对谁:
说什么:

4.DBUtils.java:

package utils;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtils {
    private DBUtils() {
    }
    private static volatile MysqlDataSource mysqlDataSource;
    private static volatile Connection connection;

    private static MysqlDataSource getMysqlDataSource() {
        if (mysqlDataSource == null) {
            synchronized (DBUtils.class) {
                if (mysqlDataSource == null) {
                    mysqlDataSource = new MysqlDataSource();
                    mysqlDataSource.setURL("jdbc:mysql://127.0.0.1:3306/messagewall?character=utf8&useSSL=true");
                    mysqlDataSource.setUser("root");
                    mysqlDataSource.setPassword("123456");
                }
            }
        }
        return mysqlDataSource;
    }

    // 1.get connect
    public static Connection getConnection() {
        if (connection == null) { // 首次访问
            synchronized (DBUtils.class) {
                if (connection == null) {
                    try {
                        MysqlDataSource dataSource = getMysqlDataSource();
                        connection = (Connection) dataSource.getConnection();
                    } catch (SQLException throwables) {
                        throwables.printStackTrace();
                    }
                }
            }
        }
        return connection;
    }
    // 2.提供关闭资源的方法
    public static void close(ResultSet resultSet, PreparedStatement statement, Connection connection) throws SQLException {
        if (resultSet != null) {
            resultSet.close();
        }
        if (statement != null) {
            statement.close();
        }
        if (connection != null) {
            connection.close();
        }
    }
}

5.AddMessageServletV2.java:

import com.mysql.jdbc.Connection;
import lombok.SneakyThrows;
import utils.DBUtils;
import utils.StringUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.PreparedStatement;

@WebServlet("/message/add2")
public class AddMessageServletV2 extends HttpServlet {
    @SneakyThrows
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int result = -1;
        // 1.得到前端参数并效验
        String from = req.getParameter("from");
        String to = req.getParameter("to");
        String msg = req.getParameter("msg");
        if (StringUtils.hasLength(from) && StringUtils.hasLength(to)
                && StringUtils.hasLength(msg)) {
            // 2.将表白对象加入到集合
            // 2.1 得到 Connection
            Connection connection = DBUtils.getConnection();
            // 2.2 拼接 sql,创建执行器
            String sql = "insert into messages(`from`,`to`,`message`) values(?,?,?)";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1, from);
            statement.setString(2, to);
            statement.setString(3, msg);
            // 2.3 执行执行器,并返回结果
            result = statement.executeUpdate();
            // 2.4 关闭资源
            DBUtils.close(null, statement, connection);
        }
        resp.setContentType("text/html; charset=utf-8");
        resp.getWriter().println(result);
    }
}

6.MessageListServletV2.java:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.mysql.jdbc.Connection;
import lombok.SneakyThrows;
import utils.DBUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/message/list2")
public class MessageListServletV2 extends HttpServlet {
    @SneakyThrows
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //查询数据库中的表白列表
        List list=new ArrayList<>();
        //1.得到connection
        Connection connection= DBUtils.getConnection();
        //2.拼接sql,创建执行器
        String sql="select * from messages";
        PreparedStatement statement=connection.prepareStatement(sql);
        //3.执行sql,返回resultSet并循环将数据添加到List
        ResultSet resultSet=statement.executeQuery();
        while(resultSet.next ()){
            String from=resultSet.getString("from");
            String to=resultSet.getString("to");
            String message=resultSet.getString("message");
            list.add(new Message(from,to,message));
        }
        //4.关闭资源
        DBUtils.close(resultSet,statement,connection);
        resp.setContentType("application/json;charset=utf-8");
        ObjectMapper objectMapper=new ObjectMapper();
        resp.getWriter().println(objectMapper.writeValueAsString(list));

    }
}

7.运行结果:
添加表白信息:

添加信息失败:

表白信息列表:

8.数据库里查询信息:

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

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

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