• JavaEE-博客系统3(功能设计)


    本部分内容为:实现登录功能;强制要求用户登录;实现显示用户信息;退出登录;发布博客




    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    该部分的后端代码如下:

       @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.从请求中获取用户名和密码
            //    给请求对象设置字符集, 保证说请求中的 username 或者 password 是中文, 也能正确处理.
            req.setCharacterEncoding("utf8");
            String username=req.getParameter("username");
            String password=req.getParameter("password");
            if(username==null || password==null || "".equals(username) || "".equals(password)){
                //这是用户名和密码有误
                resp.setContentType("text/html;charset=utf8");
                resp.getWriter().write("username or password is empty");
                return;
            }
            //2.从数据库的数据进行验证,看用户名和密码是否匹配
            //通过用户名查询信息
            UserDao userDao=new UserDao();
            User user=userDao.getUserByName(username);
            if(user==null){
                //当前提交的用户名密码错误
                resp.setContentType("text/html;charset=utf8");
                resp.getWriter().write("username or password is wrong");
                return;
            }
            if(!password.equals(user.getPassword())){
                //当前提交的用户名密码错误
                resp.setContentType("text/html;charset=utf8");
                resp.getWriter().write("username or password is wrong");
                return;
            }
            //3创建会话
            HttpSession session= req.getSession(true);
            // 把当前登录的用户信息保存到 session 中, 方便后续进行获取.
            session.setAttribute("user",user);
            //4跳转到博客列表页
            resp.sendRedirect("blog_list.html");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    在这里插入图片描述

    在这里插入图片描述




    在这里插入图片描述在这里插入图片描述
    该部分的后端代码如下:

    @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //根据上面,我们建立了会话为依据
            HttpSession session= req.getSession(false);
            if(session==null){
                //未登录,返回前端
                resp.setStatus(403);
                return;
            }
            //不仅仅要看session是否存在,还要看上述中存储的用户信息是否存在
            User user= (User) session.getAttribute("user");
            if(user==null){
                //未登录,返回前端
                resp.setStatus(403);
                return;
            }
            //表示已经登陆
            resp.setStatus(200);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19



    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述
    该部分的后端代码如下:

    private ObjectMapper objectMapper=new ObjectMapper();
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //通过判断请求是否带有blogId这个参数,来判断是列表页发来的请求还是详情页发来的请求
            String blogId=req.getParameter("blogId");
            if(blogId==null){
                //表明是列表页
                //列表页可以从保存下来的session中拿到用户信息
                HttpSession session=req.getSession(false);
                //拿到的这个session可能为空
                if(session==null){
                    //session为空,那么用户信息也必然为空,这里需要创建一个卡用户出来
                    User user=new User();
                    //Jackson ObjectMapper类(com.fasterxml.jackson.databind.ObjectMapper)解析JSON工具
                    //
                    //序列化:      Java对象生成Json
                    //
                    //反序列化:  Json解析为Java对象
                    String respJson=objectMapper.writeValueAsString(user);
                    resp.setContentType("application/json;charset=utf8");
                    resp.getWriter().write(respJson);
                    return;
                }
                User user= (User) session.getAttribute("user");
                if(user==null){
                    user=new User();
                    String respJson=objectMapper.writeValueAsString(user);
                    resp.setContentType("application/json;charset=utf8");
                    resp.getWriter().write(respJson);
                    return;
                }
                String respJson=objectMapper.writeValueAsString(user);
                resp.setContentType("applicaion/json;charset=utf8");
                resp.getWriter().write(respJson);
            }else{
                //表明是详情页
                //需要查询数据库,通过blogId关联找到blog,再通过getuserid找到userid,通过userid找到user
                BlogDao blogDao=new BlogDao();
                Blog blog=blogDao.getBlog(Integer.parseInt(blogId));
                if(blog==null){
                    User user=new User();
                    String respJson=objectMapper.writeValueAsString(user);
                    resp.setContentType("application/json;charset=utf8");
                    resp.getWriter().write(respJson);
                    return;
                }
                UserDao userDao=new UserDao();
                User user=userDao.getUserById(blog.getBlogId());
                if(user==null){
                    user=new User();
                    String respJson=objectMapper.writeValueAsString(user);
                    resp.setContentType("application/json;charset=utf8");
                    resp.getWriter().write(respJson);
                    return;
                }
                String respJson=objectMapper.writeValueAsString(user);
                resp.setContentType("application/json;charset=utf8");
                resp.getWriter().write(respJson);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    在这里插入图片描述




    在这里插入图片描述在这里插入图片描述上述过程的后端代码如下:

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           HttpSession session=req.getSession(false);
           if(session==null){
               //当前状态未登录,不做处理,跳转到登录
               resp.sendRedirect("login.html");
               return;
           }
           //在登录成功之后,session中会有user这个属性,
            // 把他删除之后,状态就成了为登录
            session.removeAttribute("user");
           resp.sendRedirect("login.html");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述




    在这里插入图片描述
    在这里插入图片描述
    上述过程的后端代码如下:

    //1.获取登录的用户
            //虽然编写内容的时候,一定会有用户登录,但是为了防止其它情况,我们还是要做检查
            HttpSession session=req.getSession(false);
            if(session==null){
                resp.setContentType("text/html;charset=utf8");
                resp.getWriter().write("user don`t register,please register");
                return;
            }
            User user= (User) session.getAttribute("user");
            if(user==null){
                resp.setContentType("text/html;charset=utf8");
                resp.getWriter().write("user don`t register,please register");
                return;
            }
            //2.从请求中获取用户传递过来的信息
            req.setCharacterEncoding("utf8");
            String title=req.getParameter("title");
            String content=req.getParameter("content");
            if(title==null || content==null || "".equals(title) || "".equals(content)){
                resp.setContentType("text/html;charset=utf8");
                resp.getWriter().write("title or content is empty");
                return;
            }
            //3.构造对象,将其插入倒数据库中
            Blog blog=new Blog();
            blog.setTitle(title);
            blog.setContent(content);
            blog.setUserId(user.getUserId());
            //此处的时间是sql通过自带的now获取,不需要手动获取
            BlogDao blogDao=new BlogDao();
            blogDao.insert(blog);
            //4.跳转到列表页
            resp.sendRedirect("blog_list.html");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    在这里插入图片描述




  • 相关阅读:
    Redis-Cluster集群、Redis持久化、Redis作MySQL的缓存服务器、配置gearman实现Redis和MySQL数据同步
    Vue从入门到精通
    使用Piwigo管理您的照片
    前端工程化:使用 shelljs 生成 yapi 接口文件
    人体骨骼点检测:自顶向下(部分理论)
    基于Go语言GoFrame+Vue+ElementUI项目后台管理系统
    Android 部分 Activity 篇
    语义分割之RTFormer介绍
    抠图专题1:抠出白色陶瓷杯(每天一个PS小项目)
    【XML文件数据预处理】获取xml文件中所有标签名称及数量||提取某个特定标签的数量||生成包含某个标签的图片索引txt并复制图片到指定文件夹
  • 原文地址:https://blog.csdn.net/qq_43570634/article/details/134233380