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

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




在这里插入图片描述

在这里插入图片描述

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

   @Overrideprotected 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");

在这里插入图片描述

在这里插入图片描述




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

@Overrideprotected 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);}



在这里插入图片描述

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

private ObjectMapper objectMapper=new ObjectMapper();@Overrideprotected 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找到userBlogDao 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);}}

在这里插入图片描述




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

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.获取登录的用户//虽然编写内容的时候,一定会有用户登录,但是为了防止其它情况,我们还是要做检查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");

在这里插入图片描述




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 中!= 到底走不走索引?

mysql 中! 到底走不走索引? 很多人疑惑! 到底走不走索引, 这里可以肯定的说该操作是可以走索引的,但实际情况中都为啥都不走索引呢? 首先我们要知道走索引与数据量和数据趋势(cardinality)有很大的关系&…

bug: https://aip.baidubce.com/oauth/2.0/token报错blocked by CORS policy

还是跟以前一样,我们先看报错点:(注意小编这里是H5解决跨域的,不过解决跨域的原理都差不多) Access to XMLHttpRequest at https://aip.baidubce.com/oauth/2.0/token from origin http://localhost:8000 has been blo…

设计模式之装饰模式

一、概念 装饰模式是一种结构型设计模式,允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 二、构造 部件(Component)声明封装器和被封装对象的公用接口。 具体部件(Concrete Component)类是…

随机森林在生物信息中的应用

今天与大家分享一项强大的机器学习算法随机森林。这个算法不仅在数据科学领域广泛应用,还在生物信息学中发挥了巨大的作用。 让我们一起探索随机森林的原理、优缺点以及它在生物信息领域的实际应用场景,本文将给出R语言进行应用的实际方法,利…

一个可以自动把微信聊天收到的二维码图片实时提取出来并分类的软件

10-1 如果你有需要实时地、自动地把微信各个群收到的二维码图片提取出来的需求,那本文章适合你,本文章的主要内容是教你如何实现自动提取微信收到的二维码图片,助你快速扫码,永远比别人领先一步。 首先需要准备好的材料&#xf…

SpringBoot + Vue2项目打包部署到服务器后,使用Nginx配置SSL证书,配置访问HTTP协议转HTTPS协议

配置nginx.conf文件,这个文件一般在/etc/nginx/...中,由于每个人的体质不一样,也有可能在别的路径里,自己找找... # 配置工作进程的最大连接数 events {worker_connections 1024; }# 配置HTTP服务 http {# 导入mime.types配置文件…

信驰达RF-DG-52PAS Zigbee 3.0协调器Home Assistant上手指南

一、使用前准备 RF-DG-52PAS是信驰达科技基于美国 TI CC2652P和CP2102为核心设计的Zigbee3.0 USB Dongle,可烧录 Z-Stack 3.x.0协调器固件,可以直接连接到计算机或树莓派,通过ZHA或 Zigbee2MQTT连接到 Home Assistant或其他开源物联网平台。还可以烧录…

c++实现观察者模式

前言 我觉得这是最有意思的模式&#xff0c;其中一个动&#xff0c;另外的自动跟着动。发布-订阅&#xff0c;我觉得很巧妙。 代码 头文件 #pragma once #include<vector> #include<string> #include<iostream>// 抽象观察者 class Aobserver { public:v…

python如何使用gspread读取google在线excel数据?

一、背景 公司使用google在线excel管理测试用例&#xff0c;为了方便把手工测试用到的测试数据用来做自动化用例测试数据&#xff0c;所以就想使用python读取在线excel数据&#xff0c;通过数据驱动方式&#xff0c;完成自动化回归测试&#xff0c;提升手动复制&#xff0c;粘…

【服务器使用】vscode winscp进行服务器容器连接(含修改初始密码)

1&#xff1a;获取docker的登陆信息 例如节点&#xff08;host&#xff09;、端口&#xff08;port&#xff09;、密码&#xff08;passwd&#xff09;等信息&#xff0c;这个自己找组内的前辈获取即可 2&#xff1a;配置config文件 找到vscode里面ssh处的config文件 人工找…

Vue Vue3

1、创建VUE3工程 使用vue-cli创建&#xff1a; ## 查看vue/cli版本&#xff0c;确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm install -g vue/cli ## 创建 vue create vue_test ## 启动 cd vue_test npm run serve 使用vite创建&#xff1a; …

07、vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。

目录 问题解决&#xff1a; 问题 vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1&#xff0c;因为在此系统上禁止运行脚本。 在使用 VSCode 时&#xff0c;创建 Vue 项目报的错 创建不了 Vue 项目 解决&#xff1a; 因为在此系统上禁止运行该脚本&#xff0…

从行车记录仪恢复已删除/丢失视频的方法

“我的车里有行车记录仪。几天前&#xff0c;当我下班回家时&#xff0c;一辆卡车不知从哪里冒出来撞向了我。我们的两辆车都损坏了&#xff0c;但幸运的是&#xff0c;没有人受伤。我曾与卡车司机就修理我的汽车进行过会面&#xff0c;但他说我有错。我需要查看我的行车记录仪…

【每日一题】移除链表元素(C语言)

移除链表元素&#xff0c;链接奉上 目录 思路&#xff1a;代码实现&#xff1a;链表题目小技巧&#xff1a; 思路&#xff1a; 在正常情况&#xff1a; 下我们移除链表元素时&#xff0c;需要该位置的前结点与后节点&#xff0c; 在特别情况时&#xff1a; 例如 我们发现&…

基于金枪鱼群算法的无人机航迹规划-附代码

基于金枪鱼群算法的无人机航迹规划 文章目录 基于金枪鱼群算法的无人机航迹规划1.金枪鱼群搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用金枪鱼群算法来优化无人机航迹规划。 …

vue项目npm install报错解决

一、报错信息 node-sass4.14.1 postinstall: node scripts/build.js 二、解决方式 &#xff08;1&#xff09;删除未成功安装的 node_modules 文件&#xff1b; &#xff08;2&#xff09;为 node-sass 单独设置镜像源&#xff1b; npm config set sass_binary_sitehttps:/…

项目级asp.net框架的LIMS实验室管理系统源码

LIMS可用于管理完整的实验程序&#xff0c;从样品登记到检验、校核、审核到最终批准报告&#xff0c;建立在过程质量控制的基础上&#xff0c;对检测流程进行有效全面的管理&#xff0c;对影响质量的人、机、料、法、环因素加以控制&#xff0c;同时为质量改进提供数据依据。进…

Cassandra介绍(一)

1.1. 概念 Apache Cassandra 是高度可扩展的&#xff0c;高性能的分布式 NoSQL 数据库。 Cassandra 旨在处理许 多商品服务器上的大量数据&#xff0c;提供高可用性而无需担心单点故障。 Cassandra 具有能够处理大量数据的分布式架构。 数据放置在具有多个复制因子的不同机器…

Luminar Neo Mac/Windows中文版:引领AI图像编辑的革命性时代

Luminar Neo运用先进的AI技术&#xff0c;能够自动化地完成许多繁琐的编辑任务&#xff0c;如色彩校正、噪点消除、人脸识别等。这不仅大大提高了工作效率&#xff0c;同时也降低了对专业知识和技能的要求。无论你是专业摄影师&#xff0c;还是摄影爱好者&#xff0c;甚至是一个…

产品实习笔记——会员体系 积分体系

文章目录 引入会员体系1. 业务逻辑产品化2. 产品逻辑可视化2.1 成长值&#xff1a;会员等级的判断机制2.1.1 成长值的获得2.1.1 成长值的消耗 2.2 会员等级区间划分2.3 成长值风控体系2.4 会员权益2.4.1 普通会员权益2.4.2 阶梯式会员权益 积分体系有赞商城&#xff08;会员体系…