如何做响应式网站seo自动优化软件下载
目录
1.主页结构编辑
1.1 导航栏
1.2 正文部分
1.3 页脚部分
2.个人中心
2.1 获取用户信息
1.实现逻辑
2. 参数要求编辑
3.接口规范
4.实现流程
4.1 Mapper.xml
4.2 Mapper.java(dao层)
4.3 Service接口
4.4 Service实现
4.5 单元测试
4.6 Controller
编辑
4.7 API测试
4.8 修复返回值存在的缺陷
编辑
4.9 前端
5.退出登录
6.登录拦截器
1.主页结构
1.1 导航栏
1.2 正文部分
1.3 页脚部分
2.个人中心
2.1 获取用户信息
两种情况
1.实现逻辑
2. 参数要求
3.接口规范
4.实现流程
4.1 Mapper.xml
4.2 Mapper.java(dao层)
4.3 Service接口
4.4 Service实现
/*** 根据Id查询用户信息** @param id 用户Id* @return User对象*/@Overridepublic User selectById(Long id) {// 1.非空校验if(id == null) {// 打印日志log.warn(ResultCode.FAILED_PARAMS_VALIDATE.toString());// 抛出异常, 统一抛出 ApplicationExceptionthrow new ApplicationException(AppResult.failed(ResultCode.FAILED_LOGIN));}// 调用 DAO 查询数据库获取对象User user = userMapper.selectByPrimaryKey(id);return user;}
4.5 单元测试
@Testvoid selectById() {System.out.println(userService.selectById(1L));}
4.6 Controller
@ApiOperation("获取用户信息")@GetMapping("/info")public AppResult<User> getUserInfo (HttpServletRequest request,@ApiParam("用户ID") @RequestParam(value = "id", required = false) Long id) {User user = null;// 根据id的值来判断User对象的获取方式if(id == null) {// 1.如果id为空, 从session中获取当前登录的用户信息HttpSession session = request.getSession(false);if (session == null || session.getAttribute(AppConfig.USER_SESSION) == null) {return AppResult.failed(ResultCode.FAILED_FORBIDDEN);}// 从session中获取当前登录的用户信息user = (User)session.getAttribute(AppConfig.USER_SESSION);}else {// 2.如果id不为空, 从数据库中按Id查询出用户登录信息user = userService.selectById(id);}if (user == null) {return AppResult.failed(ResultCode.FAILED_USER_NOT_EXISTS);}// 返回正常结果return AppResult.success(user);}
4.7 API测试
4.8 修复返回值存在的缺陷
4.9 前端
5.退出登录
6.登录拦截器
创建登录拦截器
package com.example.forum.interceptor;import com.example.forum.config.AppConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;/*** Created with IntelliJ IDEA* Description 登录拦截器* User: 王杰* Date: 2025-06-15* Time: 13:08*/
@Component
public class LoginInterceptor implements HandlerInterceptor {@Value("{forum.login.url}")private String defaultURL;/*** 前置处理(对请求的预处理)* @param request* @param response* @param handler* @return true: 继续流程 <br/> false : 流程中断* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 获取 session 对象HttpSession session = request.getSession(false);// 判断session是否有效if (session != null && session.getAttribute(AppConfig.USER_SESSION) != null) {// 用户为已登陆状态 校验通过return true;}// 校验URL是否正确if(!defaultURL.startsWith("/")) {defaultURL = "/" + defaultURL;}// 校验不通过 跳转到登录页面response.sendRedirect(defaultURL);// 中断流程return false;}
}
注册拦截器:
package com.example.forum.interceptor;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import javax.annotation.Resource;/*** Created with IntelliJ IDEA* Description* User: 王杰* Date: 2025-06-15* Time: 14:34*/
// 表示一个配置类
@Configuration
public class AppInterceptorConfigurer implements WebMvcConfigurer {// 注入自定义的登录拦截器@Resourceprivate LoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 添加登录拦截器registry.addInterceptor(loginInterceptor) // 添加用户登录拦截器.addPathPatterns("/**") // 拦截所有请求.excludePathPatterns("/sign-in.html") // 排除登录HTML.excludePathPatterns("/sign-up.html") // 排除注册HTML.excludePathPatterns("/user/login") // 排除登录api接口.excludePathPatterns("/user/register") // 排除注册api接口.excludePathPatterns("/user/logout") // 排除退出api接口.excludePathPatterns("/swagger*/**") // 排除登录swagger下所有.excludePathPatterns("/v3*/**") // 排除登录v3下所有, 与swagger相关.excludePathPatterns("/dist/**") // 排除所有静态方法.excludePathPatterns("/image/**") //.excludePathPatterns("/js/**").excludePathPatterns("/**.ico");}
}
这下就可以达成 访问需要登陆的页面,如果没有登录就会返回登录页面。如果登录了就正常执行
,同时可以删除业务代码中相同逻辑代码,避免冗余代码。