因为是一般用户,所以导航有的功能是:操作属于用户的文章,写文章,操作属于用户的分类,操作属于用户的标签,更改用户自己信息,对自己下文章的评论进行操作。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<link rel="shortcut icon" href="${pageContext.request.contextPath}/img/logo.png">
<title>
${options.optionSiteTitle}用户后台
<rapid:block name="title"></rapid:block>
</title>
<link rel="stylesheet" href="/plugin/layui/css/layui.css">
<link rel="stylesheet" href="/css/back.css">
<link rel="stylesheet" href="/plugin/font-awesome/css/font-awesome.min.css">
<rapid:block name="header-style"></rapid:block>
<rapid:block name="header-script"></rapid:block>
</head>
<body>
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo"><a href="/genUser" style="color:#009688;">
${options.optionSiteTitle}用户后台
</a>
</div>
<!-- 头部区域(可配合layui已有的水平导航) -->
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item"><a href="/" target="_blank">前台</a></li>
</ul>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item">
<a href="javascript:;">
<img src="${sessionScope.user.userAvatar}" class="layui-nav-img">
${sessionScope.user.userName}
</a>
<dl class="layui-nav-child">
<dd><a href="/genUser/user/profile">基本资料</a></dd>
</dl>
</li>
<li class="layui-nav-item">
<a href="/admin/logout">退出</a>
</li>
</ul>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">文章</a>
<dl class="layui-nav-child">
<dd><a href="/genUser/article">全部文章</a></dd>
<dd><a href="/genUser/article/insert">写文章</a></dd>
<dd><a href="/genUser/category">全部分类</a></dd>
<dd><a href="/genUser/tag">全部标签</a></dd>
</dl>
</li>
<li class="layui-nav-item">
<a href="/genUser/comment">
评论
</a>
</li>
<li class="layui-nav-item">
<a class="" href="javascript:;">
用户
</a>
<dl class="layui-nav-child">
<dd><a href="/genUser/user/profile">用户信息</a></dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="layui-body">
<!-- 内容主体区域 -->
<div style="padding: 15px;">
<rapid:block name="content">
</rapid:block>
</div>
</div>
<div class="layui-footer">
<!-- 底部固定区域 -->
© <a href="https://blog.csdn.net/wyfvv">努力努力要努力博客</a>
</div>
</div>
<script src="/js/jquery.min.js"></script>
<script src="/plugin/layui/layui.all.js"></script>
<script src="/js/back.js"></script>
<rapid:block name="footer-script">
</rapid:block>
<script>
//给文本编辑器的iframe引入代码高亮的css
$("iframe").contents().find("head").append("<link rel=\"stylesheet\" href=\"/css/highlight.css\">\n");
</script>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<c:if test="${pageInfo.pages > 1}">
<%--分页 start--%>
<nav class="navigation pagination" role="navigation">
<div class="nav-links">
<c:choose>
<c:when test="${pageInfo.pages <= 3 }">
<c:set var="begin" value="1"/>
<c:set var="end" value="${pageInfo.pages }"/>
</c:when>
<c:otherwise>
<c:set var="begin" value="${pageInfo.pageNum-1 }"/>
<c:set var="end" value="${pageInfo.pageNum + 2}"/>
<c:if test="${begin < 2 }">
<c:set var="begin" value="1"/>
<c:set var="end" value="3"/>
</c:if>
<c:if test="${end > pageInfo.pages }">
<c:set var="begin" value="${pageInfo.pages-2 }"/>
<c:set var="end" value="${pageInfo.pages }"/>
</c:if>
</c:otherwise>
</c:choose>
<%--上一页 --%>
<c:choose>
<c:when test="${pageInfo.pageNum eq 1 }">
<%--当前页为第一页,隐藏上一页按钮--%>
</c:when>
<c:otherwise>
<a class="page-numbers"
href="${pageUrlPrefix}=${pageInfo.pageNum-1}">
<i class="layui-icon"></i>
</a>
</c:otherwise>
</c:choose>
<%--显示第一页的页码--%>
<c:if test="${begin >= 2 }">
<a class="page-numbers" href="${pageUrlPrefix}=1">1</a>
</c:if>
<%--显示点点点--%>
<c:if test="${begin > 2 }">
<span class="page-numbers dots">…</span>
</c:if>
<%--打印 页码--%>
<c:forEach begin="${begin }" end="${end }" var="i">
<c:choose>
<c:when test="${i eq pageInfo.pageNum }">
<a class="page-numbers current">${i}</a>
</c:when>
<c:otherwise>
<a class="page-numbers" href="${pageUrlPrefix}=${i}">${i}</a>
</c:otherwise>
</c:choose>
</c:forEach>
<%-- 显示点点点 --%>
<c:if test="${end < pageInfo.pages-1 }">
<span class="page-numbers dots">…</span>
</c:if>
<%-- 显示最后一页的数字 --%>
<c:if test="${end < pageInfo.pages }">
<a href="${pageUrlPrefix}=${pageInfo.pages}">
${pageInfo.pages}
</a>
</c:if>
<%--下一页 --%>
<c:choose>
<c:when test="${pageInfo.pageNum eq pageInfo.pages }">
<%--到了尾页隐藏,下一页按钮--%>
</c:when>
<c:otherwise>
<a class="page-numbers"
href="${pageUrlPrefix}=${pageInfo.pageNum+1}">
<i class="layui-icon"></i>
</a>
</c:otherwise>
</c:choose>
</div>
</nav>
<%--分页 end--%>
</c:if>
文章列表显示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 文章列表
</rapid:override>
<rapid:override name="header-style">
<style>
/*覆盖 layui*/
.layui-input {
display: inline-block;
width: 33.333% !important;
}
.layui-input-block {
margin: 0px 10px;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a><cite>文章列表</cite></a>
</span>
</blockquote>
<div class="layui-tab layui-tab-card">
<form id="articleForm" method="post">
<input type="hidden" name="currentUrl" id="currentUrl" value="">
<table class="layui-table">
<colgroup>
<col width="300">
<col width="150">
<col width="100">
<col width="150">
<col width="100">
<col width="50">
</colgroup>
<thead>
<tr>
<th>标题</th>
<th>所属分类</th>
<th>状态</th>
<th>发布时间</th>
<th>操作</th>
<th>id</th>
</tr>
</thead>
<tbody>
<c:forEach items="${pageInfo.list}" var="a">
<tr>
<td>
<a href="/article/${a.articleId}"
target="_blank">
${a.articleTitle}
</a></td>
<td>
<c:forEach items="${a.categoryList}" var="c">
<a href="/category/${c.categoryId}"
target="_blank">${c.categoryName}</a>
</c:forEach>
</td>
<td>
<c:choose>
<c:when test="${a.articleStatus == 1}">
<a href="/genUser/article?status=1">
<span style="color:#5FB878;">已发布</span>
</a>
</c:when>
<c:otherwise>
<a href="/genUser/article?status=0">
<span style="color:#FF5722;">草稿</span>
</a>
</c:otherwise>
</c:choose>
</td>
<td>
<fmt:formatDate value="${a.articleCreateTime}"
pattern="yyyy-MM-dd HH:mm:ss"/>
</td>
<td>
<a href="/genUser/article/edit/${a.articleId}"
class="layui-btn layui-btn-mini">编辑</a>
<a href="javascript:void(0)"
onclick="deleteByArticleId(${a.articleId})"
class="layui-btn layui-btn-danger layui-btn-mini">删除</a>
</td>
<td>${a.articleId}</td>
</tr>
</c:forEach>
</tbody>
</table>
</form>
<%@ include file="../Public/paging.jsp" %>
</div>
</rapid:override>
<rapid:override name="footer-script">
<script>
function deleteByArticleId(id) {
if(confirmDelete()==true){
$.ajax({
async: false,
type: "POST",
url:'/genUser/article/delete/'+id,
contentType : "application/x-www-form-urlencoded; charset=utf-8",
dataType: "text",
complete:function () {
window.location.reload();
}
})
}
}
</script>
</rapid:override>
<%@ include file="../Public/framework.jsp" %>
添加文章:
<%--保留此处 start--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<%--保留此处 end--%>
<rapid:override name="title">
- 新建文章
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a href="/genUser/article">文章列表</a>
<a><cite>添加文章</cite></a>
</span>
</blockquote>
<form class="layui-form" method="post" id="myForm" action="/genUser/article/insertSubmit">
<div class="layui-form-item">
<label class="layui-form-label">标题 <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-block">
<input type="text" name="articleTitle" lay-verify="title" id="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容 <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-block">
<textarea class="layui-textarea layui-hide" name="articleContent" lay-verify="content" id="content"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类 <span style="color: #FF5722; ">*</span> </label>
<div class="layui-input-inline">
<select name="articleParentCategoryId" id="articleParentCategoryId" lay-filter="articleParentCategoryId" required>
<option value="" selected="">一级分类</option>
<c:forEach items="${categoryList}" var="c">
<c:if test="${c.categoryPid==0}">
<option value="${c.categoryId}">${c.categoryName}</option>
</c:if>
</c:forEach>
</select>
</div>
<div class="layui-input-inline">
<select name="articleChildCategoryId" id="articleChildCategoryId">
<option value="" selected>二级分类</option>
</select>
</div>
</div>
<div class="layui-form-item" pane="">
<label class="layui-form-label">标签</label>
<div class="layui-input-block">
<c:forEach items="${tagList}" var="t">
<input type="checkbox" name="articleTagIds" lay-skin="primary" title="${t.tagName}" value="${t.tagId}">
</c:forEach>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="articleStatus" value="1" title="发布" checked>
<input type="radio" name="articleStatus" value="0" title="草稿" >
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary" onclick="getCateIds()">重置</button>
</div>
</div>
<blockquote class="layui-elem-quote layui-quote-nm">
温馨提示:<br>
1、文章内容的数据表字段类型为MEDIUMTEXT,每篇文章内容请不要超过500万字 <br>
2、写文章之前,请确保标签和分类存在,否则可以先新建;请勿刷新页面,博客不会自动保存 <br>
3、插入代码前,可以点击 <a href="https://c.runoob.com/front-end/5536" target="_blank">代码在线高亮</a>,将代码转成HTML格式
</blockquote>
</form>
</rapid:override>
<rapid:override name="footer-script">
<script>
layui.use(['form', 'layedit', 'laydate'], function() {
var form = layui.form
, layer = layui.layer
, layedit = layui.layedit
, laydate = layui.laydate;
//上传图片,必须放在 创建一个编辑器前面
layedit.set({
uploadImage: {
url: '/admin/upload/img' //接口url
,type: 'post' //默认post
}
});
//创建一个编辑器
var editIndex = layedit.build('content',{
height:350,
}
);
//自定义验证规则
form.verify({
title: function (value) {
if (value.length < 5) {
return '标题至少得5个字符啊';
}
}
, pass: [/(.+){6,12}$/, '密码必须6到12位']
, content: function (value) {
layedit.sync(editIndex);
}
});
layedit.build('content', {
tool: [
'strong' //加粗
,'italic' //斜体
,'underline' //下划线
,'del' //删除线
,'|' //分割线
,'left' //左对齐
,'center' //居中对齐
,'right' //右对齐
,'link' //超链接
,'unlink' //清除链接
,'face' //表情
,'image' //插入图片
,'code'
]
});
layui.use('code', function(){ //加载code模块
layui.code();
});
//二级联动
form.on("select(articleParentCategoryId)",function () {
var optionstring = "";
var articleParentCategoryId = $("#articleParentCategoryId").val();
<c:forEach items="${categoryList}" var="c">
if(articleParentCategoryId==${c.categoryPid}) {
optionstring += "<option name='childCategory' value='${c.categoryId}'>${c.categoryName}</option>";
}
</c:forEach>
$("#articleChildCategoryId").html("<option value=''selected>二级分类</option>"+optionstring);
form.render('select'); //这个很重要
})
});
// window.onbeforeunload = function() {
// return "确认离开当前页面吗?未保存的数据将会丢失";
// }
</script>
</rapid:override>
<%--此句必须放在最后--%>
<%@ include file="../Public/framework.jsp"%>
编辑文章:
<%--保留此处 start--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<%--保留此处 end--%>
<rapid:override name="title">
- 修改文章
</rapid:override>
<rapid:override name="header-style">
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a href="/genUser/article">文章列表</a>
<a><cite>修改文章</cite></a>
</span>
</blockquote>
<form class="layui-form" method="post" id="myForm" action="/genUser/article/editSubmit">
<input type="hidden" name="articleId" value="${article.articleId}">
<div class="layui-form-item">
<label class="layui-form-label">标题 <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-block">
<input type="text" name="articleTitle" lay-verify="title" id="title" value="${article.articleTitle}"
class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容 <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-block">
<textarea class="layui-textarea layui-hide" name="articleContent"
id="content">${article.articleContent}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类 <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-inline">
<select name="articleParentCategoryId" id="articleParentCategoryId"
lay-filter="articleParentCategoryId">
<option value="">一级分类</option>
<c:forEach items="${categoryList}" var="c">
<c:if test="${c.categoryPid == 0}">
<option value="${c.categoryId}"
<c:if test="${article.categoryList[0].categoryId == c.categoryId}">
selected
</c:if>
>${c.categoryName}</option>
</c:if>
</c:forEach>
</select>
</div>
<div class="layui-input-inline">
<select name="articleChildCategoryId" id="articleChildCategoryId" lay-filter="articleChildCategoryId">
<c:forEach items="${categoryList}" var="c">
<c:if test="${c.categoryPid == article.categoryList[0].categoryId}">
<option value="${c.categoryId}"
<c:if test="${article.categoryList[1].categoryId == c.categoryId}">selected</c:if>>${c.categoryName}</option>
</c:if>
</c:forEach>
</select>
</div>
</div>
<div class="layui-form-item" pane="">
<label class="layui-form-label">标签</label>
<div class="layui-input-block">
<c:forEach items="${tagList}" var="t">
<input type="checkbox" name="articleTagIds" lay-skin="primary" title="${t.tagName}"
value="${t.tagId}"
<c:forEach items="${article.tagList}" var="t2">
<c:if test="${t.tagId == t2.tagId}">checked</c:if>
</c:forEach>>
</c:forEach>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">order</label>
<div class="layui-input-inline">
<input type="number" name="articleOrder" value="${article.articleOrder}" autocomplete="off"
class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">输入1-10的数字,order越大排序越前</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="articleStatus" value="1" title="发布"
<c:if test="${article.articleStatus==1}">checked</c:if>>
<input type="radio" name="articleStatus" value="0" title="草稿"
<c:if test="${article.articleStatus==0}">checked</c:if>>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">保存</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
<blockquote class="layui-elem-quote layui-quote-nm">
温馨提示:
1、插入代码前,可以点击 <a href="https://c.runoob.com/front-end/5536" target="_blank">代码高亮</a>,将代码转成HTML格式
</blockquote>
</rapid:override>
<rapid:override name="footer-script">
<script>
layui.use(['form', 'layedit', 'laydate'], function () {
var form = layui.form
, layer = layui.layer
, layedit = layui.layedit
, laydate = layui.laydate;
//上传图片,必须放在 创建一个编辑器前面
layedit.set({
uploadImage: {
url: '/admin/upload/img' //接口url
, type: 'post' //默认post
}
});
//创建一个编辑器
var editIndex = layedit.build('content', {
height: 350,
}
);
// layui.code({
// elem: 'pre', //默认值为.layui-code
// });
//自定义验证规则
form.verify({
title: function (value) {
if (value.length < 5) {
return '标题至少得5个字符啊';
}
}
, content: function (value) {
layedit.sync(editIndex);
}
});
layedit.build('content', {
tool: [
'strong' //加粗
, 'italic' //斜体
, 'underline' //下划线
, 'del' //删除线
, '|' //分割线
, 'left' //左对齐
, 'center' //居中对齐
, 'right' //右对齐
, 'link' //超链接
, 'unlink' //清除链接
, 'face' //表情
, 'image' //插入图片
, 'code'
]
});
//二级联动
form.on("select(articleParentCategoryId)", function () {
var str = "";
var articleParentCategoryId = $("#articleParentCategoryId").val();
<c:forEach items="${categoryList}" var="c">
if (articleParentCategoryId ==${c.categoryPid}) {
str += "<option name='childCategory' value='${c.categoryId}'<c:if test='${article.categoryList[1].categoryId == c.categoryId}'>selected</c:if>>${c.categoryName}</option>";
}
</c:forEach>
$("#articleChildCategoryId").html(" <option value=''selected>二级分类</option>" + str);
form.render('select'); //这个很重要
})
});
//end
</script>
</rapid:override>
<%--此句必须放在最后--%>
<%@ include file="../Public/framework.jsp" %>
因为是一般用户,所以从Session中获得登录的用户,然后将这个用户放到查询集合中,进行查询。所以最后显示的是这个用户下的文章数。
@Controller
@RequestMapping("/genUser/article")
public class UserArticleController {
@Autowired
private ArticleService articleService;
@Autowired
private CategoryService categoryService;
@Autowired
private TagService tagService;
//后台文章列表
@RequestMapping(value = "")
public String index(@RequestParam(required = false, defaultValue = "1") Integer pageIndex,
@RequestParam(required = false, defaultValue = "10") Integer pageSize,
@RequestParam(required = false) String status , Model model,HttpSession session ) {
User user=(User)session.getAttribute("user");
System.out.println("user");
HashMap<String,Object> criteria=new HashMap<>(2);
if(status==null)
{
criteria.put("userId",user.getUserId());
model.addAttribute("pageUrlPrefix", "/admin/article?pageIndex");
}
else {
criteria.put("userId",user.getUserId());
criteria.put("status", status);
model.addAttribute("pageUrlPrefix", "/admin/article?status=" + status + "&pageIndex");
}
PageInfo<Article> articlePageInfo = articleService.pageArticle(pageIndex, pageSize, criteria);
model.addAttribute("pageInfo", articlePageInfo);
return "User/Article/index";
}
//删除文章
@RequestMapping(value = "/delete/{id}")
public void deleteArticle(@PathVariable("id")Integer id){
articleService.deleteArticle(id);
}
在获得添加文章请求的时候,会跳转到添加文章的页面。在这个页面需要显示这个属于用户的分类和标签,所以从Session中获得用户信息。根据这个用户的ID查到属于这个用户的分类和标签,然后放在Model中。跳转到添加文章的页面就会显示。
//添加文章
@RequestMapping(value = "/insert")
public String insertArticleView(Model model,HttpSession session){
User user=(User)session.getAttribute("user");
//在添加文章界面显示的都是这个用户添加的分类和标签
List<Category> categoryList=categoryService.listCategoryWithCountByUserId(user.getUserId());
List<Tag> tagList=tagService.listTagByUserId(user.getUserId());
model.addAttribute("categoryList",categoryList);
model.addAttribute("tagList",tagList);
return "User/Article/insert";
}
添加文章的提交:要注意添加文章时如果选择文章分类和标签,一定要将这些添加到关联记录中。
//添加文章提交
@RequestMapping(value = "insertSubmit",method = RequestMethod.POST)
public String insertArticleSubmit(HttpSession session, ArticleParam articleParam){
Article article=new Article();
User user=(User)session.getAttribute("user");
//设置文章作者ID
if(user!=null)
{
article.setArticleUserId(user.getUserId());
}
//设置文章标题
article.setArticleTitle(articleParam.getArticleTitle());
//设置文章摘要(根据自定义的长度从文章截取内容)
int summaryLength=150;
String summaryText= HtmlUtil.cleanHtmlTag(articleParam.getArticleContent());
if(summaryText.length()>summaryLength){
String summary=summaryText.substring(0,summaryLength);
article.setArticleSummary(summary);
}
else {
article.setArticleSummary(summaryText);
}
//设置文章内容
article.setArticleContent(articleParam.getArticleContent());
//设置文章状态
article.setArticleStatus(articleParam.getArticleStatus());
//设置文章分类
List<Category> categoryList=new ArrayList<>();
//获得分类子分类不为空
if(articleParam.getArticleParentCategoryId()!=null)
{
categoryList.add(new Category(articleParam.getArticleParentCategoryId()));
}
if(articleParam.getArticleChildCategoryId()!=null)
{
categoryList.add(new Category(articleParam.getArticleChildCategoryId()));
}
article.setCategoryList(categoryList);
//设置文章标签
List<Tag> tagList=new ArrayList<>();
if(articleParam.getArticleTagIds()!=null){
for(int i=0;i<articleParam.getArticleTagIds().size();i++){
Tag tag=new Tag(articleParam.getArticleTagIds().get(i));
tagList.add(tag);
}
}
article.setTagList(tagList);
//文章和文章分类关联的,文章和文章标签关联的添加部分都在Service实现类中
articleService.insertArticle(article);
return "redirect:/genUser/article";
}
在获得编辑请求的同时,查找文章信息,文章分类信息和文章标签信息,放在Model中。跳转到编辑文章页面时会显示。
//编辑提交
@RequestMapping(value = "/editSubmit",method = RequestMethod.POST)
public String editArticleSubmit(ArticleParam articleParam){
Article article = new Article();
article.setArticleId(articleParam.getArticleId());
article.setArticleTitle(articleParam.getArticleTitle());
article.setArticleContent(articleParam.getArticleContent());
article.setArticleStatus(articleParam.getArticleStatus());
//文章摘要
int summaryLength = 150;
String summaryText = HtmlUtil.cleanHtmlTag(article.getArticleContent());
if (summaryText.length() > summaryLength) {
String summary = summaryText.substring(0, summaryLength);
article.setArticleSummary(summary);
} else {
article.setArticleSummary(summaryText);
}
//填充分类
List<Category> categoryList = new ArrayList<>();
if (articleParam.getArticleParentCategoryId() != null) {
categoryList.add(new Category(articleParam.getArticleParentCategoryId()));
}
if (articleParam.getArticleChildCategoryId() != null) {
categoryList.add(new Category(articleParam.getArticleChildCategoryId()));
}
article.setCategoryList(categoryList);
//填充标签
List<Tag> tagList = new ArrayList<>();
if (articleParam.getArticleTagIds() != null) {
for (int i = 0; i < articleParam.getArticleTagIds().size(); i++) {
Tag tag = new Tag(articleParam.getArticleTagIds().get(i));
tagList.add(tag);
}
}
article.setTagList(tagList);
articleService.updateArticleDetail(article);
return "redirect:/genUser/article";
}
文章列表显示:
写文章:可以看到这个分类和标签
添加成功:
编辑文章:
删除文章
写文章:
写文章时选择分类:
分类列表显示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 分类列表
</rapid:override>
<rapid:override name="header-style">
<style>
/*覆盖 layui*/
.layui-input-block {
margin:0px 10px;
}
.layui-table {
margin-top: 0;
}
.layui-col-md4 {
padding:10px;
}
.layui-col-md8 {
padding:10px;
}
.layui-btn {
margin: 2px 0!important;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a href="/genUser/category">分类列表</a>
<a><cite>添加分类</cite></a>
</span>
</blockquote>
<div class="layui-row">
<div class="layui-col-md4">
<form class="layui-form" method="post" id="myForm" action="/genUser/category/insertSubmit">
<div class="layui-form-item">
<div class="layui-input-block">
<strong>添加分类</strong>
</div>
<div class="layui-input-block">
名称 <span style="color: #FF5722; ">*</span>
<input type="text" name="categoryName" placeholder="请输入分类名称" autocomplete="off" class="layui-input" required>
</div>
<br>
<div class="layui-input-block">
父节点 <span style="color: #FF5722; ">*</span>
<select name="categoryPid" class="layui-input" required>
<option value="0">无</option>
<c:forEach items="${categoryList}" var="c">
<c:if test="${c.categoryPid==0}">
<option value="${c.categoryId}">${c.categoryName}</option>
</c:if>
</c:forEach>
</select>
</div>
<br>
<div class="layui-input-block">
分类描述
<input type="text" name="categoryDescription" placeholder="请输入分类描述" autocomplete="off" class="layui-input" >
</div>
<br>
<div class="layui-input-block">
图标样式
<input type="text" name="categoryIcon" placeholder="请输入图标样式,如 fa fa-coffee" autocomplete="off" class="layui-input" >
</div>
<br>
<div class="layui-input-block">
<button class="layui-btn" lay-filter="formDemo" type="submit">添加</button>
</div>
</div>
</form>
</div>
<div class="layui-col-md8" >
<table class="layui-table" >
<colgroup>
<col width="300">
<col width="100">
<col width="100">
<col width="100">
<col width="50">
<col width="50">
</colgroup>
<thead>
<tr>
<th>名称</th>
<th>文章数</th>
<th>操作</th>
<th>ID</th>
<th>pid</th>
</tr>
</thead>
<tbody>
<c:forEach items="${categoryList}" var="c">
<c:if test="${c.categoryPid==0}">
<tr>
<td>
<a href="/category/${c.categoryId}" target="_blank">${c.categoryName}</a>
</td>
<td>
<a href="/category/${c.categoryId}" target="_blank">${c.articleCount}</a>
</td>
<td>
<a href="/genUser/category/edit/${c.categoryId}" class="layui-btn layui-btn-mini">编辑</a>
<c:if test="${c.articleCount==0}">
<a href="/genUser/category/delete/${c.categoryId}" class="layui-btn layui-btn-danger layui-btn-mini" onclick="return confirmDelete()">删除</a>
</c:if>
</td>
<td>${c.categoryId}</td>
<td>${c.categoryPid}</td>
</tr>
<c:forEach items="${categoryList}" var="c2">
<c:if test="${c2.categoryPid==c.categoryId}">
<tr>
<td>
<a href="/category/${c2.categoryId}" target="_blank">——${c2.categoryName}</a>
</td>
<td>
<a href="/category/${c2.categoryId}" target="_blank">${c2.articleCount}</a>
</td>
<td>
<a href="/genUser/category/edit/${c2.categoryId}" class="layui-btn layui-btn-mini">编辑</a>
<c:if test="${c2.articleCount==0}">
<a href="/genUser/category/delete/${c2.categoryId}" class="layui-btn layui-btn-danger layui-btn-mini" onclick="return confirmDelete()">删除</a>
</c:if>
</td>
<td class="cate-parent">${c2.categoryId}</td>
<td>${c2.categoryPid}</td>
</tr>
</c:if>
</c:forEach>
</c:if>
</c:forEach>
</tbody>
</table>
<blockquote class="layui-elem-quote layui-quote-nm">
温馨提示:
<ul>
<li>分类最多只有两级,一级分类pid=0,二级分类pid=其父节点id</li>
<li>如果该分类包含文章,将不可删除</li>
</ul>
</blockquote>
</div>
</div>
</rapid:override>
<rapid:override name="footer-script">
</rapid:override>
<%@ include file="../Public/framework.jsp"%>
编辑分类:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 分类列表
</rapid:override>
<rapid:override name="header-style">
<style>
.layui-input-block {
margin:0px 10px;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a href="/genUser/category">分类列表</a>
<a><cite>编辑分类</cite></a>
</span>
</blockquote>
<div class="layui-row">
<div class="layui-col-md4" >
<form class="layui-form" method="post" id="myForm" action="/genUser/category/editSubmit">
<div class="layui-form-item">
<div class="layui-input-block">
<strong>修改分类</strong>
</div>
<input type="hidden" name="categoryId" value="${category.categoryId}">
<div class="layui-input-block">
名称 <span style="color: #FF5722; ">*</span>
<input type="text" name="categoryName" value="${category.categoryName}" placeholder="" autocomplete="off" class="layui-input" required>
</div>
<br>
<div class="layui-input-block">
父节点 <span style="color: #FF5722; ">*</span>
<select name="categoryPid" class="layui-input" required>
<c:forEach items="${categoryList}" var="c">
<c:choose>
<c:when test="${c.categoryId==category.categoryPid}">
<option value="${c.categoryId}" selected>${c.categoryName}</option>
</c:when>
<c:otherwise>
<c:if test="${c.categoryPid==0}">
<option value="${c.categoryId}">${c.categoryName}</option>
</c:if>
</c:otherwise>
</c:choose>
</c:forEach>
<option value="0" <c:if test="${category.categoryPid==0}">selected</c:if> >无</option>
</select>
</div>
<br>
<div class="layui-input-block">
分类描述
<input type="text" name="categoryDescription" value="${category.categoryDescription}" class="layui-input" >
</div>
<br>
<div class="layui-input-block">
图标样式
<input type="text" name="categoryIcon" value="${category.categoryIcon}"class="layui-input" >
</div>
<br>
<br>
<div class="layui-input-block">
<button class="layui-btn" lay-filter="formDemo" type="submit">保存</button>
</div>
</div>
</form>
<br><br>
</div>
<div class="layui-col-md8" >
<table class="layui-table" >
<colgroup>
<col width="300">
<col width="100">
<col width="100">
<col width="100">
<col width="50">
<col width="50">
</colgroup>
<thead>
<tr>
<th>名称</th>
<th>文章数</th>
<th>操作</th>
<th>ID</th>
<th>pid</th>
</tr>
</thead>
<tbody>
<c:forEach items="${categoryList}" var="c">
<c:if test="${c.categoryPid==0}">
<tr>
<td>
<a href="/category/${c.categoryId}" target="_blank">${c.categoryName}</a>
</td>
<td>
<a href="/category/${c.categoryId}" target="_blank">${c.articleCount}</a>
</td>
<td>
<a href="/genUser/category/edit/${c.categoryId}" class="layui-btn layui-btn-mini">编辑</a>
<c:if test="${c.articleCount==0}">
<a href="/genUser/category/delete/${c.categoryId}" class="layui-btn layui-btn-danger layui-btn-mini" onclick="return confirmDelete()">删除</a>
</c:if>
</td>
<td>${c.categoryId}</td>
<td>${c.categoryPid}</td>
</tr>
<c:forEach items="${categoryList}" var="c2">
<c:if test="${c2.categoryPid==c.categoryId}">
<tr>
<td>
<a href="/category/${c2.categoryId}" target="_blank">——${c2.categoryName}</a>
</td>
<td>
<a href="/category/${c2.categoryId}" target="_blank">${c2.articleCount}</a>
</td>
<td>
<a href="/genUser/category/edit/${c2.categoryId}" class="layui-btn layui-btn-mini">编辑</a>
<c:if test="${c2.articleCount==0}">
<a href="/genUser/category/delete/${c2.categoryId}" class="layui-btn layui-btn-danger layui-btn-mini" onclick="return confirmDelete()">删除</a>
</c:if>
</td>
<td class="cate-parent">${c2.categoryId}</td>
<td>${c2.categoryPid}</td>
</tr>
</c:if>
</c:forEach>
</c:if>
</c:forEach>
</tbody>
</table>
<blockquote class="layui-elem-quote layui-quote-nm">
温馨提示:
<ul>
<li>分类最多只有两级,一级分类pid=0,二级分类pid=其父节点id</li>
<li>如果该分类包含文章,将不可删除</li>
</ul>
</blockquote>
</div>
</div>
</rapid:override>
<rapid:override name="footer-script">
</rapid:override>
<%@ include file="../Public/framework.jsp"%>
这个列表根据的是用户的ID查询,显示的是这个用户下的分类。
@Controller
@RequestMapping("/genUser/category")
public class UserCategoryController {
@Autowired
private CategoryService categoryService;
@Autowired
private ArticleService articleService;
//后台分类列表显示
@RequestMapping(value = "")
public ModelAndView categoryList(HttpSession session){
User user=(User)session.getAttribute("user");
ModelAndView modelAndView=new ModelAndView();
List<Category> categoryList=categoryService.listCategoryWithCountByUserId(user.getUserId());
modelAndView.addObject("categoryList",categoryList);
modelAndView.setViewName("User/Category/index");
return modelAndView;
}
//后台添加分类提交
@RequestMapping(value = "/insertSubmit",method = RequestMethod.POST)
public String insertCategorySubmit(Category category,HttpSession session){
System.out.println(category.getCategoryPid());
User user=(User)session.getAttribute("user");
category.setCategoryUserId(user.getUserId());
categoryService.insertCategory(category);
return "redirect:/genUser/category";
}
//编辑分类页面显示
@RequestMapping(value = "/edit/{id}")
public ModelAndView editCategoryView(@PathVariable("id")Integer id,HttpSession session)
{
ModelAndView modelAndView=new ModelAndView();
Category category=categoryService.getCategoryById(id);
modelAndView.addObject("category",category);
User user=(User)session.getAttribute("user");
List<Category> categoryList=categoryService.listCategoryWithCountByUserId(user.getUserId());
modelAndView.addObject("categoryList",categoryList);
modelAndView.setViewName("User/Category/edit");
return modelAndView;
}
//编辑分类提交
@RequestMapping(value = "/editSubmit",method = RequestMethod.POST)
public String editCategorySubmit(Category category)
{
categoryService.updateCategory(category);
return "redirect:/genUser/category";
}
//删除分类
@RequestMapping(value = "/delete/{id}")
public String deleteCategory(@PathVariable("id")Integer id){
//禁止删除有文章的分类
int count=articleService.countArticleByCategoryId(id);
if(count==0)
{
categoryService.deleteCategory(id);
}
return "redirect:/genUser/category";
}
分类列表和添加分类显示:
添加分类:
添加成功:可以看到的是因为是新添加的没有文章,所以有删除按钮
编辑分类:
标签列表显示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 标签列表
</rapid:override>
<rapid:override name="header-style">a
<style>
/*覆盖 layui*/
.layui-input-block {
margin:0px 10px;
}
.layui-table {
margin-top: 0;
}
.layui-col-md4 {
padding:10px;
}
.layui-col-md8 {
padding:10px;
}
.layui-btn {
margin: 2px 0!important;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a><cite>标签列表</cite></a>
</span>
</blockquote>
<div class="layui-row">
<div class="layui-col-md4">
<form class="layui-form" method="post" id="myForm" action="/genUser/tag/insertSubmit">
<div class="layui-form-item">
<div class="layui-input-block">
<strong>添加标签</strong>
</div>
<div class="layui-input-block">
名称 <span style="color: #FF5722; ">*</span>
<input type="text" name="tagName" placeholder="请输入标签名称" autocomplete="off" class="layui-input" required>
</div>
<br>
<div class="layui-input-block">
标签描述
<input type="text" name="tagDescription" placeholder="请输入标签描述" autocomplete="off" class="layui-input" >
</div>
<br>
<div class="layui-input-block">
<button class="layui-btn" lay-filter="formDemo" type="submit">添加</button>
</div>
</div>
</form>
<blockquote class="layui-elem-quote layui-quote-nm">
温馨提示:
<ul>
<li>1、标签名必选,建议不要太长</li>
<li>2、标签名勿重复</li>
</ul>
</blockquote>
</div>
<div class="layui-col-md8" >
<table class="layui-table" >
<colgroup>
<col width="300">
<col width="50">
<col width="100">
<col width="50">
</colgroup>
<thead>
<tr>
<th>名称</th>
<th>文章数</th>
<th>操作</th>
<th>ID</th>
</tr>
</thead>
<tbody>
<c:forEach items="${tagList}" var="c">
<tr>
<td>
<a href="/tag/${c.tagId}" target="_blank">${c.tagName}</a>
</td>
<td >
<a href="/tag/${c.tagId}" target="_blank" lay-data="{sort:true}">${c.articleCount}</a>
</td>
<td>
<a href="/genUser/tag/edit/${c.tagId}" class="layui-btn layui-btn-mini">编辑</a>
<c:if test="${c.articleCount==0}">
<a href="/genUser/tag/delete/${c.tagId}" class="layui-btn layui-btn-danger layui-btn-mini" onclick="return confirmDelete()">删除</a>
</c:if>
</td>
<td >${c.tagId}</td>
</tr>
</c:forEach>
</tbody>
</table>
<blockquote class="layui-elem-quote layui-quote-nm">
温馨提示:
<ul>
<li>如果该标签包含文章,将不可删除</li>
</ul>
</blockquote>
</div>
</div>
</rapid:override>
<rapid:override name="footer-script">
<script>
</script>
</rapid:override>
<%@ include file="../Public/framework.jsp"%>
编辑标签:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 标签列表
</rapid:override>
<rapid:override name="header-style">a
<style>
/*覆盖 layui*/
.layui-input-block {
margin:0px 10px;
}
.layui-table {
margin-top: 0;
}
.layui-col-md4 {
padding:10px;
}
.layui-col-md8 {
padding:10px;
}
.layui-btn {
margin: 2px 0!important;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a><cite>标签列表</cite></a>
</span>
</blockquote>
<div class="layui-row">
<div class="layui-col-md4">
<form class="layui-form" method="post" id="myForm" action="/genUser/tag/insertSubmit">
<div class="layui-form-item">
<div class="layui-input-block">
<strong>添加标签</strong>
</div>
<div class="layui-input-block">
名称 <span style="color: #FF5722; ">*</span>
<input type="text" name="tagName" placeholder="请输入标签名称" autocomplete="off" class="layui-input" required>
</div>
<br>
<div class="layui-input-block">
标签描述
<input type="text" name="tagDescription" placeholder="请输入标签描述" autocomplete="off" class="layui-input" >
</div>
<br>
<div class="layui-input-block">
<button class="layui-btn" lay-filter="formDemo" type="submit">添加</button>
</div>
</div>
</form>
<blockquote class="layui-elem-quote layui-quote-nm">
温馨提示:
<ul>
<li>1、标签名必选,建议不要太长</li>
<li>2、标签名勿重复</li>
</ul>
</blockquote>
</div>
<div class="layui-col-md8" >
<table class="layui-table" >
<colgroup>
<col width="300">
<col width="50">
<col width="100">
<col width="50">
</colgroup>
<thead>
<tr>
<th>名称</th>
<th>文章数</th>
<th>操作</th>
<th>ID</th>
</tr>
</thead>
<tbody>
<c:forEach items="${tagList}" var="c">
<tr>
<td>
<a href="/tag/${c.tagId}" target="_blank">${c.tagName}</a>
</td>
<td >
<a href="/tag/${c.tagId}" target="_blank" lay-data="{sort:true}">${c.articleCount}</a>
</td>
<td>
<a href="/genUser/tag/edit/${c.tagId}" class="layui-btn layui-btn-mini">编辑</a>
<c:if test="${c.articleCount==0}">
<a href="/genUser/tag/delete/${c.tagId}" class="layui-btn layui-btn-danger layui-btn-mini" onclick="return confirmDelete()">删除</a>
</c:if>
</td>
<td >${c.tagId}</td>
</tr>
</c:forEach>
</tbody>
</table>
<blockquote class="layui-elem-quote layui-quote-nm">
温馨提示:
<ul>
<li>如果该标签包含文章,将不可删除</li>
</ul>
</blockquote>
</div>
</div>
</rapid:override>
<rapid:override name="footer-script">
<script>
</script>
</rapid:override>
<%@ include file="../Public/framework.jsp"%>
同分类列表显示一样,都是根据用户ID进行查询标签。
@Controller
@RequestMapping("/genUser/tag")
public class UserTagController {
@Autowired
private ArticleService articleService;
@Autowired
private TagService tagService;
//后台标签列表显示
@RequestMapping(value = "")
public ModelAndView index(HttpSession session){
User user=(User)session.getAttribute("user");
ModelAndView modelAndView=new ModelAndView();
List<Tag> tagList=tagService.listTagByUserId(user.getUserId());
modelAndView.addObject("tagList",tagList);
modelAndView.setViewName("User/Tag/index");
return modelAndView;
}
//添加标签
@RequestMapping(value = "/insertSubmit",method = RequestMethod.POST)
public String insertTagSubmit(Tag tag,HttpSession session)
{
User user=(User)session.getAttribute("user");
tag.setTagUserId(user.getUserId());
tagService.insertTag(tag);
return "redirect:/genUser/tag";
}
//编辑
@RequestMapping(value = "/edit/{id}")
public ModelAndView editTagView(@PathVariable("id")Integer id,HttpSession session)
{
ModelAndView modelAndView=new ModelAndView();
Tag tag=tagService.getTagById(id);
modelAndView.addObject("tag",tag);
User user=(User)session.getAttribute("user");
List<Tag> tagList=tagService.listTagByUserId(user.getUserId());
modelAndView.addObject("tagList",tagList);
modelAndView.setViewName("User/Tag/edit");
return modelAndView;
}
//编辑提交
@RequestMapping(value = "/editSubmit",method = RequestMethod.POST)
public String editTagSubmit(Tag tag){
tagService.updateTag(tag);
return "redirect:/genUser/tag";
}
//删除标签
@RequestMapping(value = "/delete/{id}")
public String deleteTag(@PathVariable("id")Integer id){
Integer count=articleService.countArticleByTagId(id);
if(count==0){
tagService.deleteTag(id);
}
return "redirect:/genUser/tag";
}
评论列表显示页面:
<%@ page import="java.security.MessageDigest" %>
<%@ page import="java.security.NoSuchAlgorithmException" %>
<%@ page import="com.test.ssm.blog.util.MyUtils" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 评论列表
</rapid:override>
<rapid:override name="header-style">
<style>
/*覆盖 layui*/
.layui-table {
margin-top: 0;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a><cite>评论列表</cite></a>
</span>
</blockquote>
<div class="layui-tab layui-tab-card">
<table class="layui-table" lay-even lay-skin="nob">
<colgroup>
<col width="100">
<col width="300">
<col width=200">
<col width="150">
<col width="50">
</colgroup>
<thead>
<tr>
<th>作者</th>
<th>评论内容</th>
<th>回复至</th>
<th>提交于</th>
<th>ID</th>
</tr>
</thead>
<tbody>
<c:forEach items="${pageInfo.list}" var="comment">
<tr>
<td>
<img src="${comment.commentAuthorAvatar}" alt="" width="64px">
<strong>${comment.commentAuthorName}</strong>
<br>
${comment.commentAuthorUrl}<br>
${comment.commentAuthorEmail}<br>
${comment.commentIp}
</td>
<td class="dashboard-comment-wrap">
<c:if test="${comment.commentPid!=0}">
<span class="at">@</span><a href="${comment.commentAuthorUrl}">${comment.commentPname}</a>
</c:if>
${comment.commentContent}
<div class="row-actions">
<span class="">
<a href="/genUser/comment/reply/${comment.commentId}">
回复
</a>
</span>
<span class="">
<a href="/genUser/comment/edit/${comment.commentId}">
编辑
</a>
</span>
<span class="">
<a href="javascript:void(0)" onclick="deleteCommentUser(${comment.commentId})">删除</a>
</span>
</div>
</td>
<td>
<a href="/article/${comment.article.articleId}"
target="_blank">
${comment.article.articleTitle}
</a>
</td>
<td>
<fmt:formatDate value="${comment.commentCreateTime}" pattern="yyyy年MM月dd日"/>
</td>
<td>${comment.commentId}</td>
</tr>
</c:forEach>
</tbody>
</table>
<div id="nav" style="">
<%@ include file="../Public/paging.jsp" %>
</div>
</div>
</rapid:override>
<rapid:override name="footer-script">
<script>
function deleteCommentUser(id) {
if (confirmDelete() == true) {
$.ajax({
async: false,
type: "POST",
url: '/genUser/comment/delete/' + id,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
dataType: "text",
complete: function () {
window.location.reload();
}
})
}
}
</script>
</rapid:override>
<%@ include file="../Public/framework.jsp" %>
编辑评论:
<%@ page import="java.security.MessageDigest" %>
<%@ page import="java.security.NoSuchAlgorithmException" %>
<%@ page import="com.test.ssm.blog.util.MyUtils" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 评论列表
</rapid:override>
<rapid:override name="header-style">
<style>
/*覆盖 layui*/
.layui-btn {
margin: 2px 0 !important;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a href="/genUser/comment">评论列表</a>
<a><cite>编辑评论</cite></a>
</span>
</blockquote>
<form class="layui-form" method="post" id="myForm" action="/genUser/comment/editSubmit">
<input type="hidden" name="commentId" value="${comment.commentId}">
<div class="layui-form-item">
<label class="layui-form-label">昵称 </label>
<div class="layui-input-block">
<input type="text" name="commentAuthorName" value="${comment.commentAuthorName}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱 </label>
<div class="layui-input-block">
<input type="text" name="commentAuthorEmail" value="${comment.commentAuthorEmail}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">网址 </label>
<div class="layui-input-block">
<input type="text" name="commentAuthorUrl" value="${comment.commentAuthorUrl}" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<textarea name="commentContent" class="layui-textarea">${comment.commentContent}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">保存</button>
<button type="reset" class="layui-btn layui-btn-primary" >重置</button>
</div>
</div>
</form>
</rapid:override>
<rapid:override name="footer-script">
<script>
</script>
</rapid:override>
<%@ include file="../Public/framework.jsp" %>
回复评论:
<%@ page import="java.security.MessageDigest" %>
<%@ page import="java.security.NoSuchAlgorithmException" %>
<%@ page import="com.test.ssm.blog.util.MyUtils" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 回复评论
</rapid:override>
<rapid:override name="header-style">
<style>
/*覆盖 layui*/
.layui-btn {
margin: 2px 0 !important;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a href="/genUser/comment">评论列表</a>
<a><cite>回复评论</cite></a>
</span>
</blockquote>
<form class="layui-form" method="post" id="myForm" action="/genUser/comment/replySubmit">
<input type="hidden" name="commentPid" value="${comment.commentId}">
<input type="hidden" name="commentPname" value="${comment.commentAuthorName}">
<input type="hidden" name="commentArticleId" value="${comment.commentArticleId}">
<input type="hidden" name="commentRole" value="1">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">原内容</label>
<div class="layui-input-block">
<textarea class="layui-textarea" disabled>${comment.commentContent}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">我的昵称 </label>
<div class="layui-input-block">
<input type="text" name="commentAuthorName" value="${sessionScope.user.getUserNickname()}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">我的邮箱 </label>
<div class="layui-input-block">
<input type="text" name="commentAuthorEmail" value="${sessionScope.user.getUserEmail()}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">我的网址 </label>
<div class="layui-input-block">
<input type="text" name="commentAuthorUrl" value="${sessionScope.user.getUserUrl()}" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">我的回复</label>
<div class="layui-input-block">
<textarea name="commentContent" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">回复</button>
<button type="reset" class="layui-btn layui-btn-primary" >重置</button>
</div>
</div>
</form>
</rapid:override>
<rapid:override name="footer-script">
<script>
</script>
</rapid:override>
<%@ include file="../Public/framework.jsp" %>
只显示这个用户写的文章下的评论。
@Controller
@RequestMapping("/genUser/comment")
public class UserCommentController {
@Autowired
private CommentService commentService;
@Autowired
private ArticleService articleService;
@RequestMapping(value = "")
public String commentListView(@RequestParam(required = false, defaultValue = "1") Integer pageIndex,
@RequestParam(required = false, defaultValue = "10") Integer pageSize,
Model model, HttpSession session){
User user=(User)session.getAttribute("user");
List<Integer> articleIds=articleService.listArticleIdByUserId(user.getUserId());
PageInfo<Comment> commentPageInfo = commentService.listCommentByArticleIds(pageIndex,pageSize,articleIds);
model.addAttribute("pageInfo", commentPageInfo);
model.addAttribute("pageUrlPrefix","/genUser/comment?pageIndex");
return "User/Comment/index";
}
记得更新文章下的评论数。
//添加评论
@RequestMapping(value = "/insert",method = RequestMethod.POST)
@ResponseBody
public void insertComment(HttpServletRequest request, Comment comment)
{
comment.setCommentIp(MyUtils.getIpAddr(request));
comment.setCommentCreateTime(new Date());
commentService.insertComment(comment);
Article article=articleService.getArticleByStatusAndId(null,comment.getCommentArticleId());
articleService.updateCommentCount(article.getArticleId());
}
记得删除评论下的子评论,和更新文章的评论数。
//删除评论
@RequestMapping(value = "/delete/{id}")
public void deleteComment(@PathVariable("id")Integer id)
{
Comment comment=commentService.getCommentById(id);
commentService.deleteComment(id);
List<Comment> childComment=commentService.listChildComment(id);
for(int i=0;i<childComment.size();i++)
{
commentService.deleteComment(childComment.get(i).getCommentId());
}
Article article = articleService.getArticleByStatusAndId(null, comment.getCommentArticleId());
articleService.updateCommentCount(article.getArticleId());
}
@RequestMapping("/edit/{id}")
public String editCommentView(@PathVariable("id")Integer id,Model model){
Comment comment=commentService.getCommentById(id);
model.addAttribute("comment",comment);
return "User/Comment/edit";
}
/**
* 编辑评论提交
*
* @param comment
* @return
*/
@RequestMapping(value = "/editSubmit", method = RequestMethod.POST)
public String editCommentSubmit(Comment comment) {
commentService.updateComment(comment);
return "redirect:/genUser/comment";
}
/**
* 回复评论页面显示
*
* @param id
* @return
*/
@RequestMapping(value = "/reply/{id}")
public String replyCommentView(@PathVariable("id") Integer id, Model model) {
Comment comment = commentService.getCommentById(id);
model.addAttribute("comment", comment);
return "User/Comment/reply";
}
/**
* 回复评论提交
*
* @param request
* @param comment
* @return
*/
@RequestMapping(value = "/replySubmit", method = RequestMethod.POST)
public String replyCommentSubmit(HttpServletRequest request, Comment comment) {
//文章评论数+1
Article article = articleService.getArticleByStatusAndId(ArticleStatus.PUBLISH.getValue(), comment.getCommentArticleId());
article.setArticleCommentCount(article.getArticleCommentCount() + 1);
articleService.updateArticle(article);
//添加评论
comment.setCommentCreateTime(new Date());
comment.setCommentIp(MyUtils.getIpAddr(request));
commentService.insertComment(comment);
return "redirect:/genUser/comment";
}
评论列表显示:
编辑评论:
回复评论:
基本信息页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 编辑用户
</rapid:override>
<rapid:override name="header-style">
<style>
.layui-form-item .layui-input-inline {
width: 300px;
}
.layui-word-aux {
color: #FF5722 !important;
}
.layui-form-label {
width: 120px;
}
input {
border: 0!important;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a href="/genUser/user/profile">用户信息</a>
<c:choose>
<c:when test="${sessionScope.user.userId==user.userId}">
<a><cite>个人信息</cite></a>
</c:when>
<c:otherwise>
<a><cite>用户信息</cite></a>
</c:otherwise>
</c:choose>
</span>
</blockquote>
<br><br>
<form class="layui-form" action="/genUser/user/editSubmit" id="userForm"
method="post">
<input type="hidden" name="userId" id="userId" value="${user.userId}">
<div class="layui-form-item">
<a class="layui-btn layui-btn-primary" href="/genUser/user/edit/${user.userId}">编辑</a>
<label class="layui-form-label">头像</label>
<div class="layui-input-inline">
<div class="layui-upload">
<div class="layui-upload-list" style="">
<img class="layui-upload-img" src="${user.userAvatar}" id="demo1" width="100"
height="100">
<p id="demoText"></p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">用户名 </label>
<div class="layui-input-inline">
<input type="text" value="${user.userName}" id="userName" required
autocomplete="off" class="layui-input" disabled>
</div>
<div class="layui-form-mid layui-word-aux" id="userNameTips"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码 </label>
<div class="layui-input-inline">
<input type="password" value="${user.userPass}" id="userPass" required
autocomplete="off" class="layui-input" min="3" max="20" disabled>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">昵称 </label>
<div class="layui-input-inline">
<input type="text" value="${user.userNickname}" required
placeholder="" autocomplete="off" min="2" max="10"
class="layui-input" disabled>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Email </label>
<div class="layui-input-inline">
<input type="email" value="${user.userEmail}" id="userEmail" required
class="layui-input" disabled>
</div>
<div class="layui-form-mid layui-word-aux" id="userEmailTips"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">URL </label>
<div class="layui-input-inline">
<input type="url" value="${user.userUrl}" placeholder="" autocomplete="off"
class="layui-input" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">注册时间 </label>
<div class="layui-input-inline">
<input type="text" value="<fmt:formatDate value="${user.userRegisterTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
" placeholder="" autocomplete="off"
class="layui-input" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最后登录时间 </label>
<div class="layui-input-inline">
<input type="text" value='<fmt:formatDate value="${user.userLastLoginTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
' placeholder="" autocomplete="off"
class="layui-input" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最后登录IP </label>
<div class="layui-input-inline">
<input type="text" value="${user.userLastLoginIp}" placeholder="" autocomplete="off"
class="layui-input" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态 </label>
<div class="layui-input-inline">
<input type="text" value='<c:choose>
<c:when test="${user.userStatus==0}">禁用
</c:when>
<c:otherwise>正常
</c:otherwise>
</c:choose>' placeholder="" autocomplete="off"
class="layui-input" disabled>
</div>
</div>
</form>
</rapid:override>
<rapid:override name="footer-script">
<script>
</script>
</rapid:override>
<%@ include file="../Public/framework.jsp" %>
编辑页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="rapid" uri="http://www.rapid-framework.org.cn/rapid" %>
<rapid:override name="title">
- 编辑用户
</rapid:override>
<rapid:override name="header-style">
<style>
.layui-form-item .layui-input-inline {
width: 300px;
}
.layui-form-label {
width: 120px;
}
.layui-word-aux {
color: #FF5722 !important;
}
</style>
</rapid:override>
<rapid:override name="content">
<blockquote class="layui-elem-quote">
<span class="layui-breadcrumb" lay-separator="/">
<a href="/genUser">首页</a>
<a href="/genUser/user/profile">用户信息</a>
<a><cite>编辑用户</cite></a>
</span>
</blockquote>
<br><br>
<form class="layui-form" action="/genUser/user/editSubmit" id="userForm"
method="post">
<input type="hidden" name="userId" id="userId" value="${user.userId}">
<div class="layui-form-item">
<label class="layui-form-label">头像</label>
<div class="layui-input-inline">
<div class="layui-upload">
<div class="layui-upload-list" style="">
<img class="layui-upload-img" src="${user.userAvatar}" id="demo1" width="100"
height="100">
<p id="demoText"></p>
</div>
<button type="button" class="layui-btn" id="test1">上传图片</button>
<input type="hidden" name="userAvatar" id="userAvatar" value="${user.userAvatar}">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">用户名 <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-inline">
<input type="text" value="${user.userName}" name="userName" id="userName" required
lay-verify="userName"
autocomplete="off" class="layui-input" onblur="checkUserName()">
</div>
<div class="layui-form-mid layui-word-aux" id="userNameTips"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码 <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-inline">
<input type="password" name="userPass" value="${user.userPass}" id="userPass" required
autocomplete="off" class="layui-input" min="3" max="20">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">昵称 <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-inline">
<input type="text" name="userNickname" value="${user.userNickname}" required
placeholder="" autocomplete="off" min="2" max="10"
class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Email <span style="color: #FF5722; ">*</span></label>
<div class="layui-input-inline">
<input type="email" name="userEmail" value="${user.userEmail}" id="userEmail" required
lay-verify="userEmail"
class="layui-input" onblur="checkUserEmail()">
</div>
<div class="layui-form-mid layui-word-aux" id="userEmailTips"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">URL </label>
<div class="layui-input-inline">
<input type="url" name="userUrl" value="${user.userUrl}" placeholder="" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="userStatus" value="1" title="正常" <c:if test="${user.userStatus==1}">checked</c:if>>
<input type="radio" name="userStatus" value="0" title="禁用" <c:if test="${user.userStatus==0}">checked</c:if>>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="demo1" id="submit-btn">保存</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限(管理员为0,普通用户为1)</label>
<div class="layui-input-inline">
<input type="text" name="userAccess" value="${user.userAccess}" placeholder="" autocomplete="off"
class="layui-input">
</div>
</div>
</form>
</rapid:override>
<rapid:override name="footer-script">
<script>
//上传图片
layui.use('upload', function () {
var $ = layui.jquery,
upload = layui.upload;
var uploadInst = upload.render({
elem: '#test1',
url: '/admin/upload/img',
before: function (obj) {
obj.preview(function (index, file, result) {
$('#demo1').attr('src', result);
});
},
done: function (res) {
$("#userAvatar").attr("value", res.data.src);
if (res.code > 0) {
return layer.msg('上传失败');
}
},
error: function () {
var demoText = $('#demoText');
demoText.html('' +
'<span style="color: #FF5722;">上传失败</span>' +
' <a class="layui-btn layui-btn-mini demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
}
});
});
//添加用户检查用户名是否存在
function checkUserName() {
var result;
$.ajax({
async: false,//同步,待请求完毕后再执行后面的代码
type: "POST",
url: '/genUser/user/checkUserName',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: {"username": $("#userName").val(), "id": $("#userId").val()},
dataType: "json",
success: function (data) {
//用户名存在
if(data.code==1) {
$("#userNameTips").html(data.msg);
result=1;
}
//用户名不存在
if(data.code==0) {
$("#userNameTips").html(data.msg);
result=0;
}
},
error: function () {
// alert("数据获取失败")
}
})
return result;
}
//添加用户检查电子邮箱是否存在
function checkUserEmail() {
var result;
$.ajax({
async: false,//同步,待请求完毕后再执行后面的代码
type: "POST",
url: '/genUser/user/checkUserEmail',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: {"email": $("#userEmail").val(), "id": $("#userId").val()},
dataType: "json",
success: function (data) {
//用户名存在
if(data.code==1) {
$("#userEmailTips").html(data.msg);
result=1;
}
//用户名不存在
if(data.code==0) {
$("#userEmailTips").html(data.msg);
result=0;
}
},
error: function () {
//alert("数据获取失败")
}
})
return result;
}
</script>
</rapid:override>
<%@ include file="../Public/framework.jsp" %>
@Controller
@RequestMapping("/genUser/user")
public class UserBackController {
@Autowired
private UserService userService;
//用户基本信息显示
@RequestMapping(value = "/profile")
public ModelAndView userProfileView(HttpSession session){
ModelAndView modelAndView=new ModelAndView();
User user=(User)session.getAttribute("user");
User user1=userService.getUserById(user.getUserId());
modelAndView.addObject("user",user);
modelAndView.setViewName("User/User/profile");
return modelAndView;
}
/**
* 检查用户名是否存在
*
* @param request
* @return
*/
@RequestMapping(value = "/checkUserName",method = RequestMethod.POST)
@ResponseBody
public String checkUserName(HttpServletRequest request) {
Map<String, Object> map = new HashMap<String, Object>();
String username = request.getParameter("username");
User user = userService.getUserByName(username);
int id = Integer.valueOf(request.getParameter("id"));
//用户名已存在,但不是当前用户(编辑用户的时候,不提示)
if(user!=null) {
if(user.getUserId()!=id) {
map.put("code", 1);
map.put("msg", "用户名已存在!");
}
} else {
map.put("code",0);
map.put("msg","");
}
String result = new JSONObject(map).toString();
return result;
}
/**
* 检查Email是否存在
*
* @param request
* @return
*/
@RequestMapping(value = "/checkUserEmail",method = RequestMethod.POST)
@ResponseBody
public String checkUserEmail(HttpServletRequest request) {
Map<String, Object> map = new HashMap<String, Object>();
String email = request.getParameter("email");
User user = userService.getUserByEmail(email);
int id = Integer.valueOf(request.getParameter("id"));
//用户名已存在,但不是当前用户(编辑用户的时候,不提示)
if(user!=null) {
if(user.getUserId()!=id) {
map.put("code", 1);
map.put("msg", "电子邮箱已存在!");
}
} else {
map.put("code",0);
map.put("msg","");
}
String result = new JSONObject(map).toString();
return result;
}
/**
* 编辑用户页面显示
*
* @param id
* @return
*/
@RequestMapping(value = "/edit/{id}")
public ModelAndView editUserView(@PathVariable("id") Integer id) {
ModelAndView modelAndView = new ModelAndView();
User user = userService.getUserById(id);
modelAndView.addObject("user",user);
modelAndView.setViewName("User/User/edit");
return modelAndView;
}
/**
* 编辑用户提交
*
* @param user
* @return
*/
@RequestMapping(value = "/editSubmit",method = RequestMethod.POST)
public String editUserSubmit(User user) {
userService.updateUser(user);
return "redirect:/genUser/user/profile";
}
用户基本信息显示:
编辑用户信息页面:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章