大家好,我是兔子呀,今天我继续给大家撸这个SpringBoot日记本系统哈,非常不错的一个项目,学习javaweb编程必备。
目录
1.完成后的效果
2.后台逻辑
2.1 Controller控制器
2.2 Service服务类
3.前台页面
4.文件上传后台逻辑
本节完成内容:
1. 个人中心页面⭐
2.个人信息的修改⭐
3.SpringBoot文件上传和浏览⭐
1.完成后的效果字段不多,难点在于图片的上传。
2.后台逻辑 2.1 Controller控制器@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
UserService userService;
@Autowired
RedisServiceImpl redisServiceImpl;
String salt = "diary188";
......
@RequestMapping("update")
public Result update(@RequestBody User user){
userService.update(user);
return Result.success();
}
@RequestMapping("get")
public User get(){
return userService.getByUserId(StpUtil.getLoginIdAsLong());
}
}
update方法用于更新用户对象,get方法用来获取当前登录对象的信息。
2.2 Service服务类@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Autowired
RedisServiceImpl redisServiceImpl;
/**
* 根据用户名获取用户
* @param userName
* @return
*/
@Override
public User getByUserName(String userName) {
List users = userMapper.selectList(new QueryWrapper().eq("user_name", userName));
if(users.size() > 0){
return users.get(0);
}
return null;
}
/**
* 保存用户
* @param user
*/
@Override
public void save(User user) {
userMapper.insert(user);
}
@Override
public User getByUserId(long loginIdAsLong) {
return userMapper.selectById(loginIdAsLong);
}
@Override
public void update(User user) {
LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper = lambdaUpdateWrapper.set(User::getNickName, user.getNickName())
.set(User::getBirthday, user.getBirthday())
.set(User::getGender, user.getGender())
.set(User::getSignature, user.getSignature())
.set(User::getUpdateTime, DateUtil.now());
if(StrUtil.isNotEmpty(user.getFace())){
lambdaUpdateWrapper = lambdaUpdateWrapper.set(User::getFace,user.getFace());
}
lambdaUpdateWrapper.eq(User::getUid, StpUtil.getLoginIdAsLong());
userMapper.update(null,lambdaUpdateWrapper);
}
}
3.前台页面
前台页面主要用的就是layUI的form组件和文件上传组件。
主要代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
个人中心
4.文件上传后台逻辑
配置一下文件上传的路径和预览URL:
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(new String[] { "/upload/**" }).addResourceLocations(new String[] { "file:C:/upload/" });
}
}
配置文件也要改
system:
filepath: c:\upload
urlpath: http://localhost/upload/
最后是文件上传的代码:
@RestController
public class UploadController {
@Autowired
AppConfig appConfig;
@RequestMapping({"/upload"})
public Map upload(@RequestParam("file") MultipartFile file) {
String fileName = "";
if (!file.isEmpty()){
/**
* 获取文件后缀名
*/
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
if(suffix.equals(".PNG") || suffix.equals(".png") || suffix.equals(".jpg") || suffix.equals(".JPG") ) {
}else{
throw new BizException(ExceptionCodeEnum.ERROR.setDesc("非法文件格式!"));
}
/**
* 文件名
*/
fileName = System.currentTimeMillis() + suffix;
/**
* 返回的文件路径
*/
String fileNameForReturn = "/"+ StpUtil.getLoginIdAsLong() + "/" + fileName;
/**
* 文件的保存路径
*/
String saveFilePath = this.appConfig.getFilepath() + "/"+StpUtil.getLoginIdAsLong();
/**
* 父级目录若不存在就创建
*/
if(!new File(saveFilePath).exists()) {
new File(saveFilePath).mkdir();
}
String saveFileName = saveFilePath + "/" + fileName;
File dest = new File(saveFileName);
try {
/**
* 拷贝文件
*/
file.transferTo(dest);
return new HashMap(){{
put("file",fileNameForReturn);
}} ;
} catch (IOException e) {
e.printStackTrace();
throw new BizException(ExceptionCodeEnum.ERROR.setDesc("系统异常!"));
}
}
return null;
}
}
搞定!
⭐⭐⭐⭐⭐⭐⭐ 本章完,愿有所收获,一路长虹,祝你也祝我。⭐⭐⭐⭐⭐⭐⭐
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)