基于SpringBoot从零构建博客网站 - 开发设置主页标识和修改个人信息功能

news/2024/5/14 12:16:13/文章来源:https://blog.csdn.net/weixin_30267697/article/details/96434856

由于守望博客系统中支持由用户自己设置个人主页的URL的后半段,所以必须要用户设置该标识的功能,而且是用户注册登录之后自动弹出的页面,如果用户没有设置该标识,其它的操作是不能够操作的,同时要求主页标识只能设置一次。

用户注册时只是填写了简单的登录信息,所以用户登录后,可以设置个人详细的信息,也即修改个人信息功能。

1、设置主页标识功能

由于在用户没有设置主页标识时,只要用户一登录就会自动跳转到设置主页标识页面,同时如果没有设置该标识,其它的操作是不能操作的,所以有一个拦截器来实现该功能,即:LoginInterceptor,主要代码如下:

/*** 检查是否登录** @author lzj* @since 1.0* @date [2019-05-07]*/
@Component
public class LoginInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();User user = (User) session.getAttribute(Const.SESSION_USER);String uri = request.getRequestURI();if (user == null) {// 说明没有登录,直接跳转到登录页面response.sendRedirect(request.getContextPath() + "/auth/login");return false;}if (StringUtils.isEmpty(user.getCode()) && !"/user/code".equals(uri)) {// 如果用户没有设置个人主页标识,则跳转到设置页面response.sendRedirect(request.getContextPath() + "/user/code");return false;}return true;}
}

有了拦截器类之后,还需要一个拦截器的配置类,即:InterceptorConfig,主要代码如下:

/*** 拦截器配置类** @author lzj* @since 1.0* @date [2019-05-07]*/
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor).addPathPatterns("/user/**");}
}

从上可知LoginInterceptor拦截器,是拦截“/user/**”形式的url链接。

有了拦截器之后,可以实现该设置主页标识的功能,首先加载出修改个人主页标识页面核心代码如下:

/*** 加载出修改个人主页标识页面** @return*/
@RequestMapping(value = "/user/code", method = RequestMethod.GET)
public String code(HttpSession session) {// session中的信息User user = (User) session.getAttribute(Const.SESSION_USER);if (!StringUtils.isEmpty(user.getCode())) {// 跳转到个人主页return "redirect:/u/" + user.getCode();}return Const.BASE_INDEX_PAGE + "auth/user/code";
}

页面效果如下:

840503-20190708132056899-417352360.jpg

保存主页标识信息的后台核心代码如下:

/*** 保存主页标识信息** @param request* @param session* @return*/
@RequestMapping(value = "/user/code", method = RequestMethod.POST)
@ResponseBody
public Result code(HttpServletRequest request, HttpSession session) {Result result = new Result();try {// 接收参数String code = request.getParameter("code");// 校验参数if (StringUtils.isEmpty(code)) {throw new TipException("主页标识不能为空");}if (!StringUtil.isId(code)) {throw new TipException("主页标识只能包含字母、数字和下划线");}// session中的信息User user = (User) session.getAttribute(Const.SESSION_USER);if (!StringUtils.isEmpty(user.getCode())) {throw new TipException("主页标识只能设置一次");}// 设置主页标识user.setCode(code);userService.updateById(user);// 更新sessionsession.removeAttribute(Const.SESSION_USER);session.setAttribute(Const.SESSION_USER, user);result.setCode(Result.CODE_SUCCESS);result.setMsg("修改成功");result.setContent(code);} catch (TipException e) {result.setCode(Result.CODE_EXCEPTION);result.setMsg(e.getMessage());} catch (Exception e) {log.error("保存主页标识信息失败", e);result.setCode(Result.CODE_EXCEPTION);result.setMsg("保存主页标识信息失败");}return result;
}

2、修改个人信息功能

修改个人信息主要是提供用户填写个人详细信息的,加载出修改个人信息页面的后台核心代码如下:

/*** 加载出修改个人信息页面** @param session* @return*/
@RequestMapping(value = "/user/edit", method = RequestMethod.GET)
public String edit(HttpSession session, Model model) {// session中的信息User sessionUser = (User) session.getAttribute(Const.SESSION_USER);// 从数据库中获取用户信息User user = userService.getById(sessionUser.getUserId());model.addAttribute("user", user);return Const.BASE_INDEX_PAGE + "auth/user/edit";
}

页面效果如下:

840503-20190708132045159-1626561793.jpg

保存修改信息的后台核心代码如下:

/*** 修改个人信息** @param request* @param session* @return*/
@RequestMapping(value = "/user/edit", method = RequestMethod.POST)
@ResponseBody
public Result edit(HttpServletRequest request, HttpSession session) {Result result = new Result();try {// 获取登录信息User tempUser = (User) session.getAttribute(Const.SESSION_USER);String userId = tempUser.getUserId();// 接收参数String realName = request.getParameter("realName");String cellphone = request.getParameter("cellphone");String sexStr = request.getParameter("sex");String introduce = request.getParameter("introduce");if (StringUtils.isEmpty(realName) || StringUtils.isEmpty(cellphone) || StringUtils.isEmpty(sexStr) || StringUtils.isEmpty(introduce)) {throw new TipException("缺少必要请求参数");}// 校验性别int sex = User.SEX_SECRET;try {sex = Integer.parseInt(sexStr);if (User.SEX_FEMALE != sex && User.SEX_MALE != sex && User.SEX_SECRET != sex) {throw new Exception();}} catch (Exception e) {throw new TipException("性别数据不符合规则");}// 获取用户的信息User user = userService.getById(userId);user.setRealName(realName);user.setCellphone(cellphone);user.setSex(sex);user.setIntroduce(introduce);// 更新用户的信息boolean flag = userService.updateById(user);if (!flag) {throw new TipException("修改个人信息失败");}result.setCode(Result.CODE_SUCCESS);result.setMsg("修改成功");} catch (TipException e) {result.setCode(Result.CODE_EXCEPTION);result.setMsg(e.getMessage());} catch (Exception e) {log.error("修改个人信息失败", e);result.setCode(Result.CODE_EXCEPTION);result.setMsg("修改个人信息失败");}return result;
}

关注我

以你最方便的方式关注我:
微信公众号:
840503-20190708132028123-785472791.jpg

转载于:https://www.cnblogs.com/atcloud/p/11150618.html

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

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

相关文章

查看痕迹_想知道孩子是否浏览过“不良网站”,看手机留下的3种痕迹就知道...

我是小豆爸,想第一时间了解更多的育儿知识和育儿有趣的事,请您点击右上角“关注”,每天为大家带来育儿小知识文丨小豆爸爸的育儿经(文章原创 ,版权归本人所有,欢迎宝爸宝妈转发分享)导语:现如今我们的生活条…

网站的开发流程(转)

转自:http://jan.yculblog.com/post.1284915.html(此文献给我的菜菜团队)弄出这个说明的人肯定是个UI Designer,而且还是个mm UI Designer, 不然干嘛独独美化Designer丑化Programmer和Client... 整个叙述也是从一个UID的角度来叙述的&#xf…

python学习笔记(34)——网站文件、图片、表格的获取

运行出错小插曲:RequestsDependencyWarning:requests库版本不匹配 RequestsDependencyWarning: urllib3 (1.26.8) or chardet (3.0.4) doesnt match a supported version! 解决方案: 1、查看requests库的版本:pip list 2、卸载…

关于安卓手机访问一些网站或者Fiori应用弹出安装证书的提示

2019独角兽企业重金招聘Python工程师标准>>> 有朋友问遇到在安卓手机上安装Fiori Client,打开的时候提示需要安装证书,如下图所示: 我在自己的Android手机试了试,因为我没有装Fiori Client,所以就用手机浏…

help.hybris.com和help.sap.com网站的搜索实现

help.hybris.com 我使用help.hybris.com时,发现每次在搜索栏输入文字时,没有发出任何HTTP请求,那么这个自动完成的下拉框里的记录从哪里来的?我看了下实现,发现所有自动完成下拉框里的记录都是硬编码在searchsuggesti…

.Net Core建站(4):FTP发布项目及连接服务器数据库

总感觉,今天(2018-1-14)下午写不完这篇,虽然蛮简单,只是点点点,,, 主要是记录两个, 1.连接服务器的数据库 2.项目FTP发布到服务器 使用数据库:SQL Server 201…

LAMP架构部署和动态网站环境的配置

2019独角兽企业重金招聘Python工程师标准>>> 实验环境: 操作系统:centos 7.5 服务器IP:192.168.10.5 运行用户:root 连接工具:xshell工具 web环境:Linuxapachephpmariadb(LAMP架构&a…

小技巧:如何突破某些网站只能登陆后才能进行文字拷贝的限制

我写公众号文章时,经常需要从一些网站的文章上查阅一些资料。比如我想把这个网页上的一个标题“SAP Fiori 2.0用户体验设计概念获红点大奖”进行拷贝。 然而当我按了键盘上的拷贝快捷键Ctrl C后,却收到这个提示,告诉我只有登陆后才能够进行复…

分享一个WebGL开发的网站-用JavaScript + WebGL开发3D模型

这张图每位程序员应该都深有感触。 人民心目中的程序员是这样的:坐在电脑面前噼里啪啦敲着键盘,运键如飞。 现实中程序员是这样的:编码5分钟,调试两小时。 今天我要给大家分享一个用WebGL开发的网站,感兴趣的朋友可…

推荐一个有趣的Chrome扩展程序-查看任意网站的开发技术栈

对于前端开发人员来说,目前的前端框架层出不穷,最受欢迎的莫过于所谓的前端框架三驾马车:Angular, React和Vue。在学习的过程中,肯定好奇现在的互联网公司的网站用的何种前端框架来开发的。 Chrome扩展程序商店里就提…

尤克里里学习网站

给大家推荐一个从入门到精通的尤克里里fans网站,http://www.ukulelefan.com/pingce/,以前一直以为叫古琴,后来经一位玩乐器的朋友纠正叫尤克里里,很喜欢,推荐给大家! 转载于:https://www.cnblogs.com/yadon…

从IIS网站上下载AssetBundle,并写入到本地磁盘指定路径

啊,长叹一声,弄了一晚上,加半个白天 先说说历程吧,主要是踩的坑。 首先打包就不用说了。有.asseetbundle的,有.u3d的,还有就是生成md5列表 然后下载并保存就恶心了。 本来想的很好,思路其实也正…

如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里

我们在用ABAP代码消费外网的url时会遇到一些异常,比如ICM_HTTP_SSL_PEER_CERT_UNTRUSTED,这是因为请求的url所在的网站的SSL Server certificate没有导入到Netweaver系统。 本文介绍导入的详细步骤。 基本思路就是两步: 从网站上导出certi…

用java做网站,java连接数据库并查询输出到页面

java web的后缀名是jsp&#xff0c;所以咱们要有一个jsp的开发环境&#xff0c;我这用的是jspStudy 自行百度。这软件是一个集成开发环境&#xff0c;安装启动后即可使用&#xff0c;集成了tomcat和mysql数据库 首先我们先新建一个首页文件 index.jsp <% page language"…

关于安卓手机访问一些网站或者Fiori应用弹出安装证书的提示

有朋友问遇到在安卓手机上安装Fiori Client&#xff0c;打开的时候提示需要安装证书&#xff0c;如下图所示&#xff1a; 我在自己的Android手机试了试&#xff0c;因为我没有装Fiori Client&#xff0c;所以就用手机浏览器直接访问 https://go.sap.com : 弹出了类似的对话…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

推荐一个采用方便程序员在线动画学习常用算法的良心网站

网址&#xff1a; https://algorithm-visualizer.org/ 进去之后的页面是程序员熟悉的码农风格&#xff1a; 假设我想学习冒泡排序算法&#xff0c;在搜索栏里输入sort&#xff0c;在结果列表里选择bubble sort&#xff1a; 点击之后&#xff0c;排序操作处于就绪状态&…

以太坊Dapp项目-拍卖网站-智能合约编写测试

修订日期姓名邮箱2018-10-18brucefengbrucefengbrucefeng.com前言 写这篇文章的初衷其实很简单&#xff0c;在MyEtherWallet上申请以太坊ENS的时候&#xff0c;竞标的以太币两次被吞&#xff0c;而且是在规定时间点进行了价格公告&#xff0c;这篇文章的设计思路其实就是跟ENS的…

网站开发需要哪些技术_自己建网站要掌握哪些技术-广州福星网站建设

自助建站最大的好处&#xff0c;可以不用找人或花高价找建站公司来建站&#xff0c;但自己建站却存在一定技术门槛&#xff0c;而且这个技术门槛非常的高&#xff0c;主要因为建站并不是说&#xff0c;通过一门技术就可以搞定&#xff0c;做网站所需要技术分为三大块&#xff0…

电商网站模板_4个步骤,教你这样制作跨境电商网站

随着全球互联网经济的发展&#xff0c;外贸从业者也需要好好利用互联网来开展业务了。而制作一个自己的跨境电商网站&#xff0c;就是比较好的营销卖货方式。不过大部分人都不知道该如何制作&#xff0c;所以接下来就跟大家科普下跨境电商网站制作教程&#xff1a;Step1&#x…