复制代码代码如下:
<%@ page Language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
Строковый путь = request.getContextPath();
Строка basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ путь + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<голова>
<meta content="width=device-width, начальный масштаб=1,0, максимальный масштаб=1,0, масштабируемый пользователем=нет" name="viewport">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>微客服</title>
<style type="text/css">
тело{
выравнивание текста: по центру;
маржа: 0;
заполнение: 0;
цвет: #500f60;
фон: url("../images/bj_4.jpg");
фоновое повторение: без повторения;
фоновое вложение: прокрутка;
размер фона: 100% 100%;
переполнение-х: скрыто;
}
ли {
тип стиля списка: нет;
}
а:ссылка{
тип стиля списка: нет;
}
изображение {
ширина: 100%;
}
#статический{
маржа: 0 авто;
выравнивание текста: по левому краю;
ширина: 90%;
поле сверху: 20 пикселей;
}
.аа{
отступ слева: 16 пикселей;
}
#бот{
граница: 3 пикселя #590303 сплошная;
радиус границы: 6 пикселей 6 пикселей 6 пикселей 6 пикселей;
-moz-border-radius: 6 пикселей;
ширина: 90%;
поле слева: 5%;
}
.tex{
граница-верх: нет;
нижняя граница: нет;
левая граница: нет;
правая граница: нет;
фон: фиксированный;
}
</стиль>
</голова>
<тип сценария="текст/javascript">
$(функция() {
вар строка = 5;
//动态加评论信息
функция loadCommentInfo(страница) {
$("#страница").текст(страница);
$.ajax({
тип: «ПОСТ»,
url: "<%=basePath%>findClickCommentByPage.action",
данные: "page="+page+"&row="+row,
успех: функция (данные) {
список вар = data.list;
вар строка = "";
$("#комментарии").empty();
for (вар я = 0; я <list.length; я++) {
row = "<h3><span style=/"color: #000; размер шрифта: 0,5em; padding-left: 70%;/">"+list[i].time+"</span></h3>"+
"<h3 style=/"padding-left: 12px;/">"+list[i].content+"</h3>";
если (список [i].repcontent! = null) {
row+="<h3 style=/"padding-left: 12px; перенос слов: разрыв слова; word-break: нормальный;/">回复:"+list[i].repcontent+"</h3>";
}
"<hr size="5px;/" color="#f0f/">";
$(row).appendTo($("#комментарии");
}
$("#pagetag").val(страница);
}
});
};
функция getTotalContent() {
$.ajax({
тип: «ПОСТ»,
url: "<%=basePath%>getTotalNum.action",
успех: функция (данные) {
$("#count").text(data.total);
если(parseInt(data.total)==0){
$("#страница").текст(0);
}
вар pagenum = parseInt(data.total/row);
$("#totalpage").text(parseInt(data.total%row==0?pagenum:pagenum+1));
},
});
}
$("#submit").click(function(){
var content = $("#content").val();
если(содержание==""){
alert("Необходимый метод!");
возвращаться;
}
$.post("<%=basePath%>addClickComment.action","content="+content,function(data){
если (data.success == true) {
alert("Неверный сигнал!");
$("#content").val("");
loadCommentInfo(parseInt($("#pagetag").val()));
получитьОбщееСодержимое();
}
});
});
$("#pre").click(function(){
var page = parseInt($("#pagetag").val());
если(страница>1){
страница--;
loadCommentInfo (страница);
}
});
$("#следующий").click(function(){
var page = parseInt($("#pagetag").val());
if(page<parseInt($("#totalpage").text())){
страница++;
loadCommentInfo (страница);
}
});
window.onload = loadCommentInfo(1);
window.onload = getTotalContent();
});
</скрипт>
<тело>
<input type="hidden" id="pagetag" value="1">
<div id="статический">
<div style="text-align: left; z-index: 999">
<img src="../pic/top4.jpg">
<a href="<%=basePath%>jsp/index.jsp"><img src="../pic/fan_2.png"></a>
</div>
<button style="background: #520202; border-top: none;border: 3px #520202 сплошной; border-radius: 2px 2px 2px 2px;-moz-border-radius: 6px; цвет: #FFEA00;" id="pre">Отправить</button>
<button style="background: #520202; border-top: none;border: 3px #520202 Solid; border-radius: 2px 2px 2px 2px;-moz-border-radius: 6px;float: right; color: #FFEA00; " id="next">Отправить</button>
<p style="background: #520202; color: #FFEA00;">第<span id="page"></span>/<span id="totalpage"></span>页</p>
<h1>评论(<span id="count"></span>)</h1>
<hr size="5px;" цвет="#590303">
<div id="комментарии">
</div>
<h2>Расширенный список</h2>
<h3>Поиск:</h3>
<div id="ботт">
<textarea rows="7" cols="100%" id="content"></textarea>
</div>
<button style="margin-left:80%; border-top: none;border: 3px #520202 Solid; border-radius: 6px 6px 6px 6px;-moz-border-radius: 6px; цвет: #FFEA00; фон: #520202;" id="submit">发表</button>
</div>
</тело>
</html>
дао层
复制代码代码如下:
пакет dfml.daoImpl;
импортировать java.sql.SQLException;
импортировать java.util.List;
импортировать javax.annotation.Resource;
импортировать org.hibernate.Criteria;
импортировать org.hibernate.HibernateException;
импортировать org.hibernate.Query;
импортировать org.hibernate.Session;
импортировать org.hibernate.criterion.Order;
импортировать org.springframework.orm.hibernate3.HibernateCallback;
импортировать org.springframework.orm.hibernate3.HibernateTemplate;
импортировать org.springframework.stereotype.Component;
импортировать dfml.dao.ClickCommentDao;
импортировать dfml.pojo.ClickComment;
@Компонент
публичный класс ClickCommentDaoImpl реализует ClickCommentDao{
частный HibernateTemplate hibernateTemplate;
@Ресурс
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
//添加一条评论信息
@Override
public boolean addClickComment(ClickComment clickComment) {
логическое значение isSuccess = ложь;
пытаться {
hibernateTemplate.save(clickComment);
isSuccess = правда;
} catch (Исключение е) {
isSuccess = ложь;
е.printStackTrace();
}
возврат isSuccess;
}
//分页查找评论信息
@SuppressWarnings («не отмечено»)
@Override
public List<ClickComment> findClickCommentByPage (последняя целая страница, последняя целая строка) {
List<ClickComment> list = this.hibernateTemplate
.executeFind(новый HibernateCallback<Object>() {
@Override
общедоступный объект doInHibernate (сеанс сеанса)
выдает HibernateException, SQLException {
Критерий c = session.createCriteria(ClickComment.class);
c.setFirstResult((страница - 1) * строка);
c.setMaxResults(строка);
c.addOrder(Order.desc("время"));
вернуть c.list();
}
});
список возврата;
}
//得到评论的个数
@SuppressWarnings({ "не отмечено", "rawtypes" })
@Override
public Long getClickCommentCount() {
Final String hql = "выберите счетчик (*) из ClickComment";
Длинный результат = ноль;
result = (Long) hibernateTemplate.execute(new HibernateCallback() {
общедоступный объект doInHibernate (сеанс arg0)
выдает HibernateException, SQLException {
Запрос запроса = arg0.createQuery(hql);
вернуть запрос.уникальныйРезультат();
}
});
вернуть результат;
}
// 更新评论信息
@Override
public boolean updateClickComment(ClickComment clickComment) {
логическое значение isSuccess = false;
пытаться {
hibernateTemplate.update(clickComment);
isSuccess = истина;
} catch (Исключение е) {
е.printStackTrace();
isSuccess = ложь;
}
возврат isSuccess;
}
//根据id查找评论信息
@Override
public ClickComment findClickCommentById (int id) {
return (ClickComment) hibernateTemplate.find("from ClickComment, где id =?",
идентификатор).get(0);
}
//删除评论信息
@Override
public boolean deleteClickComment(ClickComment clickComment) {
логическое значение isSuccess = false;
пытаться {
hibernateTemplate.delete(clickComment);
isSuccess = истина;
} catch (Исключение е) {
е.printStackTrace();
isSuccess = ложь;
}
возврат isSuccess;
}
//查询所有的评论
@SuppressWarnings («не отмечено»)
@Override
публичный список <ClickComment> findAllClickComment() {
return hibernateTemplate.find("from ClickComment");
}
}
стойки 配置
复制代码代码如下:
<package name="clickComment" расширяет="json-default" namespace="/">
<action name="addClickComment" метод="addClickComment">
<result name="add" type="json">
<param name="root">карта</param>
</результат>
</действие>
<action name="findClickCommentByPage" метод="findClickCommentByPage">
<result name="findByPage" type="json">
<param name="root">карта</param>
</результат>
</действие>
<action name="getTotalNum" метод="getTotalNum">
<result name="total" type="json">
<param name="root">карта</param>
</результат>
</действие>
<action name="updateClickComment" метод="updateClickComment">
<result name="update" type="json">
<param name="root">карта</param>
</результат>
</действие>
<action name="findAllClickComment" метод="findAllClickComment">
<result name="list" type="json">
<param name="root">карта</param>
</результат>
</действие>
<action name="deleteClickComment" метод="deleteClickComment">
<result name="delete" type="json">
<param name="root">карта</param>
</результат>
</действие>
действие
复制代码代码如下:
пакет dfml.action;
импортировать java.sql.Date;
импортировать java.text.SimpleDateFormat;
импортировать java.util.HashMap;
импортировать java.util.List;
импортировать java.util.Map;
импортировать javax.annotation.Resource;
импортировать org.springframework.context.annotation.Scope;
импортировать org.springframework.stereotype.Component;
импортировать com.opensymphony.xwork2.ActionSupport;
импортировать dfml.dao.ClickCommentDao;
импортировать dfml.pojo.Activity;
импортировать dfml.pojo.ClickComment;
@Component("clickCommentAction")
@Scope("прототип")
публичный класс ClickCommentAction расширяет ActionSupport{
частный статический окончательный длинный серийныйVersionUID = 1L;
частный ClickCommentDao clickCommentDao;
частная карта Map<String, Object>;
содержимое частной строки;// 评论内容
повтор содержимого частной строки;// 回复评论
частная внутренняя страница;
частная int строка;
частные целые строки;
частный внутренний идентификатор;
общественный недействительный setId (int id) {
this.id = идентификатор;
}
общественная Map<String, Object> getMap() {
карта возврата;
}
@Ресурс
public void setClickCommentDao (ClickCommentDao clickCommentDao) {
this.clickCommentDao = clickCommentDao;
}
public void setContent (String content) {
this.content = контент;
}
public void setRepcontent(String Repcontent) {
this.repcontent = repcontent;
}
public void setPage(int page) {
this.page = страница;
}
общественный недействительный setRow (int row) {
this.row = строка;
}
public void setRows (int rows) {
this.rows = строки;
}
//添加评论 用于微信用户
публичная строка addClickComment() {
логическое значение isSuccess = ложь;
карта = новый HashMap<String, Object>();
ClickComment clickComment = новый ClickComment();
Формат SimpleDateFormat = новый SimpleDateFormat("гггг-ММ-дд ЧЧ:мм:сс");
clickComment.setTime(format.format(new Date(System.currentTimeMillis())));
clickComment.setContent(содержание);
пытаться {
isSuccess = clickCommentDao.addClickComment(clickComment);
} catch (Исключение е) {
isSuccess = ложь;
е.printStackTrace();
}
map.put("успех", isSuccess);
вернуть «добавить»;
}
//分页查找评论 用户微信用户
публичная строка findClickCommentByPage() {
карта = новый HashMap<String, Object>();
map.put("список", clickCommentDao.findClickCommentByPage(страница, строка));
вернуть «findByPage»;
}
//查询评论条数 用于微信用户
публичная строка getTotalNum(){
карта = новый HashMap<String, Object>();
map.put("всего", clickCommentDao.getClickCommentCount());
вернуть «всего»;
}
//回复评论 用于后台管理
публичная строка updateClickComment(){
логическое значение isSuccess = false;
карта = новый HashMap<String, Object>();
ClickComment clickComment =clickCommentDao.findClickCommentById(id);
если (clickComment! = null) {
clickComment.setRepcontent(repcontent);
isSuccess=clickCommentDao.updateClickComment(clickComment);
}
map.put("успех", isSuccess);
вернуть «обновление»;
}
//查询所有评论 用于后台管理
публичная строка findAllClickComment(){
карта = новый HashMap<String, Object>();
List<ClickComment> lists=clickCommentDao.findClickCommentByPage(страница, строки);
List<ClickComment> listss=clickCommentDao.findAllClickComment();
map.put("строки", списки);
map.put("всего", listss.size());
map.put("список", списки);
вернуть «список»;
}
//删除评论 用于后台管理
публичная строка deleteClickComment(){
логическое значение isSuccess = false;
карта = новый HashMap<String, Object>();
ClickComment clickComment =clickCommentDao.findClickCommentById(id);
если (clickComment! = null) {
isSuccess=clickCommentDao.deleteClickComment(clickComment);
}
map.put("успех", isSuccess);
вернуть «удалить»;
}
}
поджо
复制代码代码如下:
пакет dfml.pojo;
импортировать java.io.Serializable;
импортировать javax.persistence.Entity;
импортировать javax.persistence.GeneratedValue;
импортировать javax.persistence.Id;
// 评论表
@Сущность
публичный класс ClickComment реализует Serializable{
частный статический окончательный длинный сериалVersionUID = 1L;
частный целочисленный идентификатор;
личное время строки;// 评论时间
содержимое частной строки;// 评论内容
частное имя строки;// 评论人
повтор содержимого частной строки;//回复评论
@Идентификатор
@GeneratedValue
публичное целое число getId() {
вернуть идентификатор;
}
public void setId (Целый идентификатор) {
this.id = идентификатор;
}
публичная строка getRepcontent() {
вернуть повторный контент;
}
public void setRepcontent(String Repcontent) {
this.repcontent = repcontent;
}
публичная строка getTime() {
время возврата;
}
public void setTime(String time) {
это.время = время;
}
публичная строка getContent() {
возврат контента;
}
public void setContent (String content) {
this.content = контент;
}
публичная строка getName() {
вернуть имя;
}
public void setName (имя строки) {
это.имя = имя;
}
}