服务器版本的表白墙

目录

1.步骤

2.提供两个接口:

3.流程

4.代码

1.前端代码

2.sql创建表

3.后端代码

MessageServlet.java

DBUtil.java


1.步骤

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

2.开发服务器代码

        a.编写servlet处理前端发来的请求

        b.编写数据库代码,存储获取关键的数据

3.开发客户端代码

        a.基于ajax构造请求,解析响应

        b.点击按钮后,触发给服务器发送请求的行为

2.提供两个接口:

1.告诉服务器当前留言的是什么样的数据(当用户提交按钮时,会给服务器器发送一个Http请求,让服务器能把消息存下来)

2.从服务器获取到当前有哪些留言数据(当页面加载,就从服务器获取曾经存储的信息内容)

3.流程

服务器版本的表白墙_第1张图片

 

1.登录页面

服务器版本的表白墙_第2张图片

2.GET请求处理

服务器版本的表白墙_第3张图片 

3.Tomcat服务器提交post请求,输入信息

服务器版本的表白墙_第4张图片 

4.接收post请求,返回响应

服务器版本的表白墙_第5张图片 

服务器版本的表白墙_第6张图片 

5.无论怎么刷新,内容都在

服务器版本的表白墙_第7张图片 

 

4.代码

1.前端代码

在代码中加入ajax

1.点击按钮提交,要构造数据发送服务器       

2.页面加载时,从服务器获取消息列表,在页面显示




    
    
    
    表白墙


    
    

表白墙

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

谁:
对谁:
说:

2.sql创建表

create table message(`from` varchar(1024),`to` varchar(1024),message varchar(4096));

3.后端代码

MessageServlet.java

1.创建Message类,成员变量(from,to,message)

2.doPost()处理提交消息请求

        1.输入字符流转成java对象

        2.通过save方法存入数据库

        3.通过contentType告知页面,返回的数据是json格式

        4.输出

3.doGet()获取消息列表,把内容返回给客户端

        1.从load方法中得到从数据库中得到的信息

         2.把java对象转成json格式

         3.返回数据类型,输出

4.保存消息到数据库

        1.和数据库建立连接

        2.构造SQL语句

        3.执行SQL

        4.关闭

5.从数据库中获取信息

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


@WebServlet("/message")
public class MessageServlet extends HttpServlet {
    private ObjectMapper objectMapper=new ObjectMapper();

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Message message=objectMapper.readValue(req.getInputStream(),Message.class);
        save(message);
        resp.setContentType("application/json;charset=utf8");
        resp.getWriter().write("{\"ok\":true}");
    }



    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List messages=load();
        String jsonString=objectMapper.writeValueAsString(messages);
        System.out.println("jsonString"+jsonString);
        resp.setContentType("application/json; charset=utf8");
        resp.getWriter().write(jsonString);
    }
    private void save(Message message) {
        Connection connection=null;
        PreparedStatement statement=null;
        try {
            connection=DBUtil.getConnection();
            String sql="insert into message values(?,?,?)";
            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.close(connection,statement,null);
        }
    }
    private List load() {
        List messages=new ArrayList<>();
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet resultSet=null;
        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("message");
                messages.add(message);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(connection,statement,resultSet);
        }
        return messages;
    }

}

DBUtil.java

1.构造对象

2.初始化事件源,懒汉模式的线程,要进行三步操作

3.连接

4.关闭

public class DBUtil {
    private static final String URL="jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false";
    private static final String USERNAME="root";
    private static final String PASSWORD="123456";

    private volatile static DataSource dataSource=null;
    private static DataSource getDataSource(){
        if(dataSource==null){
            synchronized (DBUtil.class){
                if(dataSource==null){
                    dataSource=new MysqlDataSource();
                    ((MysqlDataSource)dataSource).setUrl(URL);
                    ((MysqlDataSource)dataSource).setUser(USERNAME);
                    ((MysqlDataSource)dataSource).setPassword(PASSWORD);
                }
            }
        }

        return dataSource;
    }


    public static Connection getConnection() throws SQLException {
        return getDataSource().getConnection();
    }


    public static void close(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();
            }
        }
    }

}

你可能感兴趣的:(servlet)