JavaWeb_(SSH论坛)_五、帖子模块

基于SSH框架的小型论坛项目  

  一、项目入门  传送门

  二、框架整合  传送门

  三、用户模块  传送门

  四、页面显示  传送门

  五、帖子模块  传送门

  六、点赞模块  传送门

  七、辅助模块  传送门

回复帖子

  分析回复帖子

  拿到paste.title标签

                                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>">
                                            <s:property value="#paste.title" />
                                        </a>

  编写查看帖子模型驱动

  帖子模型驱动Web层

    //查看帖子详细信息
    public String getDetail() throws Exception{
    
        Paste paste = pasteService.findAllPasteByIdReturnPaste(pasteid);
        
        ActionContext.getContext().put("paste", paste);
        
        return "detail";
    }
    

  帖子模型驱动Service层

    public Paste findAllPasteByIdReturnPaste(String pasteid) {
        
        return pasteDao.findPasteByIdReturnPaste(pasteid);
    }

  帖子模板Dao层

    public Paste findPasteByIdReturnPaste(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from paste where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Paste.class);
        query.setParameter(1, pasteid);
        Paste result = (Paste) query.uniqueResult();
        return result;
    }

  帖子前端页面

  

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description"
    content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body>
    <iframe  src="head.html" scrolling="no" width="100%" height="65px" ></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">
                    <h1>帖子标题</h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span><span class="jie-admin"> <a
                            href="">点击置顶</a> </span> <span
                            class="layui-btn layui-btn-mini jie-admin"> <a href="">取消置顶</a>
                        </span> <span class="jie-admin" type="del" style="margin-left: 20px;">
                            <a>删除该帖</a> </span> 
                        </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i> 2 
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href=""> <img
                            src="res/images/uer.jpg" alt="头像"> <cite> 压缩
                                <em>2017-05-01发布</em> </cite> </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                             <span class="layui-btn layui-btn-mini jie-admin"><a
                                href="#">已完帖,无法编辑</a> </span> <span
                                class="layui-btn layui-btn-mini jie-admin" type="collect"
                                data-type="add"> <a id="collectPost">收藏</a> </span> <span
                                class="layui-btn layui-btn-mini jie-admin  layui-btn-danger"
                                type="collect" data-type="add"> <a>取消收藏</a> </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>帖子内容</p>
                    </div>
                </div>
                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <li data-id="12" class="jieda-daan"><a
                            name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img
                                    src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i>
                                        <!-- <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> --> </cite> </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i
                                    class="iconfont icon-zan"></i><em>12</em>
                                </span> 
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div> -->
                            </div></li>
                        <li data-id="13"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img
                                    src="res/images/uer.jpg" alt=""> <cite> <i>香菇</i>
                                        <em style="color:#FF9E3F">活雷锋</em> </cite> </a>
                                <div class="detail-hits">
                                    <span>刚刚</span>
                                </div>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>蓝瘦</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan" type="zan"><i
                                    class="iconfont icon-zan"></i><em>0</em>
                                </span> 
                                <div class="jieda-admin">
                                    <span type="del"><a href="#" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span>
                                    <span class="jieda-accept" type="accept">
                                    <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                </div>
                            </div></li>

                        <!-- <li class="fly-none">没有任何回答</li> -->
                    </ul>
                    <span
                                        id="toName">@ 压缩(楼主)</span>        
                    <div class="layui-form layui-form-pane">
                        <form action="">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                        <textarea id="L_content" name="content" required
                                        lay-verify="required" placeholder="我要回答"
                                        class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局(基本结构)</a> <span><i
                        class="iconfont">&#xe60b;</i> 6087</span>
                </dd>
                <dd>
                    <a href="">Java实现LayIM后端的核心代码</a> <span><i class="iconfont">&#xe60b;</i>
                        767</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局(基本结构)</a> <span><i
                        class="iconfont">&#xe60b;</i> 6087</span>
                </dd>
                <dd>
                    <a href="">Java实现LayIM后端的核心代码</a> <span><i class="iconfont">&#xe60b;</i>
                        767</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局(基本结构)</a> <span><i
                        class="iconfont">&#xe60b;</i> 6087</span>
                </dd>
                <dd>
                    <a href="">Java实现LayIM后端的核心代码</a> <span><i class="iconfont">&#xe60b;</i>
                        767</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局(基本结构)</a> <span><i
                        class="iconfont">&#xe60b;</i> 6087</span>
                </dd>
                <dd>
                    <a href="">Java实现LayIM后端的核心代码</a> <span><i class="iconfont">&#xe60b;</i>
                        767</span>
                </dd>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i
                        class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i
                        class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i
                        class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i
                        class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i
                        class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i
                        class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i
                        class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i
                        class="iconfont">&#xe60c;</i> 96</span>
                </dd>
            </dl>
        </div>
    </div>
 <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
  <script type="text/javascript">
    KE.show({
        id : 'L_content',
        resizeMode : 1,
        items : [
        'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold', 'italic', 'underline',
        'removeformat', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
        'insertunorderedlist', 'emoticons', 'image', 'link']
    });
  </script>
</body>
</html>
detail.html

  动态从数据库中获取帖子模块内容

                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span>
                        <span class="jie-admin">
                            <a href="">点击置顶</a>
                        </span>
                        <span class="layui-btn layui-btn-mini jie-admin">
                            <a href="">取消置顶</a>
                        </span>
                        <span class="jie-admin" type="del" style="margin-left: 20px;">
                            <a>删除该帖</a>
                        </span>
                        </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href="">

                            <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像">
                            <cite>
                                <s:property value="#paste.user.username" />
                                <em>
                                    <s:property value="#paste.createtime" />
                                    发布
                                </em>
                            </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin">
                                <a href="#">已完帖,无法编辑</a>
                            </span>
                            <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add">
                                <a id="collectPost">收藏</a>
                            </span>
                            <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add">
                                <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>
                
                

  

  Web层

package com.Gary.web;

import java.text.SimpleDateFormat;
import java.util.Date;

import com.Gary.domain.Paste;
import com.Gary.domain.User;
import com.Gary.service.PasteService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class PasteAction extends ActionSupport implements ModelDriven<Paste> {

    public Paste paste = new Paste();
    private PasteService pasteService;
    private String pasteid;
    
    
    //查看帖子详细信息
    public String getDetail() throws Exception{
    
        Paste paste = pasteService.findAllPasteByIdReturnPaste(pasteid);
        
        ActionContext.getContext().put("paste", paste);
        
        return "detail";
    }
    
    //添加帖子
    public String addPaste() throws Exception {
        User user = (User)ActionContext.getContext().getSession().get("user");
        
        if(user==null)
        {
            ActionContext.getContext().put("error", "只有登陆之后才可以发帖子!!");
            return "error";
        }
        
        //private Integer ansnum;
        paste.setAnsnum(0);
        //private String createtime;
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String createtime = format.format(date);
        paste.setCreatetime(createtime);
        //private Integer glanceover;
        paste.setGlanceover(0);
        //是否结帖  0未结 1结束
        //private Integer solve;
        paste.setSolve(0);
        //private Integer isdelete;
        paste.setIsdelete(0);
        //private User user;
        
        paste.setUser(user);
        
        pasteService.addPaste(paste);
        
        
        //重定向到主页
        return "toIndex";
    }

    public PasteService getPasteService() {
        return pasteService;
    }

    public void setPasteService(PasteService pasteService) {
        this.pasteService = pasteService;
    }

    @Override
    public Paste getModel() {
        // TODO Auto-generated method stub
        return paste;
    }

    public String getPasteid() {
        return pasteid;
    }

    public void setPasteid(String pasteid) {
        this.pasteid = pasteid;
    }
    
}
PasteAction.java

  Service层

package com.Gary.service;

import java.util.List;

import com.Gary.dao.PasteDao;
import com.Gary.domain.Paste;
import com.Gary.utils.PageBean;

public class PasteService {

    private PasteDao pasteDao;
    
    public Paste findAllPasteByIdReturnPaste(String pasteid) {
        
        
        
        return pasteDao.findPasteByIdReturnPaste(pasteid);
    }
    
    public PageBean getGlanceoverPageBean(Integer currentPage) {
        Integer totalCount = pasteDao.findAllPasteNum();
        PageBean glanceoverPageBean = new PageBean(currentPage, totalCount, 8);
        List<Paste> list = pasteDao.getGlanceoverPageList();
        glanceoverPageBean.setList(list);
        
        return glanceoverPageBean;
    }
    

    
    public PageBean getPastePageBean(Integer currentPage) {
        
        Integer totalCount = pasteDao.findAllPasteNum();
        PageBean pageBean = new PageBean(currentPage,totalCount,8);
        List<Paste> list = pasteDao.getPastePageList(pageBean.getStart(),pageBean.getPageSize());
        pageBean.setList(list);
        
        
        return pageBean;
    }
    
    public PasteDao getPasteDao() {
        return pasteDao;
    }

    public List<Paste> findAllPaste() {
    
        return pasteDao.findAllPaste();
    
    }
    
    public void setPasteDao(PasteDao pasteDao) {
        this.pasteDao = pasteDao;
    }

    public void addPaste(Paste paste) {
        
        pasteDao.addPaste(paste);
        
    }



    public PageBean getAnsnumPageBean(Integer currentPage) {
        //获得所有的帖子数目
        Integer totalCount = pasteDao.findAllPasteNum();
        //创建PageBean
        PageBean ansnumPageBean = new PageBean(currentPage, totalCount, 8);
        //得到List
        List<Paste> list = pasteDao.getAnsnumPageList();
        //封装List
        ansnumPageBean.setList(list);    
        return ansnumPageBean;
    }



}
PasteService.java

  Dao层

package com.Gary.dao;

import java.math.BigInteger;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.query.NativeQuery;
import org.hibernate.query.Query;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.Gary.domain.Paste;

public class PasteDao extends HibernateDaoSupport{
    
    public void addPaste(Paste paste) {
        
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        session.save(paste);
    }

    
    //HQL
    public List<Paste> findAllPaste() {
        
         Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        
        //书写SQL语句
        String hql = "from com.Gary.domain.Paste";
        Query query = session.createQuery(hql);
        
        List<Paste> list = query.list();
        
        return list;
    }

    //查找所有帖子的数量
    public Integer findAllPasteNum() {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select count(*) from paste";
        NativeQuery query = session.createSQLQuery(sql);
        BigInteger result = (BigInteger)query.uniqueResult();
        
        return result.intValue();
    }
    
    //分页
    public List<Paste> getPastePageList(Integer start, Integer pageSize) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from paste limit ?,?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Paste.class);
        query.setParameter(1, start);
        query.setParameter(2, pageSize);
        List<Paste> list = query.list();
        
        return list;
    }

    //最近热议
    public List<Paste> getGlanceoverPageList() {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from paste order by glanceover desc limit 0,8";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Paste.class);
        List list = query.list();
        return list;
    }


    public List<Paste> getAnsnumPageList() {
        //得到与当前线程绑定的session
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        //书写sql
        String sql = "select * from paste order by ansnum desc limit 0,8";
        //获得query
        NativeQuery query = session.createSQLQuery(sql);
        //将结果集封装为Paste对象
        query.addEntity(Paste.class);
        //获得sql的执行结果(结果为list)
        List list = query.list();
        return list;
    }


    //查看帖子
    public Paste findPasteByIdReturnPaste(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from paste where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Paste.class);
        query.setParameter(1, pasteid);
        Paste result = (Paste) query.uniqueResult();
        return result;
    }


}
PasteDao.java

   帖子模块前端页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description" content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body style="margin: -2px">
    <iframe src="head.jsp" scrolling="no" width="100%" height="110px"></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span>
                        <span class="jie-admin">
                            <a href="">点击置顶</a>
                        </span>
                        <span class="layui-btn layui-btn-mini jie-admin">
                            <a href="">取消置顶</a>
                        </span>
                        <span class="jie-admin" type="del" style="margin-left: 20px;">
                            <a>删除该帖</a>
                        </span>
                        </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href="">

                            <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像">
                            <cite>
                                <s:property value="#paste.user.username" />
                                <em>
                                    <s:property value="#paste.createtime" />
                                    发布
                                </em>
                            </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin">
                                <a href="#">已完帖,无法编辑</a>
                            </span>
                            <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add">
                                <a id="collectPost">收藏</a>
                            </span>
                            <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add">
                                <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>
                
                
                
                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <li data-id="12" class="jieda-daan"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i> <!-- <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> -->
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i class="iconfont icon-zan"></i><em>12</em> </span>
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div> -->
                            </div></li>
                        <li data-id="13"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>香菇</i> <em style="color: #FF9E3F">活雷锋</em>
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>刚刚</span>
                                </div>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>蓝瘦</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan" type="zan"><i class="iconfont icon-zan"></i><em>0</em> </span>
                                <div class="jieda-admin">
                                    <span type="del"><a href="#" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span> <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                </div>
                            </div></li>

                        <!-- <li class="fly-none">没有任何回答</li> -->
                    </ul>
                    <span id="toName">@ 压缩(楼主)</span>
                    <div class="layui-form layui-form-pane">
                        <form action="">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局(基本结构)</a> <span><i class="iconfont">&#xe60b;</i> 6087</span>
                </dd>
                <dd>
                    <a href="">Java实现LayIM后端的核心代码</a> <span><i class="iconfont">&#xe60b;</i> 767</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局(基本结构)</a> <span><i class="iconfont">&#xe60b;</i> 6087</span>
                </dd>
                <dd>
                    <a href="">Java实现LayIM后端的核心代码</a> <span><i class="iconfont">&#xe60b;</i> 767</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局(基本结构)</a> <span><i class="iconfont">&#xe60b;</i> 6087</span>
                </dd>
                <dd>
                    <a href="">Java实现LayIM后端的核心代码</a> <span><i class="iconfont">&#xe60b;</i> 767</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局(基本结构)</a> <span><i class="iconfont">&#xe60b;</i> 6087</span>
                </dd>
                <dd>
                    <a href="">Java实现LayIM后端的核心代码</a> <span><i class="iconfont">&#xe60b;</i> 767</span>
                </dd>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i class="iconfont">&#xe60c;</i> 96</span>
                </dd>
                <dd>
                    <a href="">使用 layui 秒搭后台大布局之基本结构</a> <span><i class="iconfont">&#xe60c;</i> 96</span>
                </dd>
            </dl>
        </div>
    </div>
    <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'L_content',
            resizeMode : 1,
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script>
</body>
</html>
detail.jsp

  当浏览一个帖子时,帖子的浏览数目需要+1  (数据库中glanceover+1)

  Service层中findAllPasteByIdReturnPaste()编写传送数据到Dao层修改数据库中glanceover语句

    public Paste findAllPasteByIdReturnPaste(String pasteid) {
        
        pasteDao.addPasteGlanceover(pasteid);
        //SQL语句写法:update paste set glanceover = glanceover+1 where id = ?;
        
        return pasteDao.findPasteByIdReturnPaste(pasteid);
    }

   帖子回复glanceover+1

public void addPasteGlanceover(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "update paste set glanceover = glanceover+1 where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.setParameter(1, pasteid);
        query.executeUpdate();    
    }

package com.Gary.service;

import java.util.List;

import com.Gary.dao.PasteDao;
import com.Gary.domain.Paste;
import com.Gary.utils.PageBean;

public class PasteService {

    private PasteDao pasteDao;
    
    public Paste findAllPasteByIdReturnPaste(String pasteid) {
        
        pasteDao.addPasteGlanceover(pasteid);
        //SQL语句写法:update paste set glanceover = glanceover+1 where id = ?;
        
        return pasteDao.findPasteByIdReturnPaste(pasteid);
    }
    
    public PageBean getGlanceoverPageBean(Integer currentPage) {
        Integer totalCount = pasteDao.findAllPasteNum();
        PageBean glanceoverPageBean = new PageBean(currentPage, totalCount, 8);
        List<Paste> list = pasteDao.getGlanceoverPageList();
        glanceoverPageBean.setList(list);
        
        return glanceoverPageBean;
    }
    

    
    public PageBean getPastePageBean(Integer currentPage) {
        
        Integer totalCount = pasteDao.findAllPasteNum();
        PageBean pageBean = new PageBean(currentPage,totalCount,8);
        List<Paste> list = pasteDao.getPastePageList(pageBean.getStart(),pageBean.getPageSize());
        pageBean.setList(list);
        
        
        return pageBean;
    }
    
    public PasteDao getPasteDao() {
        return pasteDao;
    }

    public List<Paste> findAllPaste() {
    
        return pasteDao.findAllPaste();
    
    }
    
    public void setPasteDao(PasteDao pasteDao) {
        this.pasteDao = pasteDao;
    }

    public void addPaste(Paste paste) {
        
        pasteDao.addPaste(paste);
        
    }



    public PageBean getAnsnumPageBean(Integer currentPage) {
        //获得所有的帖子数目
        Integer totalCount = pasteDao.findAllPasteNum();
        //创建PageBean
        PageBean ansnumPageBean = new PageBean(currentPage, totalCount, 8);
        //得到List
        List<Paste> list = pasteDao.getAnsnumPageList();
        //封装List
        ansnumPageBean.setList(list);    
        return ansnumPageBean;
    }



}
PasteService.java
package com.Gary.dao;

import java.math.BigInteger;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.query.NativeQuery;
import org.hibernate.query.Query;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.Gary.domain.Paste;

public class PasteDao extends HibernateDaoSupport{
    
    public void addPaste(Paste paste) {
        
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        session.save(paste);
    }

    
    //HQL
    public List<Paste> findAllPaste() {
        
         Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        
        //书写SQL语句
        String hql = "from com.Gary.domain.Paste";
        Query query = session.createQuery(hql);
        
        List<Paste> list = query.list();
        
        return list;
    }

    //查找所有帖子的数量
    public Integer findAllPasteNum() {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select count(*) from paste";
        NativeQuery query = session.createSQLQuery(sql);
        BigInteger result = (BigInteger)query.uniqueResult();
        
        return result.intValue();
    }
    
    //分页
    public List<Paste> getPastePageList(Integer start, Integer pageSize) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from paste limit ?,?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Paste.class);
        query.setParameter(1, start);
        query.setParameter(2, pageSize);
        List<Paste> list = query.list();
        
        return list;
    }

    //最近热议
    public List<Paste> getGlanceoverPageList() {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from paste order by glanceover desc limit 0,8";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Paste.class);
        List list = query.list();
        return list;
    }


    public List<Paste> getAnsnumPageList() {
        //得到与当前线程绑定的session
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        //书写sql
        String sql = "select * from paste order by ansnum desc limit 0,8";
        //获得query
        NativeQuery query = session.createSQLQuery(sql);
        //将结果集封装为Paste对象
        query.addEntity(Paste.class);
        //获得sql的执行结果(结果为list)
        List list = query.list();
        return list;
    }


    //查看帖子
    public Paste findPasteByIdReturnPaste(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from paste where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Paste.class);
        query.setParameter(1, pasteid);
        Paste result = (Paste) query.uniqueResult();
        return result;
    }

    //帖子回复glanceover+1
    public void addPasteGlanceover(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "update paste set glanceover = glanceover+1 where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.setParameter(1, pasteid);
        query.executeUpdate();    
    }
    
}
PasteDao.java

  为了尽可能少的访问数据,利用数据持久状态

    public Paste findPasteByIdReturnPaste(String pasteid) {
        
        //pasteDao.addPasteGlanceover(pasteid);
        //数据库SQL语句:update paste set glanceover = glanceover+1 where id = ?;
        Paste paste = pasteDao.findPasteByIdReturnPaste(pasteid);
        paste.setGlanceover(paste.getGlanceover()+1);
        return paste;
    }

  编写帖子模块最近热帖和最近热议

  帖子模块的最近热帖和最近热议应该动态从数据库中获取

  PasteAction.java

 //查看帖子详细信息
    public String getDetail() throws Exception{
    
        //得到最近热帖
        PageBean glanceoverPageBean = pasteService.getGlanceoverPageBean(null);
        ActionContext.getContext().put("glanceoverPageBean", glanceoverPageBean);
                
        //得到最近热议
        PageBean ansnumPageBean = pasteService.getAnsnumPageBean(null);
        ActionContext.getContext().put("ansnumPageBean", ansnumPageBean);
                
        
        Paste paste = pasteService.findPasteByIdReturnPaste(pasteid);
        ActionContext.getContext().put("paste", paste);
        
        return "detail";
    }

  修改detail.jsp

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>">
                            <s:property value="#paste.title" />
                        </a>
                        <span>
                            <i class="iconfont">&#xe60b;</i>
                            <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>">
                            <s:property value="#paste.title" />
                        </a>
                        <span>
                            <i class="iconfont">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

  Web层

package com.Gary.web;

import java.util.List;

import com.Gary.domain.Paste;
import com.Gary.service.PasteService;
import com.Gary.service.UserService;
import com.Gary.utils.PageBean;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class GetDataAction extends ActionSupport{

    private PasteService pasteService;
    private UserService userService;
    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    private Integer currentPage;
    

    public String getData() throws Exception {
        
        //得到帖子
        PageBean pastePageBean = pasteService.getPastePageBean(currentPage);
        ActionContext.getContext().put("pastePageBean", pastePageBean);
        
        //得到最近热帖
        PageBean glanceoverPageBean = pasteService.getGlanceoverPageBean(currentPage);
        ActionContext.getContext().put("glanceoverPageBean", glanceoverPageBean);
        
        //得到最近热议
        PageBean ansnumPageBean = pasteService.getAnsnumPageBean(currentPage);
        ActionContext.getContext().put("ansnumPageBean", ansnumPageBean);
        
        //得到专家排行
        PageBean userPageBean = userService.getUserPageBean(currentPage);
        ActionContext.getContext().put("userPageBean", userPageBean);
        
        return "index";
    }

    public PasteService getPasteService() {
        return pasteService;
    }

    public void setPasteService(PasteService pasteService) {
        this.pasteService = pasteService;
    }
    
    public Integer getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }
}
GetDataAction.java
package com.Gary.web;

import java.text.SimpleDateFormat;
import java.util.Date;

import com.Gary.domain.Paste;
import com.Gary.domain.User;
import com.Gary.service.PasteService;
import com.Gary.utils.PageBean;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class PasteAction extends ActionSupport implements ModelDriven<Paste> {

    public Paste paste = new Paste();
    private PasteService pasteService;
    private String pasteid;
    
    
    //查看帖子详细信息
    public String getDetail() throws Exception{
    
        //得到最近热帖
        PageBean glanceoverPageBean = pasteService.getGlanceoverPageBean(null);
        ActionContext.getContext().put("glanceoverPageBean", glanceoverPageBean);
                
        //得到最近热议
        PageBean ansnumPageBean = pasteService.getAnsnumPageBean(null);
        ActionContext.getContext().put("ansnumPageBean", ansnumPageBean);
                
        
        Paste paste = pasteService.findPasteByIdReturnPaste(pasteid);
        ActionContext.getContext().put("paste", paste);
        
        return "detail";
    }
    
    //添加帖子
    public String addPaste() throws Exception {
        User user = (User)ActionContext.getContext().getSession().get("user");
        
        if(user==null)
        {
            ActionContext.getContext().put("error", "只有登陆之后才可以发帖子!!");
            return "error";
        }
        
        //private Integer ansnum;
        paste.setAnsnum(0);
        //private String createtime;
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String createtime = format.format(date);
        paste.setCreatetime(createtime);
        //private Integer glanceover;
        paste.setGlanceover(0);
        //是否结帖  0未结 1结束
        //private Integer solve;
        paste.setSolve(0);
        //private Integer isdelete;
        paste.setIsdelete(0);
        //private User user;
        
        paste.setUser(user);
        
        pasteService.addPaste(paste);
        
        
        //重定向到主页
        return "toIndex";
    }

    public PasteService getPasteService() {
        return pasteService;
    }

    public void setPasteService(PasteService pasteService) {
        this.pasteService = pasteService;
    }

    @Override
    public Paste getModel() {
        // TODO Auto-generated method stub
        return paste;
    }

    public String getPasteid() {
        return pasteid;
    }

    public void setPasteid(String pasteid) {
        this.pasteid = pasteid;
    }
    
}
PasteAction.java

  前端页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description" content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body style="margin: -2px">
    <iframe src="head.jsp" scrolling="no" width="100%" height="110px"></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span>
                        <span class="jie-admin">
                            <a href="">点击置顶</a>
                        </span>
                        <span class="layui-btn layui-btn-mini jie-admin">
                            <a href="">取消置顶</a>
                        </span>
                        <span class="jie-admin" type="del" style="margin-left: 20px;">
                            <a>删除该帖</a>
                        </span>
                        </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href="">

                            <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像">
                            <cite>
                                <s:property value="#paste.user.username" />
                                <em>
                                    <s:property value="#paste.createtime" />
                                    发布
                                </em>
                            </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin">
                                <a href="#">已完帖,无法编辑</a>
                            </span>
                            <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add">
                                <a id="collectPost">收藏</a>
                            </span>
                            <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add">
                                <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>
                
                
                
                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <li data-id="12" class="jieda-daan"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i> <!-- <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> -->
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i class="iconfont icon-zan"></i><em>12</em> </span>
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div> -->
                            </div></li>
                        <li data-id="13"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>香菇</i> <em style="color: #FF9E3F">活雷锋</em>
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>刚刚</span>
                                </div>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>蓝瘦</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan" type="zan"><i class="iconfont icon-zan"></i><em>0</em> </span>
                                <div class="jieda-admin">
                                    <span type="del"><a href="#" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span> <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                </div>
                            </div></li>

                        <!-- <li class="fly-none">没有任何回答</li> -->
                    </ul>
                    <span id="toName">@ 压缩(楼主)</span>
                    <div class="layui-form layui-form-pane">
                        <form action="">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>">
                            <s:property value="#paste.title" />
                        </a>
                        <span>
                            <i class="iconfont">&#xe60b;</i>
                            <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>">
                            <s:property value="#paste.title" />
                        </a>
                        <span>
                            <i class="iconfont">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>
        </div>
    </div>
    
    <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'L_content',
            resizeMode : 1,
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script>
</body>
</html>
detail.jsp

分析回复帖子模块

  创建回复帖子Action骨架

public class AnswerAction extends ActionSupport implements ModelDriven<Answer>{

    public Answer answer = new Answer();
    private AnswerService answerService;
    
    
    public String addAnswer() throws Exception {    
        
        answerService.addAnswer(answer);
        
        return "success";
    }
    
    
    public Answer getModel() {    
        
        return answer;
    }


}

  完成Answer实体

    private String id;
    //内容
    private String content;
    //回复时间
    private String anstime;
    //同意数
    private Integer agree;
    //是否解决
    private Integer solve;
    
    private User user;
    
    private Paste paste;
    
    //登录的用户是否点赞了改回复
    private Integer loginUserIsAgree;
package com.Gary.domain;

public class Answer {

    
    private String id;
    //内容
    private String content;
    //回复时间
    private String anstime;
    //同意数
    private Integer agree;
    //是否解决
    private Integer solve;
    
    private User user;
    
    private Paste paste;
    
    //登录的用户是否点赞了改回复
    private Integer loginUserIsAgree;
    
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content.replaceAll("<br />", ".");;
    }
    public String getAnstime() {
        return anstime;
    }
    public void setAnstime(String anstime) {
        this.anstime = anstime;
    }
    public Integer getAgree() {
        return agree;
    }
    public void setAgree(Integer agree) {
        this.agree = agree;
    }
    public Integer getSolve() {
        return solve;
    }
    public void setSolve(Integer solve) {
        this.solve = solve;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    public Paste getPaste() {
        return paste;
    }
    public void setPaste(Paste paste) {
        this.paste = paste;
    }
    public Integer getLoginUserIsAgree() {
        return loginUserIsAgree;
    }
    public void setLoginUserIsAgree(Integer loginUserIsAgree) {
        this.loginUserIsAgree = loginUserIsAgree;
    }
    
}
Answer.java

  Web层

package com.Gary.web;


import com.Gary.domain.Answer;
import com.Gary.service.AnswerService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class AnswerAction extends ActionSupport implements ModelDriven<Answer>{

    public Answer answer = new Answer();
    private AnswerService answerService;
    
    
    public String addAnswer() throws Exception {    
        
        answerService.addAnswer(answer);
        
        return "success";
    }
    
    
    public Answer getModel() {    
        
        return answer;
    }


}
AnswerAction.java

  Service层

package com.Gary.service;

import com.Gary.dao.AnswerDao;
import com.Gary.domain.Answer;

public class AnswerService {

    private AnswerDao answerDao;
    
    public AnswerDao getAnswerDao() {
        return answerDao;
    }

    public void setAnswerDao(AnswerDao answerDao) {
        this.answerDao = answerDao;
    }


    public void addAnswer(Answer answer) {
        // TODO Auto-generated method stub
        answerDao.addAnswer(answer);
    }




}
AnswerService.java

  Dao层

package com.Gary.dao;

import org.hibernate.Session;
import org.hibernate.query.NativeQuery;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.Gary.domain.Answer;

public class AnswerDao extends HibernateDaoSupport{

    public void addAnswer(Answer answer) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        session.save(answer);
    }


}
AnswerDao.java

  User.java用户模块中添加一个用户回复Set<Paste> answerPasteSet

    //用户回复
    private Set<Paste> answerPasteSet = new HashSet<Paste>();
    
    public Set<Paste> getAnswerPasteSet() {
        return answerPasteSet;
    }
    public void setAnswerPasteSet(Set<Paste> answerPasteSet) {
        this.answerPasteSet = answerPasteSet;
    }

  在User.hbm.xml中添加一对多的关系

        <set name="answerPasteSet">
            <key  column="pasteid"></key>
            <one-to-many class="Answer"/>
        </set>

  分析用户帖子一对多的关系

   在Paste.java中添加HashSet<User>用户回复

    private Set<User> userAnswerSet = new HashSet<User>();
    
    public Set<User> getUserAnswerSet() {
        return userAnswerSet;
    }
    public void setUserAnswerSet(Set<User> userAnswerSet) {
        this.userAnswerSet = userAnswerSet;
    }

   Paste.hbm.xml中绑定用户与表一对多的关系

     <set name="userAnswerSet">
         <!-- 外键的类名 -->
         <key column="userid"></key>
         <!-- 外键的类名的类 -->
         <one-to-many class="Answer"/>
     </set>

   

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping package="com.Gary.domain">

    <class name="Answer" table="answer">
        <id name="id">
            <generator class="uuid"></generator>
        </id>
        
        <property name="content" column="content"></property>
        <property name="anstime" column="anstime"></property>
        <property name="agree" column="agree"></property>
        <property name="solve" column="solve"></property>
        
        <many-to-one name="user" column="userid" class="User"></many-to-one>
        <!-- colum为外键的字段名字 -->
        <many-to-one name="paste" column="pasteid" class="Paste"></many-to-one>
        
        
    </class>
</hibernate-mapping>
Answer.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.Gary.domain">
    <class name="Paste" table="paste">
        <id name="id">
            <generator class="uuid"></generator>
        </id>
        
    <!--private String title;
        private String content;
        private Integer offer;
        private Integer ansnum;
        private String createtime;
        private Integer glanceover;
        //是否结帖
        private Integer solve;
        private Integer isdelete;-->


         <property name="title" column="title"></property>
         <property name="content" column="content"></property>
         <property name="offer" column="offer"></property>
         <property name="ansnum" column="ansnum"></property>
         <property name="createtime" column="createtime"></property>
         <property name="glanceover" column="glanceover"></property>
         <property name="solve" column="solve"></property>
         <property name="isdelete" column="isdelete"></property>
    
    
    <many-to-one name="user" class="User" column="userid" insert="true"></many-to-one>
    
         <set name="userAnswerSet">
             <!-- 外键的类名 -->
             <key column="userid"></key>
             <!-- 外键的类名的类 -->
             <one-to-many class="Answer"/>
         </set>
         
    
    </class>
</hibernate-mapping>
Paste.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping package="com.Gary.domain">

    <class name="Answer" table="answer">
        <id name="id">
            <generator class="uuid"></generator>
        </id>
        
        <property name="content" column="content"></property>
        <property name="anstime" column="anstime"></property>
        <property name="agree" column="agree"></property>
        <property name="solve" column="solve"></property>
        
        <many-to-one name="user" column="userid" class="User"></many-to-one>
        <!-- colum为外键的字段名字 -->
        <many-to-one name="paste" column="pasteid" class="Paste"></many-to-one>
        
        
    </class>
</hibernate-mapping>
Answer.hbm.xml

  此时点击提交回答按钮后表单无法发送问题!!!

  修改detail中的表单

<div class="layui-form layui-form-pane">
                        <!-- <form action="${pageContext.request.contextPath }/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form> -->
                        <form action="${pageContext.request.contextPath}/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <div class="editor">
                                        <textarea id="content" name="content" style=" 690px; height: 300px; visibility: hidden;"></textarea>
                                    </div>
                                </div>
                            
                            </div>
                            
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
                            </div>
                        </form>
                    </div>

  可以看到,修改完表单后,在未登录的轻快下,点击提交回答按钮后页面会自动跳转到登陆页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description" content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body style="margin: -2px">
    <iframe src="head.jsp" scrolling="no" width="100%" height="110px"></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span> <span class="jie-admin"> <a href="">点击置顶</a>
                        </span> <span class="layui-btn layui-btn-mini jie-admin"> <a href="">取消置顶</a>
                        </span> <span class="jie-admin" type="del" style="margin-left: 20px;"> <a>删除该帖</a>
                        </span> </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href=""> <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像"> <cite> <s:property value="#paste.user.username" /> <em> <s:property value="#paste.createtime" /> 发布
                            </em>
                        </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin"> <a href="#">已完帖,无法编辑</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add"> <a id="collectPost">收藏</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add"> <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>



                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <li data-id="12" class="jieda-daan"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i> <!-- <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> -->
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i class="iconfont icon-zan"></i><em>12</em> </span>
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div> -->
                            </div></li>
                        <li data-id="13"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>香菇</i> <em style="color: #FF9E3F">活雷锋</em>
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>刚刚</span>
                                </div>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>蓝瘦</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan" type="zan"><i class="iconfont icon-zan"></i><em>0</em> </span>
                                <div class="jieda-admin">
                                    <span type="del"><a href="#" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span> <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                </div>
                            </div></li>

                        <!-- <li class="fly-none">没有任何回答</li> -->
                    </ul>
                    <span id="toName">@ 压缩(楼主)</span>
                    <div class="layui-form layui-form-pane">
                        <!-- <form action="${pageContext.request.contextPath }/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form> -->
                        <form action="${pageContext.request.contextPath}/PasteAction_addPaste">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <div class="editor">
                                        <textarea id="content" name="content" style=" 690px; height: 300px; visibility: hidden;"></textarea>
                                    </div>
                                </div>
                            
                            </div>
                            
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60b;</i> <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60c;</i> <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>
        </div>
    </div>

    <%-- <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'L_content',
            resizeMode : 1,
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script> --%>
        <script type="text/javascript" charset="utf-8" src="js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'content',
            resizeMode : 1,
            cssPath : './index.css',
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script>
    <script>
        layui.cache.page = '';
        layui.cache.user = {
            username : '游客',
            uid : -1,
            avatar : '../res/images/avatar/00.jpg',
            experience : 83,
            sex : ''
        };
        layui.config({
            version : "2.0.0",
            base : '../res/mods/'
        }).extend({
            fly : 'index'
        }).use('fly');
    </script>
</body>
</html>
detail.jsp

  测试登陆用户发帖模块

   

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description" content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body style="margin: -2px">
    <iframe src="head.jsp" scrolling="no" width="100%" height="110px"></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span> <span class="jie-admin"> <a href="">点击置顶</a>
                        </span> <span class="layui-btn layui-btn-mini jie-admin"> <a href="">取消置顶</a>
                        </span> <span class="jie-admin" type="del" style="margin-left: 20px;"> <a>删除该帖</a>
                        </span> </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href=""> <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像"> <cite> <s:property value="#paste.user.username" /> <em> <s:property value="#paste.createtime" /> 发布
                            </em>
                        </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin"> <a href="#">已完帖,无法编辑</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add"> <a id="collectPost">收藏</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add"> <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>



                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <li data-id="12" class="jieda-daan"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i> <!-- <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> -->
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i class="iconfont icon-zan"></i><em>12</em> </span>
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div> -->
                            </div></li>
                        <li data-id="13"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>香菇</i> <em style="color: #FF9E3F">活雷锋</em>
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>刚刚</span>
                                </div>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>蓝瘦</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan" type="zan"><i class="iconfont icon-zan"></i><em>0</em> </span>
                                <div class="jieda-admin">
                                    <span type="del"><a href="#" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span> <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                </div>
                            </div></li>

                        <!-- <li class="fly-none">没有任何回答</li> -->
                    </ul>
                    <span id="toName">@ 压缩(楼主)</span>
                    <div class="layui-form layui-form-pane">
                        <!-- <form action="${pageContext.request.contextPath }/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form> -->
                        <form action="${pageContext.request.contextPath}/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <div class="editor">
                                        <textarea id="content" name="content" style=" 690px; height: 300px; visibility: hidden;"></textarea>
                                    </div>
                                </div>
                            
                            </div>
                            
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60b;</i> <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60c;</i> <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>
        </div>
    </div>

    <%-- <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'L_content',
            resizeMode : 1,
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script> --%>
        <script type="text/javascript" charset="utf-8" src="js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'content',
            resizeMode : 1,
            cssPath : './index.css',
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script>
    <script>
        layui.cache.page = '';
        layui.cache.user = {
            username : '游客',
            uid : -1,
            avatar : '../res/images/avatar/00.jpg',
            experience : 83,
            sex : ''
        };
        layui.config({
            version : "2.0.0",
            base : '../res/mods/'
        }).extend({
            fly : 'index'
        }).use('fly');
    </script>
</body>
</html>
detail.jsp

  此时发现跳转过来的页面全部问题、最近热帖、最近热议、专家排行榜都是空的白的,接下来需要实现重定向到Action

  添加addAnswer()请求,如果用户成功回复,则返回"toDetail“

    public String addAnswer() throws Exception {    
        
        User user =    (User) ActionContext.getContext().getSession().get("user");
        if(user == null)
        {
            ActionContext.getContext().put("error", "未登录不能回复!!");
            return "error";
        }
        
//        //回复时间
//        private String anstime;
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String anstime = format.format(date);
        answer.setAnstime(anstime);
//        //同意数
//        private Integer agree;
        answer.setAgree(0);
//        //是否解决
//        private Integer solve;
        answer.setSolve(0);
//        
//        private User user;
        answer.setUser(user);
//        
//        private Paste paste;
        Paste paste = pasteService.findPasteByIdReturnPaste(pasteid);
        answer.setPaste(paste);
        
        answerService.addAnswer(answer,paste);
        answerService.addAnswer(answer);
        
        
        
        return "toDetail";
    }

   在struts.xml中配置toDetail结果集成重定向到action中

    <action name="AnswerAction_*" class="com.Gary.web.AnswerAction" method="{1}">
            <result name="error">/login.jsp</result>
            <!-- 重定向到Action -->
            <result name="toDetail" type="redirectAction">
                <param name="actionName">PasteAction_getDetail</param>
                <!-- struts不认识pasteid则会封装到重定向的action中 -->
                <param name="pasteid">${pasteid}</param>
            </result>
        </action>
    </package>

package com.Gary.web;

import java.text.SimpleDateFormat;
import java.util.Date;
import com.Gary.domain.Answer;
import com.Gary.domain.Paste;
import com.Gary.domain.User;
import com.Gary.service.AnswerService;
import com.Gary.service.PasteService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class AnswerAction extends ActionSupport implements ModelDriven<Answer>{

    public Answer answer = new Answer();
    private AnswerService answerService;
    private String pasteid;
    private PasteService pasteService;
    
    public AnswerService getAnswerService() {
        return answerService;
    }

    public void setAnswerService(AnswerService answerService) {
        this.answerService = answerService;
    }

    public PasteService getPasteService() {
        return pasteService;
    }

    public void setPasteService(PasteService pasteService) {
        this.pasteService = pasteService;
    }

    public String getPasteid() {
        return pasteid;
    }

    public void setPasteid(String pasteid) {
        this.pasteid = pasteid;
    }

    
    
    public String addAnswer() throws Exception {    
        
        User user =    (User) ActionContext.getContext().getSession().get("user");
        if(user == null)
        {
            ActionContext.getContext().put("error", "未登录不能回复!!");
            return "error";
        }
        
//        //回复时间
//        private String anstime;
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String anstime = format.format(date);
        answer.setAnstime(anstime);
//        //同意数
//        private Integer agree;
        answer.setAgree(0);
//        //是否解决
//        private Integer solve;
        answer.setSolve(0);
//        
//        private User user;
        answer.setUser(user);
//        
//        private Paste paste;
        Paste paste = pasteService.findPasteByIdReturnPaste(pasteid);
        answer.setPaste(paste);
        
        answerService.addAnswer(answer,paste);
        answerService.addAnswer(answer);
        
        
        
        return "toDetail";
    }
    
    
    public Answer getModel() {    
        
        return answer;
    }


}
AnswerAction.java
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

    <!--开启动态方法调用 -->
    <constant name="struts.devMode" value="true"></constant>
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

    <!-- 告诉struts不用自己创建Action,Spring来帮你创建 -->
    <constant name="struts.objectFactory" value="spring"></constant>
    <package name="Gary_SSHForum" namespace="/" extends="struts-default">
        <!-- 允许全部方法 -->
        <global-allowed-methods>regex:.*</global-allowed-methods>
        <action name="UserAction_*" class="com.Gary.web.UserAction" method="{1}">
            <result name="toLogin" type="redirect">/login.jsp</result>
            <result name="login">/login.jsp</result>
            <result name="toIndex" type="redirect">/default.jsp</result>
            <result name="error">/login.jsp</result>
            <result name="toRegisterSuccess" type="redirect">/registerSuccess.jsp</result>
        </action>
    
    <action name="PasteAction_*" class="com.Gary.web.PasteAction" method="{1}">
        <!-- 从定向到jsp -->
        <result name="toIndex" type="redirect">/default.jsp</result>
        <result name="error">/login.jsp</result>
        <!-- 转发到jsp -->
        <result name="detail">/detail.jsp</result>
    </action>
    
    <action name="GetDataAction_*"  class="com.Gary.web.GetDataAction" method="{1}">
        <result name="index" >/index.jsp</result>
    </action>
    <action name="AnswerAction_*" class="com.Gary.web.AnswerAction" method="{1}">
            <result name="error">/login.jsp</result>
            <!-- 重定向到Action -->
            <result name="toDetail" type="redirectAction">
                <param name="actionName">PasteAction_getDetail</param>
                <!-- struts不认识pasteid则会封装到重定向的action中 -->
                <param name="pasteid">${pasteid}</param>
            </result>
        </action>
    </package>

</struts>
struts.xml

查看所有回复

  分析查看回复

  Web层

package com.Gary.web;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import com.Gary.domain.Answer;
import com.Gary.domain.Paste;
import com.Gary.domain.User;
import com.Gary.service.AnswerService;
import com.Gary.service.PasteService;
import com.Gary.utils.PageBean;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class PasteAction extends ActionSupport implements ModelDriven<Paste> {

    public Paste paste = new Paste();
    private String pasteid;
    
    private PasteService pasteService;
    private AnswerService answerService;
    
    //查看帖子详细信息
    public String getDetail() throws Exception{
    
        //得到最近热帖
        PageBean glanceoverPageBean = pasteService.getGlanceoverPageBean(null);
        ActionContext.getContext().put("glanceoverPageBean", glanceoverPageBean);
                
        //得到最近热议
        PageBean ansnumPageBean = pasteService.getAnsnumPageBean(null);
        ActionContext.getContext().put("ansnumPageBean", ansnumPageBean);
                
        //获得帖子
        Paste paste = pasteService.findPasteByIdReturnPaste(pasteid);
        ActionContext.getContext().put("paste", paste);
        
        //获得该帖子的所有回复
        List<Answer> answerList = answerService.findAllAnswerByPasteid(pasteid);
        ActionContext.getContext().put("answerList", answerList);
        
        return "detail";
    }
    
    public AnswerService getAnswerService() {
        return answerService;
    }

    public void setAnswerService(AnswerService answerService) {
        this.answerService = answerService;
    }

    //添加帖子
    public String addPaste() throws Exception {
        User user = (User)ActionContext.getContext().getSession().get("user");
        
        if(user==null)
        {
            ActionContext.getContext().put("error", "只有登陆之后才可以发帖子!!");
            return "error";
        }
        
        //private Integer ansnum;
        paste.setAnsnum(0);
        //private String createtime;
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String createtime = format.format(date);
        paste.setCreatetime(createtime);
        //private Integer glanceover;
        paste.setGlanceover(0);
        //是否结帖  0未结 1结束
        //private Integer solve;
        paste.setSolve(0);
        //private Integer isdelete;
        paste.setIsdelete(0);
        //private User user;
        
        paste.setUser(user);
        
        pasteService.addPaste(paste);
        
        
        //重定向到主页
        return "toIndex";
    }

    public PasteService getPasteService() {
        return pasteService;
    }

    public void setPasteService(PasteService pasteService) {
        this.pasteService = pasteService;
    }

    @Override
    public Paste getModel() {
        // TODO Auto-generated method stub
        return paste;
    }

    public String getPasteid() {
        return pasteid;
    }

    public void setPasteid(String pasteid) {
        this.pasteid = pasteid;
    }
    
}
PasteAction.java

  Service层

package com.Gary.service;

import java.util.List;

import com.Gary.dao.AnswerDao;
import com.Gary.domain.Answer;
import com.Gary.domain.Paste;

public class AnswerService {

    private AnswerDao answerDao;
    
    
    public List<Answer> findAllAnswerByPasteid(String pasteid) {
        List<Answer> answerList = answerDao.findAllAnswerByPasteid(pasteid);
        return answerList;
    }
    
    public AnswerDao getAnswerDao() {
        return answerDao;
    }

    public void setAnswerDao(AnswerDao answerDao) {
        this.answerDao = answerDao;
    }


    public void addAnswer(Answer answer) {
        // TODO Auto-generated method stub
        answerDao.addAnswer(answer);
    }

    public void addAnswer(Answer answer, Paste paste) {

        paste.setAnsnum(paste.getAnsnum() + 1);
        answerDao.addAnswer(answer);
    }


}
AnswerService.java

  Dao层

package com.Gary.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.query.NativeQuery;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.Gary.domain.Answer;

public class AnswerDao extends HibernateDaoSupport{

    public void addAnswer(Answer answer) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        session.save(answer);
    }

    public List<Answer> findAllAnswerByPasteid(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from answer where pasteid = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Answer.class);
        query.setParameter(1, pasteid);
        List<Answer> list = query.list();
        return list;
    }


}
AnswerDao.java

  前端样式的美化

                    <div class="layui-form layui-form-pane">
                        <!-- <form action="${pageContext.request.contextPath }/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form> -->
                        <form action="${pageContext.request.contextPath}/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <label for="L_title" class="layui-form-label" style=" 690px; height: 40px;">
                                <div style="margin-left: -580px">回答问题:</div>
                            </label>
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <div class="editor">
                                        <textarea id="content" name="content" style=" 690px; height: 300px; visibility: hidden;"></textarea>
                                    </div>
                                </div>

                            </div>

                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60b;</i> <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60c;</i> <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>
        </div>
    </div>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description" content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body style="margin: -2px">
    <iframe src="head.jsp" scrolling="no" width="100%" height="110px"></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span> <span class="jie-admin"> <a href="">点击置顶</a>
                        </span> <span class="layui-btn layui-btn-mini jie-admin"> <a href="">取消置顶</a>
                        </span> <span class="jie-admin" type="del" style="margin-left: 20px;"> <a>删除该帖</a>
                        </span> </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href=""> <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像"> <cite> <s:property value="#paste.user.username" /> <em> <s:property value="#paste.createtime" /> 发布
                            </em>
                        </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin"> <a href="#">已完帖,无法编辑</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add"> <a id="collectPost">收藏</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add"> <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>



                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <!--  <li data-id="12" class="jieda-daan"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i> <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> 
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i class="iconfont icon-zan"></i><em>12</em> </span>
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div>
                        </div></li> -->



                        <s:iterator value="#answerList" var="answer">
                            <li data-id="13"><a name="item-121212121212"></a>
                                <div class="detail-about detail-about-reply">
                                    <a class="jie-user" href=""> 
                                    <img src="${pageContext.request.contextPath }/<s:property value="#answer.user.image"/>" alt="">
                                    <cite> <i><s:property value="#answer.user.username" /></i> <em style="color: #FF9E3F">活雷锋</em>
                                    </cite>
                                    </a>
                                    <div class="detail-hits">
                                        <span> <s:property value="#answer.anstime" />
                                        </span>
                                    </div>
                                </div>
                                <div class="detail-body jieda-body">
                                    <p><s:property value="#answer.content" /></p>
                                </div>
                                <div class="jieda-reply">
                                    <span class="jieda-zan" type="zan"><i class="iconfont icon-zan"></i> 
                                    <em> <s:property value="#answer.agree" /></em>
                                    </span>
                                    <div class="jieda-admin">
                                    
                                        <span type="del"><a href="#" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span> <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                    </div>
                                </div></li>
                        </s:iterator>
                        <s:if test="#answerList.size()==0">
                            <li class="fly-none">没有任何回答</li>
                        </s:if>
                    </ul>
                    <div class="layui-form layui-form-pane">
                        <!-- <form action="${pageContext.request.contextPath }/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form> -->
                        <form action="${pageContext.request.contextPath}/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <label for="L_title" class="layui-form-label" style=" 690px; height: 40px;">
                                <div style="margin-left: -580px">回答问题:</div>
                            </label>
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <div class="editor">
                                        <textarea id="content" name="content" style=" 690px; height: 300px; visibility: hidden;"></textarea>
                                    </div>
                                </div>

                            </div>

                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60b;</i> <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60c;</i> <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>
        </div>
    </div>

    <%-- <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'L_content',
            resizeMode : 1,
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script> --%>
    <script type="text/javascript" charset="utf-8" src="js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'content',
            resizeMode : 1,
            cssPath : './index.css',
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script>
    <script>
        layui.cache.page = '';
        layui.cache.user = {
            username : '游客',
            uid : -1,
            avatar : '../res/images/avatar/00.jpg',
            experience : 83,
            sex : ''
        };
        layui.config({
            version : "2.0.0",
            base : '../res/mods/'
        }).extend({
            fly : 'index'
        }).use('fly');
    </script>
</body>
</html>
detail.jsp

  删除与采纳的显示

  判断当前回复帖子人是登陆名自己的,显示可以删除帖子

    <s:if test="#session.user.username==#answer.user.username ">
      <span type="del"><a href="#" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span> 
    </s:if>  

  判断当前发帖人是登录名自己的,显示可以采纳帖子

    <s:if test="#session.user.username==#paste.user.username && #paste.solve==0">
      <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
    </s:if>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description" content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body style="margin: -2px">
    <iframe src="head.jsp" scrolling="no" width="100%" height="110px"></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span> <span class="jie-admin"> <a href="">点击置顶</a>
                        </span> <span class="layui-btn layui-btn-mini jie-admin"> <a href="">取消置顶</a>
                        </span> <span class="jie-admin" type="del" style="margin-left: 20px;"> <a>删除该帖</a>
                        </span> </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href=""> <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像"> <cite> <s:property value="#paste.user.username" /> <em> <s:property value="#paste.createtime" /> 发布
                            </em>
                        </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin"> <a href="#">已完帖,无法编辑</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add"> <a id="collectPost">收藏</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add"> <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>



                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <!--  <li data-id="12" class="jieda-daan"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i> <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> 
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i class="iconfont icon-zan"></i><em>12</em> </span>
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div>
                        </div></li> -->



                        <s:iterator value="#answerList" var="answer">
                            <li data-id="13"><a name="item-121212121212"></a>
                                <div class="detail-about detail-about-reply">
                                    <a class="jie-user" href=""> 
                                    <img src="${pageContext.request.contextPath }/<s:property value="#answer.user.image"/>" alt="">
                                    <cite> <i><s:property value="#answer.user.username" /></i> <em style="color: #FF9E3F">活雷锋</em>
                                    </cite>
                                    </a>
                                    <div class="detail-hits">
                                        <span> <s:property value="#answer.anstime" />
                                        </span>
                                    </div>
                                </div>
                                <div class="detail-body jieda-body">
                                    <p><s:property value="#answer.content" /></p>
                                </div>
                                <div class="jieda-reply">
                                    <span class="jieda-zan" type="zan"><i class="iconfont icon-zan"></i> 
                                    <em> <s:property value="#answer.agree" /></em>
                                    </span>
                                    <div class="jieda-admin">
                                    <s:if test="#session.user.username==#answer.user.username ">
                                        <span type="del"><a href="#" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span> 
                                    </s:if>  
                                    <s:if test="#session.user.username==#paste.user.username && #paste.solve==0">
                                        <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                    </s:if>
                                    </div>
                                </div></li>
                        </s:iterator>
                        <s:if test="#answerList.size()==0">
                            <li class="fly-none">没有任何回答</li>
                        </s:if>
                    </ul>
                    <div class="layui-form layui-form-pane">
                        <!-- <form action="${pageContext.request.contextPath }/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form> -->
                        <form action="${pageContext.request.contextPath}/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <label for="L_title" class="layui-form-label" style=" 690px; height: 40px;">
                                <div style="margin-left: -580px">回答问题:</div>
                            </label>
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <div class="editor">
                                        <textarea id="content" name="content" style=" 690px; height: 300px; visibility: hidden;"></textarea>
                                    </div>
                                </div>

                            </div>

                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60b;</i> <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60c;</i> <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>
        </div>
    </div>

    <%-- <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'L_content',
            resizeMode : 1,
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script> --%>
    <script type="text/javascript" charset="utf-8" src="js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'content',
            resizeMode : 1,
            cssPath : './index.css',
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script>
    <script>
        layui.cache.page = '';
        layui.cache.user = {
            username : '游客',
            uid : -1,
            avatar : '../res/images/avatar/00.jpg',
            experience : 83,
            sex : ''
        };
        layui.config({
            version : "2.0.0",
            base : '../res/mods/'
        }).extend({
            fly : 'index'
        }).use('fly');
    </script>
</body>
</html>
detail.jsp

分析删除回复

  删除和采纳

                                    <div class="jieda-admin">
                                        <s:if test="#session.user.username==#answer.user.username ">
                                            <span type="del"><a href="${pageContext.request.contextPath }/AnswerAction_deleteAnswer?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span>
                                        </s:if>
                                        <s:if test="#session.user.username==#paste.user.username && #paste.solve==0">
                                            <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                        </s:if>
                                    </div>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description" content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body style="margin: -2px">
    <iframe src="head.jsp" scrolling="no" width="100%" height="110px"></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span> <span class="jie-admin"> <a href="">点击置顶</a>
                        </span> <span class="layui-btn layui-btn-mini jie-admin"> <a href="">取消置顶</a>
                        </span> <span class="jie-admin" type="del" style="margin-left: 20px;"> <a>删除该帖</a>
                        </span> </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href=""> <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像"> <cite> <s:property value="#paste.user.username" /> <em> <s:property value="#paste.createtime" /> 发布
                            </em>
                        </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin"> <a href="#">已完帖,无法编辑</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add"> <a id="collectPost">收藏</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add"> <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>



                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <!--  <li data-id="12" class="jieda-daan"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i> <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> 
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i class="iconfont icon-zan"></i><em>12</em> </span>
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div>
                        </div></li> -->



                        <s:iterator value="#answerList" var="answer">
                            <li data-id="13"><a name="item-121212121212"></a>
                                <div class="detail-about detail-about-reply">
                                    <a class="jie-user" href=""> <img src="${pageContext.request.contextPath }/<s:property value="#answer.user.image"/>" alt=""> <cite> <i><s:property value="#answer.user.username" /></i> <em style="color: #FF9E3F">活雷锋</em>
                                    </cite>
                                    </a>
                                    <div class="detail-hits">
                                        <span> <s:property value="#answer.anstime" />
                                        </span>
                                    </div>
                                </div>
                                <div class="detail-body jieda-body">
                                    <p>
                                        <s:property value="#answer.content" />
                                    </p>
                                </div>
                                <div class="jieda-reply">
                                    <span class="jieda-zan" type="zan"><i class="iconfont icon-zan"></i> <em> <s:property value="#answer.agree" /></em> </span>
                                    <div class="jieda-admin">
                                        <s:if test="#session.user.username==#answer.user.username ">
                                            <span type="del"><a href="${pageContext.request.contextPath }/AnswerAction_deleteAnswer?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span>
                                        </s:if>
                                        <s:if test="#session.user.username==#paste.user.username && #paste.solve==0">
                                            <span class="jieda-accept" type="accept"> <a href="#" class="layui-btn  layui-btn-small">采纳</a></span>
                                        </s:if>
                                    </div>
                                </div></li>
                        </s:iterator>
                        <s:if test="#answerList.size()==0">
                            <li class="fly-none">没有任何回答</li>
                        </s:if>
                    </ul>
                    <div class="layui-form layui-form-pane">
                        <!-- <form action="${pageContext.request.contextPath }/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form> -->
                        <form action="${pageContext.request.contextPath}/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>"> <label for="L_title" class="layui-form-label" style=" 690px; height: 40px;">
                                <div style="margin-left: -580px">回答问题:</div>
                            </label>
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <div class="editor">
                                        <textarea id="content" name="content" style=" 690px; height: 300px; visibility: hidden;"></textarea>
                                    </div>
                                </div>

                            </div>

                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60b;</i> <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60c;</i> <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>
        </div>
    </div>

    <%-- <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'L_content',
            resizeMode : 1,
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script> --%>
    <script type="text/javascript" charset="utf-8" src="js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'content',
            resizeMode : 1,
            cssPath : './index.css',
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script>
    <script>
        layui.cache.page = '';
        layui.cache.user = {
            username : '游客',
            uid : -1,
            avatar : '../res/images/avatar/00.jpg',
            experience : 83,
            sex : ''
        };
        layui.config({
            version : "2.0.0",
            base : '../res/mods/'
        }).extend({
            fly : 'index'
        }).use('fly');
    </script>
</body>
</html>
detail.jsp

  Web层:当增加帖子时,帖子数+1

//删除answer
    public String deleteAnswer() throws Exception {

        Paste paste = pasteService.findPasteByIdReturnPaste(pasteid);
        
        answerService.deleteAnswerById(answerid,paste);
        ActionContext.getContext().put("pasteid", pasteid);
        return "toDetail";
    }
    
    //添加answer
    public String addAnswer() throws Exception {    
        
        User user =    (User) ActionContext.getContext().getSession().get("user");
        if(user == null)
        {
            ActionContext.getContext().put("error", "未登录不能回复!!");
            return "error";
        }
package com.Gary.web;

import java.text.SimpleDateFormat;
import java.util.Date;
import com.Gary.domain.Answer;
import com.Gary.domain.Paste;
import com.Gary.domain.User;
import com.Gary.service.AnswerService;
import com.Gary.service.PasteService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class AnswerAction extends ActionSupport implements ModelDriven<Answer>{

    public Answer answer = new Answer();
    private AnswerService answerService;
    private String pasteid;
    private PasteService pasteService;
    private String answerid;
    
    public String getAnswerid() {
        return answerid;
    }

    public void setAnswerid(String answerid) {
        this.answerid = answerid;
    }

    public AnswerService getAnswerService() {
        return answerService;
    }

    public void setAnswerService(AnswerService answerService) {
        this.answerService = answerService;
    }

    public PasteService getPasteService() {
        return pasteService;
    }

    public void setPasteService(PasteService pasteService) {
        this.pasteService = pasteService;
    }

    public String getPasteid() {
        return pasteid;
    }

    public void setPasteid(String pasteid) {
        this.pasteid = pasteid;
    }

    //删除answer
    public String deleteAnswer() throws Exception {

        Paste paste = pasteService.findPasteByIdReturnPaste(pasteid);
        
        answerService.deleteAnswerById(answerid,paste);
        ActionContext.getContext().put("pasteid", pasteid);
        return "toDetail";
    }
    
    //添加answer
    public String addAnswer() throws Exception {    
        
        User user =    (User) ActionContext.getContext().getSession().get("user");
        if(user == null)
        {
            ActionContext.getContext().put("error", "未登录不能回复!!");
            return "error";
        }
        
//        //回复时间
//        private String anstime;
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String anstime = format.format(date);
        answer.setAnstime(anstime);
//        //同意数
//        private Integer agree;
        answer.setAgree(0);
//        //是否解决
//        private Integer solve;
        answer.setSolve(0);
//        
//        private User user;
        answer.setUser(user);
//        
//        private Paste paste;
        Paste paste = pasteService.findPasteByIdReturnPaste(pasteid);
        answer.setPaste(paste);
        
        answerService.addAnswer(answer,paste);
        
        
        
        return "toDetail";
    }
    
    
    public Answer getModel() {    
        
        return answer;
    }


}
AnswerAction.java

  Service层

    public void addAnswer(Answer answer, Paste paste) {

        paste.setAnsnum(paste.getAnsnum() + 1);
        answerDao.addAnswer(answer);
    }
    
    public void deleteAnswerById(String answerid, Paste paste) {
        paste.setAnsnum(paste.getAnsnum()-1);
        answerDao.deleteAnswerById(answerid);
    }
package com.Gary.service;

import java.util.List;

import com.Gary.dao.AnswerDao;
import com.Gary.domain.Answer;
import com.Gary.domain.Paste;

public class AnswerService {

    private AnswerDao answerDao;
    
    
    public List<Answer> findAllAnswerByPasteid(String pasteid) {
        List<Answer> answerList = answerDao.findAllAnswerByPasteid(pasteid);
        return answerList;
    }
    
    public void addAnswer(Answer answer, Paste paste) {

        paste.setAnsnum(paste.getAnsnum() + 1);
        answerDao.addAnswer(answer);
    }
    
    public void deleteAnswerById(String answerid, Paste paste) {
        paste.setAnsnum(paste.getAnsnum()-1);
        answerDao.deleteAnswerById(answerid);
    }
    
    public AnswerDao getAnswerDao() {
        return answerDao;
    }

    public void setAnswerDao(AnswerDao answerDao) {
        this.answerDao = answerDao;
    }


}
AnswerService.java

  Dao层:操作数据库

public void addAnswer(Answer answer) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        session.save(answer);
    }

    public List<Answer> findAllAnswerByPasteid(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from answer where pasteid = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Answer.class);
        query.setParameter(1, pasteid);
        List<Answer> list = query.list();
        return list;
    }

    public void deleteAnswerById(String answerid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "delete from answer where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.setParameter(1, answerid);
        query.executeUpdate();
        
        //session.delete(answerid, Answer.class);
        
    }
package com.Gary.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.query.NativeQuery;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.Gary.domain.Answer;

public class AnswerDao extends HibernateDaoSupport{

    public void addAnswer(Answer answer) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        session.save(answer);
    }

    public List<Answer> findAllAnswerByPasteid(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from answer where pasteid = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Answer.class);
        query.setParameter(1, pasteid);
        List<Answer> list = query.list();
        return list;
    }

    public void deleteAnswerById(String answerid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "delete from answer where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.setParameter(1, answerid);
        query.executeUpdate();
        
        //session.delete(answerid, Answer.class);
        
    }



}
AnswerDao.java

  可以看到,进入帖子后,帖子浏览数目+1,当增加回帖时,帖子数+1,当删除回帖时,帖子数-1

  添加属性与元数据字段

    private String answerid;
        <property name="answerid" column="answerid"></property>

  

  分析采纳帖子

  detail.jsp

                                        <s:if test="#session.user.username==#paste.user.username && #paste.solve==0">
                                            <span class="jieda-accept" type="accept">
                                                <a href="${pageContext.request.contextPath }/PasteAction_solvePaste?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn  layui-btn-small">采纳</a>
                                            </span>
                                        </s:if>

  Web层:采纳用户回帖

    public String solvePaste() throws Exception{
        
        pasteService.solvePasteByIdAndAnswerid(pasteid,paste.getAnswerid());
        ActionContext.getContext().put("pasteid", pasteid);
        
        return "toDetail";
    }

  Service层:获得Web层数据传递到Dao层

    public void solvePasteByIdAndAnswerid(String pasteid, String answerid) {
        pasteDao.solvePasteByIdAndAnswerid(pasteid,answerid);
    }

  Dao层:进行数据的处理

    public void solvePasteByIdAndAnswerid(String pasteid, String answerid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql ="update paste set solve = 1, answerid = ? where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.setParameter(1, answerid);
        query.setParameter(2, pasteid);
        query.executeUpdate();
    }

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>问题详情</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="fly,layui,前端社区">
<meta name="description" content="">
<link rel="stylesheet" href="res/layui/css/layui.css">
<link rel="stylesheet" href="res/css/global.css">
<script src="res/layui/layui.js"></script>
<script src="js/jquery.js"></script>
<style type="text/css" rel="stylesheet">
form {
    margin: 0;
}

.editor {
    margin-top: 5px;
    margin-bottom: 5px;
}
</style>

</head>
<body style="margin: -2px">
    <iframe src="head.jsp" scrolling="no" width="100%" height="110px"></iframe>
    <div class="main layui-clear">
        <div class="wrap">
            <div class="content detail">
                <div class="fly-panel detail-box">

                    <h1>
                        <s:property value="#paste.title" />
                    </h1>
                    <div class="fly-tip fly-detail-hint" data-id="">
                        <span class="fly-tip-stick">置顶帖</span> <span class="jie-admin"> <a href="">点击置顶</a>
                        </span> <span class="layui-btn layui-btn-mini jie-admin"> <a href="">取消置顶</a>
                        </span> <span class="jie-admin" type="del" style="margin-left: 20px;"> <a>删除该帖</a>
                        </span> </span>
                        <div class="fly-list-hint">
                            <i class="iconfont" title="回答">&#xe60c;</i>
                            <s:property value="#paste.ansnum" />
                        </div>
                    </div>
                    <div class="detail-about">
                        <a class="jie-user" href=""> <img src="${pageContext.request.contextPath }/<s:property value="#paste.user.image"/>" alt="头像"> <cite> <s:property value="#paste.user.username" /> <em> <s:property value="#paste.createtime" /> 发布
                            </em>
                        </cite>
                        </a>
                        <div class="detail-hits" data-id="{{rows.id}}">
                            <span class="layui-btn layui-btn-mini jie-admin"> <a href="#">已完帖,无法编辑</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin" type="collect" data-type="add"> <a id="collectPost">收藏</a>
                            </span> <span class="layui-btn layui-btn-mini jie-admin  layui-btn-danger" type="collect" data-type="add"> <a>取消收藏</a>
                            </span>

                        </div>
                    </div>
                    <div class="detail-body photos" style="margin-bottom: 20px;">
                        <p>
                            <s:property value="#paste.content" />
                        </p>
                    </div>
                </div>



                <div class="fly-panel detail-box" style="padding-top: 0;">
                    <a name="comment"></a>
                    <ul class="jieda photos" id="jieda">
                        <!--  <li data-id="12" class="jieda-daan"><a name="item-121212121212"></a>
                            <div class="detail-about detail-about-reply">
                                <a class="jie-user" href=""> <img src="res/images/uer.jpg" alt=""> <cite> <i>纸飞机</i> <em>(楼主)</em>
                  <em style="color:#5FB878">(管理员)</em> 
                                </cite>
                                </a>
                                <div class="detail-hits">
                                    <span>3分钟前</span>
                                </div>
                                <i class="iconfont icon-caina" title="最佳答案"></i>
                            </div>
                            <div class="detail-body jieda-body">
                                <p>么么哒</p>
                            </div>
                            <div class="jieda-reply">
                                <span class="jieda-zan zanok" type="zan"><i class="iconfont icon-zan"></i><em>12</em> </span>
                                <!-- <div class="jieda-admin">
                <span type="del">删除</span>
                <span class="jieda-accept" type="accept">采纳</span>
              </div>
                        </div></li> -->



                        <s:iterator value="#answerList" var="answer">
                            <li data-id="13"><a name="item-121212121212"></a>
                                <div class="detail-about detail-about-reply">
                                    <a class="jie-user" href=""> <img src="${pageContext.request.contextPath }/<s:property value="#answer.user.image"/>" alt=""> <cite> <i><s:property value="#answer.user.username" /></i> <em style="color: #FF9E3F">活雷锋</em>
                                    </cite>
                                    </a>
                                    <div class="detail-hits">
                                        <span> <s:property value="#answer.anstime" />
                                        </span>
                                    </div>
                                </div>
                                <div class="detail-body jieda-body">
                                    <p>
                                        <s:property value="#answer.content" />
                                    </p>
                                </div>
                                <div class="jieda-reply">
                                    <span class="jieda-zan" type="zan"><i class="iconfont icon-zan"></i> <em> <s:property value="#answer.agree" /></em> </span>
                                    <div class="jieda-admin">
                                        <s:if test="#session.user.username==#answer.user.username ">
                                            <span type="del"><a href="${pageContext.request.contextPath }/AnswerAction_deleteAnswer?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span>
                                        </s:if>
                                        <s:if test="#session.user.username==#paste.user.username ">
                                            <a href="${pageContext.request.contextPath }/PasteAction_solvePaste?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn  layui-btn-small">采纳</a>
                                        </s:if>
                                    </div>
                                </div></li>
                        </s:iterator>
                        <s:if test="#answerList.size()==0">
                            <li class="fly-none">没有任何回答</li>
                        </s:if>
                    </ul>
                    <div class="layui-form layui-form-pane">
                        <!-- <form action="${pageContext.request.contextPath }/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>">
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <textarea id="L_content" name="content" required lay-verify="required" placeholder="我要回答" class="layui-textarea fly-editor" style="height: 150px;"></textarea>
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>提交回答</button>
                            </div>
                        </form> -->
                        <form action="${pageContext.request.contextPath}/AnswerAction_addAnswer">
                            <input type="hidden" name="pasteid" value="<s:property value="#paste.id"/>"> <label for="L_title" class="layui-form-label" style=" 690px; height: 40px;">
                                <div style="margin-left: -580px">回答问题:</div>
                            </label>
                            <div class="layui-form-item layui-form-text">
                                <div class="layui-input-block">
                                    <div class="editor">
                                        <textarea id="content" name="content" style=" 690px; height: 300px; visibility: hidden;"></textarea>
                                    </div>
                                </div>

                            </div>

                            <div class="layui-form-item">
                                <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <div class="edge">
            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">最近热帖</dt>
                <s:iterator value="#glanceoverPageBean.list" var="paste">
                    <dd>

                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60b;</i> <s:property value="#paste.glanceover" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>

            <dl class="fly-panel fly-list-one">
                <dt class="fly-panel-title">近期热议</dt>
                <s:iterator value="#ansnumPageBean.list" var="paste">
                    <dd>
                        <a href="${pageContext.request.contextPath }/PasteAction_getDetail?pasteid=<s:property value="#paste.id"/>"> <s:property value="#paste.title" />
                        </a> <span> <i class="iconfont">&#xe60c;</i> <s:property value="#paste.ansnum" />
                        </span>
                    </dd>
                </s:iterator>
            </dl>
        </div>
    </div>

    <%-- <script type="text/javascript" charset="utf-8" src="res/js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'L_content',
            resizeMode : 1,
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script> --%>
    <script type="text/javascript" charset="utf-8" src="js/kindeditor.js"></script>
    <script type="text/javascript">
        KE.show({
            id : 'content',
            resizeMode : 1,
            cssPath : './index.css',
            items : [ 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold',
                    'italic', 'underline', 'removeformat', 'justifyleft',
                    'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', 'emoticons', 'image', 'link' ]
        });
    </script>
    <script>
        layui.cache.page = '';
        layui.cache.user = {
            username : '游客',
            uid : -1,
            avatar : '../res/images/avatar/00.jpg',
            experience : 83,
            sex : ''
        };
        layui.config({
            version : "2.0.0",
            base : '../res/mods/'
        }).extend({
            fly : 'index'
        }).use('fly');
    </script>
</body>
</html>
detail.jsp

  实现采纳问题

  <div class="jieda-admin">
    <s:if test="#session.user.username==#answer.user.username ">
      <span type="del"><a href="${pageContext.request.contextPath }/AnswerAction_deleteAnswer?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn layui-btn-danger layui-btn-small">删除</a></span>
    </s:if>
    <s:if test="#session.user.username==#paste.user.username ">
      <a href="${pageContext.request.contextPath }/PasteAction_solvePaste?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn  layui-btn-small">采纳</a>
    </s:if>
  </div>

  Service层

public List<Answer> findAllAnswerByPasteid(String pasteid) {
        
        Paste paste = pasteDao.findPasteByIdReturnPaste(pasteid);
        List<Answer> answerList = null;
        // 判断paste中的solve是否为1
        if (paste.getSolve() == 1) {
            // 查找最佳答案
            Answer answer = answerDao.findAnswerById(paste.getAnswerid());
            // 查找所有答案
            answerList = answerDao.findAllAnswerByPasteid(pasteid);
            // 查找所有答案中包括了最佳答案所以将最佳答案删除
            answerList.remove(answer);
            // 在头元素中插入最佳答案
            answerList.add(0, answer);
        } else {
            answerList = answerDao.findAllAnswerByPasteid(pasteid);
        }

        return answerList;
    }
package com.Gary.service;

import java.util.List;

import com.Gary.dao.AnswerDao;
import com.Gary.dao.PasteDao;
import com.Gary.domain.Answer;
import com.Gary.domain.Paste;

public class AnswerService {



    private AnswerDao answerDao;
    private PasteDao pasteDao;
    
    public List<Answer> findAllAnswerByPasteid(String pasteid) {
        
        Paste paste = pasteDao.findPasteByIdReturnPaste(pasteid);
        List<Answer> answerList = null;
        // 判断paste中的solve是否为1
        if (paste.getSolve() == 1) {
            // 查找最佳答案
            Answer answer = answerDao.findAnswerById(paste.getAnswerid());
            // 查找所有答案
            answerList = answerDao.findAllAnswerByPasteid(pasteid);
            // 查找所有答案中包括了最佳答案所以将最佳答案删除
            answerList.remove(answer);
            // 在头元素中插入最佳答案
            answerList.add(0, answer);
        } else {
            answerList = answerDao.findAllAnswerByPasteid(pasteid);
        }

        return answerList;
    }
    
    public void addAnswer(Answer answer, Paste paste) {

        paste.setAnsnum(paste.getAnsnum() + 1);
        answerDao.addAnswer(answer);
    }
    
    public void deleteAnswerById(String answerid, Paste paste) {
        paste.setAnsnum(paste.getAnsnum()-1);
        answerDao.deleteAnswerById(answerid);
    }
    
    public AnswerDao getAnswerDao() {
        return answerDao;
    }

    public void setAnswerDao(AnswerDao answerDao) {
        this.answerDao = answerDao;
    }

    public PasteDao getPasteDao() {
        return pasteDao;
    }

    public void setPasteDao(PasteDao pasteDao) {
        this.pasteDao = pasteDao;
    }
}
AnswerService.java

   Dao层

    public Answer findAnswerById(String answerid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from answer where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Answer.class);
        query.setParameter(1, answerid);
        Answer result = (Answer) query.uniqueResult();
        return result;
    }
package com.Gary.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.query.NativeQuery;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.Gary.domain.Answer;

public class AnswerDao extends HibernateDaoSupport{

    public void addAnswer(Answer answer) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        session.save(answer);
    }

    public List<Answer> findAllAnswerByPasteid(String pasteid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from answer where pasteid = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Answer.class);
        query.setParameter(1, pasteid);
        List<Answer> list = query.list();
        return list;
    }

    public void deleteAnswerById(String answerid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "delete from answer where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.setParameter(1, answerid);
        query.executeUpdate();
        
        //session.delete(answerid, Answer.class);
        
    }

    public Answer findAnswerById(String answerid) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql = "select * from answer where id = ?";
        NativeQuery query = session.createSQLQuery(sql);
        query.addEntity(Answer.class);
        query.setParameter(1, answerid);
        Answer result = (Answer) query.uniqueResult();
        return result;
    }



}
AnswerDao.java

  发现当采纳问题后,应该隐藏其它问题的采纳按钮,已采纳的问题也不可删除

    <s:if test="#session.user.username==#answer.user.username && #paste.answerid!=#answer.id">
      <span type="del">
        <a href="${pageContext.request.contextPath }/AnswerAction_deleteAnswer?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn layui-btn-danger layui-btn-small">删除</a>
      </span>
    </s:if>
    <s:if test="#session.user.username==#paste.user.username && #paste.solve==0">
      <span class="jieda-accept" type="accept">
    <a href="${pageContext.request.contextPath }/PasteAction_solvePaste?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn  layui-btn-small">采纳</a>
    </span>
  </s:if>

  添加采纳金币模块

  <s:if test="#session.user.username==#paste.user.username && #paste.solve==0">
    <span class="jieda-accept" type="accept">
      <a href="${pageContext.request.contextPath }/PasteAction_solvePaste?answerid=<s:property value="#answer.id"/>&pasteid=<s:property value="#paste.id"/>" class="layui-btn  layui-btn-small">采纳</a>
    </span>
  </s:if>

  Service层

    public void solvePasteByIdAndAnswerid(String pasteid, String answerid) {
        //给回复的人添加金币
        Paste paste = pasteDao.findPasteByIdReturnPaste(pasteid);
        //通过answerid查找user
        Answer answer = answerDao.findAnswerById(answerid);
        //通过userid找user对象
        //User user = userDao.finduserByIdReturnUser(answer.getUser().getId());
        //获得answer下的user对象(持久化数据类型)
        User user = answer.getUser();
        //因为是持久化类型对象,即可直接修改属性,同步到数据库
        user.setCoin(user.getCoin()+paste.getOffer());
        //解决问题
        pasteDao.solvePasteByIdAndAnswerid(pasteid,answerid);
    }
package com.Gary.service;

import java.util.List;

import com.Gary.dao.AnswerDao;
import com.Gary.dao.PasteDao;
import com.Gary.dao.UserDao;
import com.Gary.domain.Answer;
import com.Gary.domain.Paste;
import com.Gary.domain.User;
import com.Gary.utils.PageBean;

public class PasteService {

    private PasteDao pasteDao;
    private AnswerDao answerDao;
    private UserDao userDao;
    
    public void solvePasteByIdAndAnswerid(String pasteid, String answerid) {
        //给回复的人添加金币
        Paste paste = pasteDao.findPasteByIdReturnPaste(pasteid);
        //通过answerid查找user
        Answer answer = answerDao.findAnswerById(answerid);
        //通过userid找user对象
        //User user = userDao.finduserByIdReturnUser(answer.getUser().getId());
        //获得answer下的user对象(持久化数据类型)
        User user = answer.getUser();
        //因为是持久化类型对象,即可直接修改属性,同步到数据库
        user.setCoin(user.getCoin()+paste.getOffer());
        //解决问题
        pasteDao.solvePasteByIdAndAnswerid(pasteid,answerid);
    }
    
    public AnswerDao getAnswerDao() {
        return answerDao;
    }

    public void setAnswerDao(AnswerDao answerDao) {
        this.answerDao = answerDao;
    }

    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public Paste findPasteByIdReturnPaste(String pasteid) {
        
        //pasteDao.addPasteGlanceover(pasteid);
        //数据库SQL语句:update paste set glanceover = glanceover+1 where id = ?;
        Paste paste = pasteDao.findPasteByIdReturnPaste(pasteid);
        paste.setGlanceover(paste.getGlanceover()+1);
        return paste;
    }
    
    public PageBean getGlanceoverPageBean(Integer currentPage) {
        Integer totalCount = pasteDao.findAllPasteNum();
        PageBean glanceoverPageBean = new PageBean(currentPage, totalCount, 8);
        List<Paste> list = pasteDao.getGlanceoverPageList();
        glanceoverPageBean.setList(list);
        
        return glanceoverPageBean;
    }
    

    
    public PageBean getPastePageBean(Integer currentPage) {
        
        Integer totalCount = pasteDao.findAllPasteNum();
        PageBean pageBean = new PageBean(currentPage,totalCount,8);
        List<Paste> list = pasteDao.getPastePageList(pageBean.getStart(),pageBean.getPageSize());
        pageBean.setList(list);
        
        
        return pageBean;
    }
    
    public PasteDao getPasteDao() {
        return pasteDao;
    }

    public List<Paste> findAllPaste() {
    
        return pasteDao.findAllPaste();
    
    }
    
    public void setPasteDao(PasteDao pasteDao) {
        this.pasteDao = pasteDao;
    }

    public void addPaste(Paste paste) {
        
        pasteDao.addPaste(paste);
        
    }



    public PageBean getAnsnumPageBean(Integer currentPage) {
        //获得所有的帖子数目
        Integer totalCount = pasteDao.findAllPasteNum();
        //创建PageBean
        PageBean ansnumPageBean = new PageBean(currentPage, totalCount, 8);
        //得到List
        List<Paste> list = pasteDao.getAnsnumPageList();
        //封装List
        ansnumPageBean.setList(list);    
        return ansnumPageBean;
    }


}
AnswerDao.java

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 配置数据源 -->
    <bean name="dataSource"
        class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="jdbcUrl" value="jdbc:mysqL:///garyssh_forum"></property>
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="user" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>

    <!-- 配置sessionFactory -->
    <bean name="sessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sqp">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>

        <property name="mappingDirectoryLocations"
            value="classpath:com/Gary/domain"></property>

    </bean>

    <!-- 配置事务的核心管理器 -->
    <bean name="transactionManager"
        class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <!-- 通知 -->
    <tx:advice id="advice"
        transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" />
        </tx:attributes>
    </tx:advice>

    <!-- 织入 -->
    <aop:config>
        <!-- 切入点 -->
        <aop:pointcut
            expression="execution(* com.Gary.service.*.*(..))" id="pc" />
        <!-- 配置切面 切入点+通知 -->
        <aop:advisor advice-ref="advice" pointcut-ref="pc" />
    </aop:config>

    <!-- 配置Action -->
    <bean name="userAction" class="com.Gary.web.UserAction" scope="prototype">
        <property name="userService" ref="userService"></property>
    </bean>
    <bean name="pasteAction" class="com.Gary.web.PasteAction" scope="prototype">
        <property name="pasteService" ref="pasteService"></property>
        <property name="answerService" ref="answerService"></property>
    </bean>
    <bean name="getDataAction" class="com.Gary.web.GetDataAction" scope="prototype">
        <property name="pasteService" ref="pasteService"></property>
        <property name="userService" ref="userService"></property>
    </bean>
    <bean name="answerAction" class="com.Gary.web.AnswerAction" scope="prototype">
        <property name="answerService" ref="answerService"></property>
        <property name="pasteService" ref="pasteService"></property>
    </bean>
    
    <!-- 配置Service -->
    <bean name="userService" class="com.Gary.service.UserService">
        <property name="userDao" ref="userDao"></property>
    </bean>
    <bean name="pasteService" class="com.Gary.service.PasteService">
        <property name="pasteDao" ref="pasteDao"></property>
        <property name="userDao" ref="userDao"></property>
        <property name="answerDao" ref="answerDao"></property>
    </bean>
    <bean name="answerService" class="com.Gary.service.AnswerService">
        <property name="answerDao" ref="answerDao"></property>
        <property name="pasteDao" ref="pasteDao"></property>
    </bean>
    
    <!-- 配置Dao -->
    <bean name="userDao" class="com.Gary.dao.UserDao">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <bean name="pasteDao" class="com.Gary.dao.PasteDao">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <bean name="answerDao" class="com.Gary.dao.AnswerDao">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    
</beans>
applicationContext.xml
(如需转载学习,请标明出处)
原文地址:https://www.cnblogs.com/1138720556Gary/p/9955733.html