基于javaweb+mysql的ssm+maven个人博客管理系统(java+ssm+js+jsp+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven个人博客管理系统(java+ssm+js+jsp+mysql)
项目介绍
管理员角色包含以下功能: 发表文章,查看文章,类别管理,添加类别,个人信息管理,评论管理,评论审核等功能。
用户角色包含以下功能: 首页,博客详情,文章分类,评论等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:HTML+CSS+JavaScript+jsp
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
/**
* 主页Controller
*/
@Controller
public class IndexController {
@Resource
private BlogService blogService;
@Resource
private BloggerService bloggerService;
ResponseUtils.writeJson(response, jsonObj.toString());
return;
}
int result = 0;
Integer userId = user.getId();
if (userId == null) {
userId = userMapper.insertSelective(user);
}
comment.setBlogId(blogId);
comment.setUserId(userId);
comment.setUserName(user.getUserName());
comment.setContent(StringEscapeUtils.escapeHtml4(comment.getContent()));
result = commentService.add(comment);
jsonObj.put("success", result > 0);
ResponseUtils.writeJson(response, jsonObj.toString());
}
}
@Controller
@RequestMapping("/link")
public class LinkAdminController {
@Resource
private LinkService linkService;
@RequestMapping("/list")
public String list(Model model) {
model.addAttribute("linkList", linkService.getLinkList());
return "link/list";
}
@RequestMapping("/toAdd")
public String toAdd() {
return "link/add";
}
@RequestMapping("/add")
@Controller
@RequestMapping("/blogger")
public @Slf4j class BloggerAdminController {
@Resource
private CommentService commentService;
@Resource
private BloggerService bloggerService;
@RequestMapping("/toModifyInfo")
public String toModifyInfo(Model model) {
model.addAttribute("blogger", bloggerService.find());
return "blogger/modifyInfo";
}
@RequestMapping("/toModifyPassword")
public String toModifyPassword() {
return "blogger/modifyPassword";
}
@RequestMapping("/modifyInfo")
public void modifyInfo(Blogger blogger,
@RequestParam(value = "img", required = false) MultipartFile file,
Model model) throws Exception {
if (file != null) { //上传图片
// 获取原始文件名
String fileName = file.getOriginalFilename();
private BlogTypeService blogTypeService;
/**
* 获取博客详细信息
* @param id
* @param model
* @param request
* @return
*/
@RequestMapping("/articles/{id}")
public String detail(@PathVariable Integer id, Model model, HttpServletRequest request){
Blog blog = blogService.findById(id);
if (Objects.isNull(blog)) {
return "blog/detail";
}
// 文章浏览数加一
blog = blogService.increaseReading(id);
String desc = StringUtils.escapeHtml(blog.getSummary());
model.addAttribute("blog", blog);
model.addAttribute("description", desc.length() > 100 ? desc.substring(0, 100) : desc);
String keyword = blog.getKeyword();
if(!StringUtils.isEmpty(keyword)){
String[] keywords = keyword.split("\\s+");
model.addAttribute("keywords", Arrays.asList(keywords));
model.addAttribute("pageKeywords", String.join(",", keywords));
}
Map<String,Object> map = new HashMap<String,Object>(2);
map.put("blogId", id);
map.put("isPass", 1);
//获取评论列表
model.addAttribute("commentList", commentService.getCommentList(map));
model.addAttribute("pageCode", this.genLastandNextBlogCode(blogService.getLastBlog(id),
blogService.getNextBlog(id),request.getContextPath()));
return "blog/detail";
}
/**
* 获取分类博客列表
* @param id
* @param model
* @param request
* @return
*/
@RequestMapping
public String typeOrMonth(@RequestParam(value="cat",required=false) Integer typeId,
@RequestParam(required = false) String month,
@RequestParam(defaultValue = "1") Integer page, Model model,HttpServletRequest request){
Map<String, Object> map = new HashMap<String, Object>(4);
map.put("typeId", typeId);
map.put("releaseDate", month);
int totalCount = blogService.getCount(map);
int pageSize = Constants.FRONT_PAGE_SIZE;
PageBean pageBean = new PageBean(totalCount, page, pageSize);
@Controller
@RequestMapping("/comment")
public class CommentAdminController {
@Resource
private CommentService commentService;
@Resource
private BlogService blogService;
@RequestMapping("/list")
public String list(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = Constants.BACK_PAGE_SIZE + 1 + "") Integer pageSize,
String firstDate, String secondDate, String userName,
Boolean isPass, Model model, HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>(6);
params.put("firstDate", firstDate);
params.put("secondDate", secondDate);
params.put("userName", userName);
params.put("isPass", isPass);
int totalCount = commentService.getCount(params);
PageBean pageBean = new PageBean(totalCount, page, pageSize);
params.put("start", pageBean.getStart());
params.put("size", pageSize);
List<Comment> commentList = commentService.getCommentList(params);
commentList.stream().forEach(comment -> {
String content = comment.getContent();
if (content.length() > 60) {
comment.setContent(content.substring(0,60) + "...");
}
});
model.addAttribute("pagination", pageBean);
StringBuilder param = new StringBuilder(); // 分页查询参数
param.append(StringUtils.isEmpty(firstDate) ? "" : "&firstDate=" + firstDate);
param.append(StringUtils.isEmpty(secondDate) ? "" : "&secondDate=" + secondDate);
param.append(StringUtils.isEmpty(userName) ? "" : "&userName=" + userName);
param.append(isPass == null ? "" : "&isPass=" + isPass);
map.put("secondDate", secondDate);
int totalCount = blogService.getCount(map);
PageBean pageBean = new PageBean(totalCount, page, pageSize);
map.put("start", pageBean.getStart());
map.put("size", pageSize);
model.addAttribute("pagination", pageBean);
List<BlogType> blogTypeList = blogTypeService.getTypeList();
model.addAttribute("blogTypeList",blogTypeList);
StringBuilder param = new StringBuilder(); // 分页查询参数
param.append(StringUtils.isEmpty(title) ? "" : "title=" + title);
param.append(StringUtils.isEmpty(firstDate) ? "" : "&firstDate=" + firstDate);
param.append(StringUtils.isEmpty(secondDate) ? "" : "&secondDate=" + secondDate);
param.append(typeId == null ? "" : "&typeId=" + typeId);
String pageCode = PageUtils.genPagination(request.getContextPath() + "/blog/list.do",
pageBean, param.toString());
model.addAttribute("pageCode", pageCode);
model.addAttribute("entry", map);
model.addAttribute("blogList", blogService.getBlogList(map));
return "blog/list";
}
@RequestMapping("/toAdd")
public String toAdd(Model model) {
model.addAttribute("blogTypeList", blogTypeService.getTypeList());
return "blog/add";
}
@RequestMapping("/toUpdate")
public String toUpdate(Integer id, Model model) {
model.addAttribute("blogTypeList", blogTypeService.getTypeList());
Blog blog = blogService.findById(id);
model.addAttribute("blog", blog);
BlogType blogType = blog.getBlogType();
if(blogType != null){
model.addAttribute("typeId", blogType.getTypeId());
}
return "blog/update";
}
@RequestMapping("/add")
public void add(Blog blog, @RequestParam(value = "img") MultipartFile file,
Model model) throws Exception {
// 获取原始文件名
public class CommentController {
@Resource
private UserMapper userMapper;
@Resource
private CommentService commentService;
/**
* 用户评论
* @param comment
* @param user
* @param response
*/
@RequestMapping("/save")
public void save(String vCode, Integer blogId, Comment comment, User user,
HttpServletResponse response, HttpSession session) {
String validateCode = (String) session.getAttribute(Constants.VALIDATE_CODE);
JSONObject jsonObj = new JSONObject();
if (StringUtils.isEmpty(validateCode) || !validateCode.equalsIgnoreCase(vCode)) {
jsonObj.put("success", false);
jsonObj.put("errorInfo", "验证码错误");
ResponseUtils.writeJson(response, jsonObj.toString());
return;
}
int result = 0;
Integer userId = user.getId();
if (userId == null) {
userId = userMapper.insertSelective(user);
}
comment.setBlogId(blogId);
comment.setUserId(userId);
comment.setUserName(user.getUserName());
comment.setContent(StringEscapeUtils.escapeHtml4(comment.getContent()));
result = commentService.add(comment);
jsonObj.put("success", result > 0);
ResponseUtils.writeJson(response, jsonObj.toString());
}
}
// 获取原始文件名
String fileName = file.getOriginalFilename();
int index = fileName.indexOf(".");
String imageUrl = null;
String imagePath = DateUtils.getTimeStrForImage();
if(index != -1){
//生成新文件名
imageUrl = imagePath + fileName.substring(index);
log.info("update {}", imagePath);
handleFileUpload(file,imageUrl);
blog.setImage(imageUrl);
}
}
//更新博客及索引
int result = blogService.update(blog);
model.addAttribute("msg", result > 0 ? "保存成功" : "保存失败");
}
@RequestMapping("/delete")
public String delete(Integer id) throws IOException {
// 删除博客、索引及评论
blogService.delete(id);
return "redirect:/blog/list.do";
}
@RequestMapping("/deletes")
public String deletes(String ids) throws IOException {
String[] idArr = org.springframework.util.StringUtils.commaDelimitedListToStringArray(ids);
int len = idArr.length;
Integer[] blogIds = new Integer[len];
for (int i = 0; i < len; i++) {
blogIds[i] = Integer.parseInt(idArr[i]);
}
blogService.batchDelete(blogIds);
return "redirect:/blog/list.do";
}
private void handleFileUpload(MultipartFile file, String imageUrl) {
try (InputStream is = file.getInputStream()) {
// 获取输入流
String filePath = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)+Constants.COVER_DIR + imageUrl;
File dir = new File(filePath.substring(0, filePath.lastIndexOf("/")));
//判断上传目录是否存在
if (!dir.exists()) {
dir.mkdirs();
}
@RequestMapping("/list")
public String list(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = Constants.BACK_PAGE_SIZE + 1 + "") Integer pageSize,
String firstDate, String secondDate, String userName,
Boolean isPass, Model model, HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>(6);
params.put("firstDate", firstDate);
params.put("secondDate", secondDate);
params.put("userName", userName);
params.put("isPass", isPass);
int totalCount = commentService.getCount(params);
PageBean pageBean = new PageBean(totalCount, page, pageSize);
params.put("start", pageBean.getStart());
params.put("size", pageSize);
List<Comment> commentList = commentService.getCommentList(params);
commentList.stream().forEach(comment -> {
String content = comment.getContent();
if (content.length() > 60) {
comment.setContent(content.substring(0,60) + "...");
}
});
model.addAttribute("pagination", pageBean);
StringBuilder param = new StringBuilder(); // 分页查询参数
param.append(StringUtils.isEmpty(firstDate) ? "" : "&firstDate=" + firstDate);
param.append(StringUtils.isEmpty(secondDate) ? "" : "&secondDate=" + secondDate);
param.append(StringUtils.isEmpty(userName) ? "" : "&userName=" + userName);
param.append(isPass == null ? "" : "&isPass=" + isPass);
String pageCode = PageUtils.genPagination(request.getContextPath() + "/comment/list.do",
pageBean, param.toString());
model.addAttribute("pageCode", pageCode);
model.addAttribute("entry", params);
model.addAttribute("commentList", commentList);
return "comment/list";
}
@RequestMapping("/toAdd")
public String toAdd() {
return "comment/add";
}
}
//只删除类别
@RequestMapping("/delete")
public String delete(Integer id) {
blogTypeService.delete(id);
return "redirect:/blogType/list.do";
}
//删除的同时将相关博客的类别置为默认分类
@RequestMapping("/batch_delete")
public String batchDelete(Integer id) throws IOException {
blogTypeService.batchDelete(id);
return "redirect:/blogType/list.do";
}
}
@Controller
@RequestMapping("/comment")
public class CommentController {
@Resource
private UserMapper userMapper;
@Resource
private CommentService commentService;
/**
* 用户评论
* @param comment
* @param user
* @param response
*/
@RequestMapping("/save")
public void save(String vCode, Integer blogId, Comment comment, User user,
HttpServletResponse response, HttpSession session) {
String validateCode = (String) session.getAttribute(Constants.VALIDATE_CODE);
JSONObject jsonObj = new JSONObject();
if (StringUtils.isEmpty(validateCode) || !validateCode.equalsIgnoreCase(vCode)) {
jsonObj.put("success", false);
jsonObj.put("errorInfo", "验证码错误");
ResponseUtils.writeJson(response, jsonObj.toString());
return;
}
int result = 0;
month = String.format("%s年%s月", month.substring(0, 4), month.substring(4));
model.addAttribute("title", "文章存档 - " + month);
model.addAttribute("pageTitle", month + " - 文章存档 - Promising的博客" );
}
return "blog/list";
}
/**
* 获取下一篇博客和下一篇博客分页代码
* @param lastBlog
* @param nextBlog
* @return
*/
private String genLastandNextBlogCode(Blog lastBlog, Blog nextBlog, String projectContext) {
StringBuilder pageCode = new StringBuilder();
if (lastBlog == null || lastBlog.getId() == null) {
pageCode.append("<p>上一篇:没有了</p>");
} else {
pageCode.append("<p>上一篇:<a href='" + projectContext + "/blog/articles/"
+ lastBlog.getId() + ".shtml'>" + lastBlog.getTitle() + "</a></p>");
}
if (nextBlog == null || nextBlog.getId() == null) {
pageCode.append("<p>下一篇:没有了</p>");
} else {
pageCode.append("<p>下一篇:<a href='" + projectContext + "/blog/articles/"
+ nextBlog.getId() + ".shtml'>" + nextBlog.getTitle() + "</a></p>");
}
return pageCode.toString();
}
}
/**
* 获取分类博客列表
* @param id
* @param model
* @param request
* @return
*/
@RequestMapping
public String typeOrMonth(@RequestParam(value="cat",required=false) Integer typeId,
@RequestParam(required = false) String month,
@RequestParam(defaultValue = "1") Integer page, Model model,HttpServletRequest request){
Map<String, Object> map = new HashMap<String, Object>(4);
map.put("typeId", typeId);
map.put("releaseDate", month);
int totalCount = blogService.getCount(map);
int pageSize = Constants.FRONT_PAGE_SIZE;
PageBean pageBean = new PageBean(totalCount, page, pageSize);
map.put("start", pageBean.getStart());
map.put("size", pageSize);
List<Blog> blogList = blogService.getBlogList(map);
//去除摘要中的html标签,防止浏览器解析
blogList.forEach(blog -> blog.setSummary(StringUtils.escapeHtml(blog.getSummary())));
model.addAttribute("blogList", blogList);
// 分页参数
StringBuffer param = new StringBuffer();
param.append(typeId == null ? "" : "cat=" + typeId);
param.append(StringUtils.isEmpty(month) ? "" : "month=" + month);
String pageCode = PageUtils.genPagination(request.getContextPath() + "/blog.shtml",
pageBean, param.toString());
model.addAttribute("pageCode", pageCode);
model.addAttribute("totalCount", totalCount);
if (typeId != null) {
String typeName = blogTypeService.findById(typeId).getTypeName();
model.addAttribute("title", "文章分类 - " + typeName);
model.addAttribute("pageTitle", typeName + " - 文章分类 - Promising的博客" );
}
if (StringUtils.isNotEmpty(month)) {
month = String.format("%s年%s月", month.substring(0, 4), month.substring(4));
model.addAttribute("title", "文章存档 - " + month);
model.addAttribute("pageTitle", month + " - 文章存档 - Promising的博客" );
}
return "blog/list";
}
private void handleFileUpload(MultipartFile file,String imageUrl) {
try (InputStream is = file.getInputStream()) {
// 获取输入流
String filePath = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)+Constants.AVATAR_DIR + imageUrl;
File dir = new File(filePath.substring(0, filePath.lastIndexOf("/")));
//判断上传目录是否存在
if (!dir.exists()) {
dir.mkdirs();
}
try (FileOutputStream fos = new FileOutputStream(new File(filePath))) {
byte[] buffer = new byte[1024];
int len = 0;
// 读取输入流中的内容
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
}
} catch (Exception e) {
log.error("图片上传失败", e);
}
}
}
List<Blog> blogList = blogService.getBlogList(map);
//去除摘要中的html标签,防止浏览器解析
blogList.forEach(blog -> blog.setSummary(StringUtils.escapeHtml(blog.getSummary())));
model.addAttribute("blogList", blogList);
// 分页参数
StringBuffer param = new StringBuffer();
param.append(typeId == null ? "" : "cat=" + typeId);
param.append(StringUtils.isEmpty(month) ? "" : "month=" + month);
String pageCode = PageUtils.genPagination(request.getContextPath() + "/blog.shtml",
pageBean, param.toString());
model.addAttribute("pageCode", pageCode);
model.addAttribute("totalCount", totalCount);
if (typeId != null) {
String typeName = blogTypeService.findById(typeId).getTypeName();
model.addAttribute("title", "文章分类 - " + typeName);
model.addAttribute("pageTitle", typeName + " - 文章分类 - Promising的博客" );
}
if (StringUtils.isNotEmpty(month)) {
month = String.format("%s年%s月", month.substring(0, 4), month.substring(4));
model.addAttribute("title", "文章存档 - " + month);
model.addAttribute("pageTitle", month + " - 文章存档 - Promising的博客" );
}
return "blog/list";
}
/**
* 获取下一篇博客和下一篇博客分页代码
* @param lastBlog
* @param nextBlog
* @return
*/
private String genLastandNextBlogCode(Blog lastBlog, Blog nextBlog, String projectContext) {
StringBuilder pageCode = new StringBuilder();
if (lastBlog == null || lastBlog.getId() == null) {
pageCode.append("<p>上一篇:没有了</p>");
} else {
pageCode.append("<p>上一篇:<a href='" + projectContext + "/blog/articles/"
+ lastBlog.getId() + ".shtml'>" + lastBlog.getTitle() + "</a></p>");
}
if (nextBlog == null || nextBlog.getId() == null) {
pageCode.append("<p>下一篇:没有了</p>");
} else {
pageCode.append("<p>下一篇:<a href='" + projectContext + "/blog/articles/"
+ nextBlog.getId() + ".shtml'>" + nextBlog.getTitle() + "</a></p>");
}
String pageCode = PageUtils.genPagination(request.getContextPath() + "/index.shtml", pageBean, "");
model.addAttribute("pageCode", pageCode);
model.addAttribute("totalCount", totalCount);
model.addAttribute("title", "我的文章");
ServletContext application = request.getServletContext();
List<BlogType> blogTypeList = blogTypeService.getTypeList();
blogTypeList.forEach(blogType -> {
Map<String, Object> paramMap = new HashMap<String, Object>(1);
paramMap.put("typeId", blogType.getTypeId());
blogType.setBlogCount(blogService.getCount(paramMap));
});
application.setAttribute("blogTypeList", blogTypeList);
application.setAttribute("dateRankList", blogService.getByDate());
application.setAttribute("readingRankList", blogService.getTopReading());
application.setAttribute("reviewRankList", blogService.getTopReview());
application.setAttribute("blogger", bloggerService.find());
application.setAttribute("linkList", linkService.getLinkList());
application.setAttribute("pageTitle", Constants.DEFAULT_TITLE);
application.setAttribute("pageKeywords", Constants.DEFAULT_KEYWORDS);
application.setAttribute("description", Constants.DEFAULT_DESCRIPTION);
return "blog/list";
}
@RequestMapping("/{category}")
public String life(@PathVariable String category, @RequestParam(defaultValue = "1") Integer page,
Model model, HttpServletRequest request)
throws Exception {
String typeName = "";
switch (category) {
case Constants.LIFE_CATEGORY_EN:
typeName = Constants.LIFE_CATEGORY; break;
case Constants.NEWS_CATEGORY_EN:
typeName = Constants.NEWS_CATEGORY; break;
default: break;
}
Integer typeId = blogTypeService.getIdByName(typeName);
Map<String, Object> map = new HashMap<String, Object>(3);
map.put("typeId", typeId);
int totalCount = blogService.getCount(map);
int pageSize = Constants.FRONT_PAGE_SIZE;
PageBean pageBean = new PageBean(totalCount, page, pageSize);
pageBean.setTotalCount(totalCount);
map.put("start", pageBean.getStart());
map.put("size", pageSize);
List<Blog> blogList = blogService.getBlogList(map);
Map<String, Object> params = new HashMap<String, Object>(6);
params.put("firstDate", firstDate);
params.put("secondDate", secondDate);
params.put("userName", userName);
params.put("isPass", isPass);
int totalCount = commentService.getCount(params);
PageBean pageBean = new PageBean(totalCount, page, pageSize);
params.put("start", pageBean.getStart());
params.put("size", pageSize);
List<Comment> commentList = commentService.getCommentList(params);
commentList.stream().forEach(comment -> {
String content = comment.getContent();
if (content.length() > 60) {
comment.setContent(content.substring(0,60) + "...");
}
});
model.addAttribute("pagination", pageBean);
StringBuilder param = new StringBuilder(); // 分页查询参数
param.append(StringUtils.isEmpty(firstDate) ? "" : "&firstDate=" + firstDate);
param.append(StringUtils.isEmpty(secondDate) ? "" : "&secondDate=" + secondDate);
param.append(StringUtils.isEmpty(userName) ? "" : "&userName=" + userName);
param.append(isPass == null ? "" : "&isPass=" + isPass);
String pageCode = PageUtils.genPagination(request.getContextPath() + "/comment/list.do",
pageBean, param.toString());
model.addAttribute("pageCode", pageCode);
model.addAttribute("entry", params);
model.addAttribute("commentList", commentList);
return "comment/list";
}
@RequestMapping("/toAdd")
public String toAdd() {
return "comment/add";
}
@RequestMapping("/detail")
public String detail(Integer id,Model model){
model.addAttribute("comment", commentService.findById(id));
return "comment/detail";
}
//评论审核
@Resource
private BlogTypeService blogTypeService;
@Resource
private BlogService blogService;
@RequestMapping("/list")
public String list(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = Constants.BACK_PAGE_SIZE + 3 + "") Integer pageSize,
Model model, HttpServletRequest request) {
int totalCount = blogTypeService.getCount();
PageBean pageBean = new PageBean(totalCount, page, pageSize);
Map<String, Object> params = new HashMap<>(2);
params.put("start", pageBean.getStart());
params.put("size", pageSize);
List<BlogType> blogTypeList = blogTypeService.getTypeList(params);
blogTypeList.forEach(blogType -> {
Map<String, Object> types = new HashMap<>(1);
types.put("typeId", blogType.getTypeId());
Integer blogCount = blogService.getCount(types);
blogType.setBlogCount(blogCount);
});
model.addAttribute("pagination", pageBean);
String targetUrl = request.getContextPath() + "/blogType/list.do";
String pageCode = PageUtils.genPagination(targetUrl, pageBean, "");
model.addAttribute("pageCode", pageCode);
model.addAttribute("entry", params);
model.addAttribute("blogTypeList", blogTypeList);
return "blogType/list";
}
@RequestMapping("/toAdd")
public String toAdd() {
return "blogType/add";
}
@RequestMapping("/toUpdate")
public String toUpdate(Integer id,Model model) {
model.addAttribute("blogType", blogTypeService.findById(id));
return "blogType/update";
}
@RequestMapping("/add")
public void add(BlogType blogType,Model model) {
int result = blogTypeService.add(blogType);
model.addAttribute("msg", result > 0 ? "保存成功" : "保存失败");
}
@RequestMapping("/update")
public void update(BlogType blogType,Model model) {
int result = blogTypeService.update(blogType);
model.addAttribute("msg", result > 0 ? "保存成功" : "保存失败");