自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 牛客网社区项目——p3.9统一异常处理

首先将错误页面文件夹error放到template文件夹下404错误页面只需配置.html文件即可,若用户路径输错,自动会调用显示500错误是服务器短的错误,对它的处理如下所示首先在HomeController下新建一个请求 @RequestMapping(path = "/error", method = RequestMethod.GET) public String getError(){ return "/error/500"; }声明一个control.

2021-03-04 22:14:15 607 2

原创 牛客网社区项目——p3.8发送列表

在DAO层MessageMapper添加以下俩方法//增加消息 int insertMessage(Message message); //改变消息状态 int updateStatus(List<Integer> ids, int status);配置对应的mapper.xml文件服务层的代码如下: public int addMessage(Message message){ message.setContent(HtmlUtils.htm.

2021-03-04 21:55:55 433 1

原创 牛客网社区项目——p3.7私信列表

首先建立Message实体类,代码略DAO层代码@Mapperpublic interface MessageMapper { //查询当前用户的会话列表,针对每个会话只返回一条最新的私信 List<Message> selectConversations(int userId, int offset, int limit); //查询当前用户会话数量 int selectConversationCount(int userId); //查询某个会

2021-03-04 21:39:56 373 2

原创 牛客网社区项目——p3.6添加评论

添加评论的编程思路DAO层在CommentMapper中添加插入评论的方法int insertComment(Comment comment);,在DiscussPostMapper中添加更新评论数量的方法int updateCommentCount(int id, int commentCount);,配置好各自对应的mapper文件。服务层在DiscussPostService中添加以下方法public int updateCommentCount(int id, int commentCou

2021-03-02 22:51:03 415

原创 牛客网社区项目——p3.5显示评论

编程思路如下先建立实体类Comment,代码:略DAO层代码@Mapperpublic interface CommentMapper { List<Comment> selectCommentsByEntity(int entityType, int entityId, int offset, int limit); int selectCountByEntity(int entityType, int entityId);}配置对应的comment-mapper

2021-03-02 22:32:44 278

原创 牛客网社区项目——p3.4事务管理

数据库保障事务的机制如下spring事务管理在业务层模拟某个业务,注册用户和自动发送新人报到帖这两个业务视作一个事务代码如下(两种方法):@Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED) public Object save1(){ //新增用户 User user = new User(); user.setU

2021-03-01 22:28:21 380

原创 牛客网社区项目——p3.3帖子详情

任务:点击帖子后显示帖子详情DAO层声明方法DiscussPost selectDiscussPostById(int id);配置好对应的mapper.xml文件service层定义方法public DiscussPost findDiscussPostById(int id){ return dicussPostMapper.selectDiscussPostById(id);}编写表现层代码@RequestMapping(path = "/detail/{discussP

2021-03-01 22:08:44 264 1

原创 牛客网社区项目——p3.2发布帖子

使用异步请求(AJAX),将增量更新呈现在页面上,不需要刷新整个页面(局部更新)导入fastjson包,该包可以输出json格式的数据传给浏览器,浏览器将其转换为JS对象,得到每一个key对应的值,实现前后端的交互。示例:使用jQuery发送AJAX首先服务器给浏览器返回的往往包含几部分的内容,例如给浏览器返回的编号、提示信息(成功或者失败之类)以及一些业务数据,根据这样的诉求,提炼一个方法:将这些内容封装成一个json对象,进而转换为json字符串。public static String get

2021-02-28 20:26:01 504

原创 牛客网社区项目——p3.1过滤敏感词

敏感词过滤器前缀树定义前缀树前缀树的定义只在,过滤敏感词当中用到,故将其定义为一个内部类//前缀树 private class TrieNode{ //关键词结束标识 private boolean isKeywordEnd = false; //当前节点的子节点(key是下级字符,value是下级节点) private Map<Character,TrieNode> subNodes = new HashMap&

2021-02-28 19:10:51 457

原创 牛客网社区项目——p2.9检查登录状态

登录和未登录的权限显然是不一致的,例如登录后可以进行账号的设置,而目前即便没有登录依旧可以通过直接输入网址的方式进入设置页面,显然这是不应该的。处理的方法是对特定的某某进行标注,再根据标注进行拦截/不拦截。使用拦截器——在方法前进行自定义注解拦截所有请求,只处理带有该注解的方法①自定义注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface LoginRequired {}②在需要拦截

2021-02-27 22:23:46 356

原创 牛客网社区项目——P2.8账号设置之上传文件

上传文件请求:必须是POST请求表单:enctype=“multipart/form-data”springmvc:通过MultipartFile处理上传文件开发步骤①访问账号设置页面前端部分,已写好**.html**文件②上传头像@RequestMapping(path = "/upload",method = RequestMethod.POST) public String uploadHeader(MultipartFile headerImage, Model model)

2021-02-27 22:02:55 287

原创 牛客网社区项目——2.7显示登录信息

拦截器示例以定义拦截器,实现HanderInterceptor①页面拦截器处理的是请求,属于表现层的逻辑,因此在Controller包下新建一个包Interceptor,在该包下新建一个AlphaInterceptor类,该类需实现HandleInterceptor接口@Componentpublic class AlphaInterceptor implements HandlerInterceptor { private static final Logger logger = Logg

2021-02-10 21:08:36 301

原创 牛客网社区项目——2.6开发登录退出功能

登录1.验证账号、密码验证码①首先将登录凭证封装成一个类LoginTicketpublic class LoginTicket { private int id; private int userId; private String ticket; private int status; private Date expired; ... }②在DAO包下新建LoginTicketMapper接口,定义与数据库的交互@Mapperpublic

2021-02-08 21:23:45 446

原创 牛客网社区开发项目——2.4会话管理

Http是无状态的,有会话的。简单来说即便是同一个浏览器向服务器发送多个请求,多个成功的请求之间是不存在练习的,这就带来了一个问题——用户没有办法在同一个网站中进行连续的交互。用Cookies可以解决这个问题,是用Cookies可以创建有联系的会话。浏览器访问服务器时,服务器会返回一个cookie给浏览器(在response header中可以找到),浏览器会自动保存cookie,下次访问服务器时,会将其带到request header中//cookie 示例 @RequestMapping(

2021-02-06 21:16:28 258

原创 牛客网社区开发项目——2.5如何生成验证码

①导入生成相关的包kaptcha<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version></dependency>这个包是一个普通包,spring boot并未对其做过整合,因此我们需要自行对其进行配置②写一个配置类Kaptch

2021-02-06 19:36:48 288

原创 牛客网社区项目——2.2&2.3开发注册功能

一、访问注册页面1.点击顶部区域链接,打开注册页面①建立一个Controller类LoginController@Controllerpublic class LoginController { @RequestMapping(path = "/register",method = RequestMethod.GET) public String getRegisterPage(){ return "/site/register"; }}②配置好对应的r

2021-02-05 22:34:49 558

原创 牛客网社区项目——2.1发送邮件

1.邮箱设置开启邮箱pop3/SMTP服务2.SpringMail①导入相关jar包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.3.7.RELEASE</version></dependency>②配置相

2021-02-04 23:27:04 628 1

原创 牛客网社区项目——1.7项目调试技巧&1.8版本控制

1.7标题项目调试技巧1.响应状态码含义常见的响应状态码:①以2开头的(最常见:200)状态响应都是成功响应②以3开头的(最常见:302)都是重定向什么是重定向?例如浏览器执行删除功能后,一般服务器需要向浏览器返回一个页面,常规的思路是在删除方法当中去调用查询方法但这样会使得两种两种方法之间产生依赖关系,耦合度变高,在编程当中应尽量避免,因此在实际中往往采用以下思路执行删除功能后,服务器给浏览器返回的不是一个页面,而是一个建议,当中包含一个路径,浏览器会自主地访问该路径。③以4开头的状态码

2021-02-02 22:12:12 473

原创 牛客网社区项目——1.6开发社区首页

1.6开发社区首页①在开发数据访问层DAO之前,先在eneity包下写一个实体类DisussPost,用来封装表里的数据。package com.nowcoder.community.entity;import java.util.Date;public class DiscussPost { private int id; private int userId; private String title; private String content; pr

2021-02-01 21:17:15 1831 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除