牛客网项目

1.开发社区首页

1,查询帖子列表这里参数需要多传一个用户id,因为后面需要点击进去帖子详情

2,这里使用动态sql作为拼接userId,不等于0的时候才拼接,status等于2的时候是拉黑排除掉

3,安装类型时间降序排序

2.开发登录模块

2.1 邮箱

1,引入邮箱依赖

2,邮箱参数配置

3,使用javaMailSender发送邮件,使用 ``MimeMessageHelper构建MimeMessage`

4,参数发送人,发送的主题,发送的内容

5,使用模板发送,注入TemplateEngine(模板引擎),需要实例化Context设置发送的内容

2.2 注册

1,业务层需要判断controller传user是否为空

2,判断账号用户密码邮箱不能为空,为空发送错误页面

3,根据用户名查询数据库是否有数据,如果有直接给个提示

4,注册用户

4.1,设置盐加密0到5位,设置用户密码加密,设置类型为0普通用户,设置状态为0未激活,设置激活码,设置用户头像,用牛客网头像使用随机头像new Random().nextInt(1000),设置日期,最后添加到数据库

4.2,激活邮箱:

实例化Context,设置变量邮箱,url跳转地址,templateEngine.process(路径,context)返回内容字符串,最后调用工具类发送邮箱

5,controller层先判断传的值是否为空值,和空字符串,如果不为空说明有异常

6,controller激活邮箱方法,需要获取路径中的参数(用户id,激活码)

7,需要在业务层写一个方法判断(激活,重复激活,激活失败)

7.1,根据用户id查询如果状态为1说明激活过了,否则传过来的验证码是否一致然后调用修改的方法把状态改为1,其他激活失败

2.3 会话管理
2.4 验证码

1,需要导入kaptcha依赖

2,验证码controller

2.1,注入Producer@Bean

2.2,调用createText()生成验证码

2.3,调用createImage()转换为图片

2.4,将验证码存在session中

2.5,设置图片格式

2.6,读写响应到浏览器

2.5 登录

1,业务层开发

1.1,验证账号空值处理

1.2,验证密码空值处理

1.3,根据用户名查询,为空,返回错误

1.4,验证状态是否激活

1.5,验证密码是否正确

1.6,生成登录凭证

2,controller开发

2.1,校验验证码

2.2,设置超时时间

2.3,调用业务层login方法

2.4,判断map中是否包含ticket,存在cookie

2.5,其他把错误的存在model中

2.6 退出

1,根据ticket修改状态为1退出

2,controller层,用@CookieValue注解获取cookie,实现退出功能

2.7 显示登录信息

1,需要实现拦截器HandlerInterceptor

2,需要编写获取cookie的工具类

3,需要用到ThreadLocal持有用户信息

4,拦截器实现preHandle,postHandle,afterCompletion三个方法

4.1,preHandle在请求之前获取用户信息,存在ThreadLocal

4.2,postHandle在模板渲染之前获取用户信息,存在域对象中

4.3,afterCompletion模板调用完之后清理掉用户信息hostHolser

5,配置拦截器需要实现WebMvcConfigurer,编写方法传参数InterceptorRegistry(拦截器注册表),调用addInterceptor(添加拦截器)excludePathPatterns(放行路径)一般都是静态资源excludePathPatterns(放行)方法

2.8 设置账号头像

1,上传头像需要注意的是必须是post请求,表单是enctype="multipart/form-data"Multipart上传文件

2,业务层根据用户id修改头像

3,controller层编写上传头像

3.1,判断上传头像是否为空,为空,页面显示错误提示

3.2,得到头像的源文件getOriginalFilename()方法

3.3,截取头像后缀,从.后面截取,截取返回为空,直接返回页面提示错误信息

3.4,拼接图片文件名

3.5,确定文件存放路径

3.6,Multipart调用transferTo(文件路径)存文件

3.7,需要重新修改下头像存放的web路径

2.9 获取头像

1,是通过路径获取

2,获取服务器存放的路径

3,需要截取动态获取文件的后缀响应到浏览器

4,读写操作获取头像

2.10 检查登录状态

1,使用注解标记需要拦截的方法

2,拦截器判断

  1. 判断拦截的是不是方法
  2. 如果是方法,得到方法的注解
  3. 如果有我们上面自定义的方法,说明这个方法登录了才能访问
  4. 如果当前没有登录,return false,拒绝请求,返回登陆页面

3. 开发社区核心功能

3.1 过滤敏感词
3.2 发布帖子

1,需要发送异步请求

2,需要用到fastjson传输json数据

3,需要新建一个工具类CommunityUtil

4,业务层

4.1,转义HTML标记HtmlUtils.htmlEscape()方法,

4.2,过滤敏感词

5,controller层

5.1, 判断当前是否登录,没登陆返回code:403

5.1,登录返回成功的状态码和提示消息

6,编写异步请求代码

3.3 帖子详情

1,根据路径传的帖子id,点击进去进去帖子详情页面,controller层调用根据i

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
牛客网的课程《Linux高并发服务器开发》中包含了项目笔记,其中涉及到了WebServer的开发。根据引用的信息,这门课程的学习进度可能由于个人原因而拖延了一段时间。在第五章的项目学习中,可能包含了关于多进程服务器开发的学习内容。不过具体的学习笔记可能还没有迁移到pad上,暂时无法获取详细的内容[2]。根据引用,在服务器开发中,使用单Reactor和多线程的方法可以提高效率,并充分利用多核CPU的性能优势。然而,使用多线程开发可能需要在各自的线程上加锁保护临界区数据,相对较为复杂。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [牛客网c++web服务器项目学习笔记-第0章 课程介绍](https://blog.csdn.net/weixin_45139984/article/details/132205586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【牛客网C++服务器项目学习】Day12-网络编程的两种事件处理模式](https://blog.csdn.net/qq_42518941/article/details/122283291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值