项目------------ 一款精简的在线个人记事本

项目------------  一款精简的在线个人记事本

在学习了一些Javaweb知识之后,为了能够熟练运用所学到的Javaweb知识并且和之前所学关联起来,我着手做了一款网页版的记事本项目,该项目借用了UEditor富文本编辑器前端插件,主要功能是登录,展示文章列表,并提供修改文章内容功能。

在客户端使用了JSP,JavaScript,CSS,JQuery,Bootstrap作为客户端页面开发。

在服务器则使用了Servlet,JDBC,Jackson作为JSON数据格式与Java对象序列化/反序列化工具。.

 

项目------------ 一款精简的在线个人记事本_第1张图片

因为前端知识涉及的不多,所以就只是简单地做了几个页面用于实现功能:

项目------------ 一款精简的在线个人记事本_第2张图片

上面是一个简单的登录窗口,在这里我们提供了一个类用于提供与数据库交互的基本方法,便于后面使用。

package com.mos.db;

import com.mos.exception.SystemException;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Created with InteIIiJ IDEA.
 * Description:
 * User:
 * Date:2019-08-23
 * Time:11:53
 */
public class DBManager {
    private static final String URL = "jdbc:mysql://localhost:3306/blogdemo";

    private static final String USER_NAME = "root";

    private static final String PASSWORD = "177458";

    private static volatile DataSource DATASOURCE;

    private DBManager() {

    }

    public static DataSource getDATASOURCE() {
        if (DATASOURCE == null) {
            synchronized (DataSource.class) {
                if (DATASOURCE == null) {
                    DATASOURCE = new MysqlDataSource();
                    ((MysqlDataSource) DATASOURCE).setUrl(URL);
                    ((MysqlDataSource) DATASOURCE).setUser(USER_NAME);
                    ((MysqlDataSource) DATASOURCE).setPassword(PASSWORD);
                    ((MysqlDataSource) DATASOURCE).setCharacterEncoding("UTF-8");
                }
            }
        }
        return DATASOURCE;
    }

    public static Connection getConnection() {
        try {
            return getDATASOURCE().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
            if (preparedStatement != null) {
                preparedStatement.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
            //处理数据库异常
            throw new SystemException("数据库错误");
        }
    }
}

我使用了一个Servlet页面用于获取表单参数并进行与数据库内的username&password的匹配,若匹配到,便重定向至文章列表页面,否则,进入登录失败页面,此举可以保护我们的文章不会轻易被外人修改。

package com.mos.servlet;

import com.mos.db.DBManager;
import com.mos.po.User;

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.*;

/**
 * Created with InteIIiJ IDEA.
 * Description:
 * User:
 * Date:2019-08-28
 * Time:8:31
 */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        //获取表单参数(页面中提交过来的值)
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        User user = new User();
        user.setUserName(username);
        user.setPassWord(password);

        String sql = "select username,password from user where username=? and password=?";

        int flag = this.excuteQuery(user, sql);

        if (flag == 1) {
            //转向

            /**
             * request.getRequestDispatcher()有两种跳转:
             *
             * (1)跳转到一个servlet
             *
             *  request.getRequestDispatcher("想跳转的servlet名").forward(request, response);
             * (2)跳转到一个页面
             * request.getRequestDispatcher("文件路径").forward(request, response);
             */

            request.getRequestDispatcher("jsp/articleList.jsp").forward(request, response);
        } else {
            request.getRequestDispatcher("failure.jsp").forward(request, response);
        }

    }

    public int excuteQuery(User user, String sql) {
        int flag = 0;
        try {
            Connection connection = DBManager.getConnection();
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, user.getUserName());
            preparedStatement.setString(2, user.getPassWord());
            ResultSet resultSet = preparedStatement.executeQuery();
//            ResultSetMetaData resultSetMetaData = preparedStatement.getMetaData();
//
//            ResultSetMetaData rsm = resultSet.getMetaData();
            String username = null;
            String password = null;
            if (resultSet.next()) {
                username = resultSet.getString("username");
                password = resultSet.getString("password");
                if (username.equals(user.getUserName()) && password.equals(user.getPassWord())) {
                    flag = 1;
                    return flag;
                } else {
                    flag = 0;
                    return flag;
                }
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;
    }
}

登录进去之后,便进入文章列表页面,

项目------------ 一款精简的在线个人记事本_第3张图片

因为目前还没有添加内容,所以列表为空。

项目------------ 一款精简的在线个人记事本_第4张图片

 

提交内容之后,

项目------------ 一款精简的在线个人记事本_第5张图片

并提供删除和批量删除操作支持。

项目------------ 一款精简的在线个人记事本_第6张图片

至此,大概就是此项目的主要功能。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java项目,项目详解,Java项目)