复制代码代码如下:
<%@page idioma="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
String caminho = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ caminho + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<cabeça>
<meta content="largura=largura do dispositivo, escala inicial=1,0, escala máxima=1,0, escalonável pelo usuário=não" name="porta de visualização">
<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="texto/css">
corpo{
alinhamento de texto: centro;
margem: 0;
preenchimento: 0;
cor: #500f60;
plano de fundo: url("../images/bj_4.jpg");
repetição em segundo plano: sem repetição;
anexo de fundo: rolagem;
tamanho de fundo:100% 100%;
overflow-x: oculto;
}
li{
tipo de estilo de lista: nenhum;
}
a:link{
tipo de estilo de lista: nenhum;
}
imagem{
largura: 100%;
}
#estático{
margem: 0 automático;
alinhamento de texto: esquerda;
largura: 90%;
margem superior: 20px;
}
.aa{
preenchimento à esquerda: 16px;
}
#bot{
borda: 3px #590303 sólida;
raio da borda: 6px 6px 6px 6px;
-moz-border-radius: 6px;
largura: 90%;
margem esquerda: 5%;
}
.tex{
borda superior: nenhuma;
borda inferior: nenhum;
borda esquerda: nenhuma;
fronteira direita: nenhuma;
fundo: fixo;
}
</estilo>
</head>
<script type="texto/javascript">
$(função(){
var linha = 5;
//动态加评论信息
function loadCommentInfo(página) {
$("#página").text(página);
$.ajax({
digite: "POST",
url: "<%=basePath%>findClickCommentByPage.action",
dados: "page="+page+"&row="+row,
sucesso: função(dados) {
var lista = dados.lista;
var linha = "";
$("#comentários").empty();
for (var i = 0; i < lista.comprimento; i++) {
linha = "<h3><span style=/"cor: #000; tamanho da fonte: 0,5em; preenchimento à esquerda: 70%;/">"+lista[i].time+"</span></h3>"+
"<h3 style=/"padding-left: 12px;/">"+list[i].content+"</h3>";
if(lista[i].repcontent!=null){
row+="<h3 style=/"padding-left: 12px; quebra de linha: quebra de palavra; quebra de palavra: normal;/">回复:"+list[i].repcontent+"</h3>";
}
"<hr size=/"5px;/" color=/"#f0f/">";
$(linha).appendTo($("#comments"));
}
$("#pagetag").val(página);
}
});
};
function getTotalContent() {
$.ajax({
digite: "POST",
url: "<%=basePath%>getTotalNum.action",
sucesso: função(dados) {
$("#contagem").text(dados.total);
if(parseInt(dados.total)==0){
$("#página").text(0);
}
var pagenum = parseInt(data.total/row);
$("#totalpage").text(parseInt(data.total%row==0?pagenum:pagenum+1));
},
});
}
$("#submit").click(function(){
var conteúdo = $("#content").val();
if(conteúdo==""){
alert("内容不能为空!");
retornar;
}
$.post("<%=basePath%>addClickComment.action","content="+content,function(dados){
if(dados.sucesso == verdadeiro) {
alert("发表成功!");
$("#content").val("");
loadCommentInfo(parseInt($("#pagetag").val()));
getTotalContent();
}
});
});
$("#pre").click(function(){
var página = parseInt($("#pagetag").val());
if(página>1){
página--;
carregarCommentInfo(página);
}
});
$("#próximo").click(função(){
var página = parseInt($("#pagetag").val());
if(página<parseInt($("#totalpage").text())){
página++;
carregarCommentInfo(página);
}
});
janela.onload=loadCommentInfo(1);
window.onload=getTotalContent();
});
</script>
<corpo>
<input type="hidden" id="pagetag" value="1">
<div id="estático">
<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 solid; border-radius: 2px 2px 2px 2px;-moz-border-radius: 6px; color: #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;" cor="#590303">
<div id="comentários">
</div>
<h2>发表评论</h2>
<h3>您的评论:</h3>
<div id="bott">
<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; color: #FFEA00; background: #520202;" id="submit">发表</button>
</div>
</body>
</html>
dao层
复制代码代码如下:
pacote dfml.daoImpl;
importar java.sql.SQLException;
importar java.util.List;
importar javax.annotation.Resource;
importar org.hibernate.Criteria;
importar org.hibernate.HibernateException;
importe org.hibernate.Query;
importar org.hibernate.Session;
importar org.hibernate.criterion.Order;
importar org.springframework.orm.hibernate3.HibernateCallback;
importar org.springframework.orm.hibernate3.HibernateTemplate;
importar org.springframework.stereotype.Component;
importar dfml.dao.ClickCommentDao;
importar dfml.pojo.ClickComment;
@Componente
classe pública ClickCommentDaoImpl implementa ClickCommentDao{
private HibernateTemplate hibernateTemplate;
@Recurso
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
//添加一条评论信息
@Substituir
public boolean addClickComment(ClickComment clickComment) {
booleano isSuccess = false;
tentar {
hibernateTemplate.save(clickComment);
éSucesso = verdadeiro;
} catch (Exceção e) {
éSucesso = falso;
e.printStackTrace();
}
retornar éSucesso;
}
//分页查找评论信息
@SuppressWarnings("desmarcado")
@Substituir
public List<ClickComment> findClickCommentByPage(página int final, linha int final) {
List<ClickComment> list = this.hibernateTemplate
.executeFind(new HibernateCallback<Object>() {
@Substituir
objeto público doInHibernate (sessão de sessão)
lança HibernateException, SQLException {
Critérios c = session.createCriteria(ClickComment.class);
c.setFirstResult((página - 1) * linha);
c.setMaxResults(linha);
c.addOrder(Order.desc("hora"));
return c.lista();
}
});
lista de retorno;
}
//得到评论的个数
@SuppressWarnings({ "desmarcado", "rawtypes" })
@Substituir
público longo getClickCommentCount() {
string final hql = "selecione contagem (*) de ClickComment";
Resultado longo = nulo;
resultado = (longo) hibernateTemplate.execute(new HibernateCallback() {
Objeto público doInHibernate (Sessão arg0)
lança HibernateException, SQLException {
Consulta consulta = arg0.createQuery(hql);
retornar query.uniqueResult();
}
});
resultado de retorno;
}
//更新评论信息
@Substituir
public boolean updateClickComment(ClickComment clickComment) {
booleano isSuccess=false;
tentar {
hibernateTemplate.update(clickComment);
isSuccess=true;
} catch (Exceção e) {
e.printStackTrace();
éSucesso=falso;
}
retornar éSucesso;
}
//根据id查找评论信息
@Substituir
public ClickComment findClickCommentById(int id) {
return (ClickComment) hibernateTemplate.find("de ClickComment onde id =?",
id).get(0);
}
//删除评论信息
@Substituir
public boolean deleteClickComment(ClickComment clickComment) {
booleano isSuccess=false;
tentar {
hibernateTemplate.delete(clickComment);
isSuccess=true;
} catch (Exceção e) {
e.printStackTrace();
éSucesso=falso;
}
retornar éSucesso;
}
//查询所有的评论
@SuppressWarnings("desmarcado")
@Substituir
public List<ClickComment> findAllClickComment() {
retornar hibernateTemplate.find("de ClickComment");
}
}
suportes
复制代码代码如下:
<nome do pacote="clickComment" extends="json-default" namespace="/">
<action name="addClickComment" método="addClickComment">
<nome do resultado="adicionar" type="json">
<param name="root">mapa</param>
</resultado>
</action>
<action name="findClickCommentByPage" método="findClickCommentByPage">
<nome do resultado="findByPage" type="json">
<param name="root">mapa</param>
</resultado>
</action>
<nome da ação="getTotalNum" método="getTotalNum">
<nome do resultado="total" type="json">
<param name="root">mapa</param>
</resultado>
</action>
<action name="updateClickComment" método="updateClickComment">
<nome do resultado="atualização" type="json">
<param name="root">mapa</param>
</resultado>
</action>
<action name="findAllClickComment" método="findAllClickComment">
<nome do resultado="lista" type="json">
<param name="root">mapa</param>
</resultado>
</action>
<action name="deleteClickComment" método="deleteClickComment">
<nome do resultado="excluir" type="json">
<param name="root">mapa</param>
</resultado>
</action>
Ação
复制代码代码如下:
pacote dfml.action;
importar java.sql.Date;
importar java.text.SimpleDateFormat;
importar java.util.HashMap;
importar java.util.List;
importar java.util.Map;
importar javax.annotation.Resource;
importar org.springframework.context.annotation.Scope;
importar org.springframework.stereotype.Component;
importar com.opensymphony.xwork2.ActionSupport;
importar dfml.dao.ClickCommentDao;
importar dfml.pojo.Activity;
importar dfml.pojo.ClickComment;
@Component("clickCommentAction")
@Scope("protótipo")
classe pública ClickCommentAction estende ActionSupport{
privado estático final longo serialVersionUID = 1L;
privado ClickCommentDao clickCommentDao;
private Map<String, Objeto> mapa;
private String content;// 评论内容
private String repcontent;// 回复评论
página interna privada;
linha interna privada;
linhas internas privadas;
ID interno privado;
public void setId(int id) {
isto.id = id;
}
public Map<String, Object> getMap() {
mapa de retorno;
}
@Recurso
public void setClickCommentDao(ClickCommentDao clickCommentDao) {
this.clickCommentDao = clickCommentDao;
}
public void setContent(Conteúdo da string) {
este.content = conteúdo;
}
public void setRepcontent(String repcontent) {
this.repcontent = repcontent;
}
public void setPage(int página) {
esta.página = página;
}
public void setRow(int linha) {
esta.linha = linha;
}
public void setRows(int linhas) {
this.rows = linhas;
}
//添加评论 用于微信用户
public String addClickComment() {
booleano isSuccess = false;
mapa = new HashMap<String, Object>();
ClickComment clickComment = new ClickComment();
Formato SimpleDateFormat = new SimpleDateFormat("aaaa-MM-dd HH:mm:ss");
clickComment.setTime(format.format(new Date(System.currentTimeMillis())));
clickComment.setContent(conteúdo);
tentar {
isSuccess = clickCommentDao.addClickComment(clickComment);
} catch (Exceção e) {
éSucesso = falso;
e.printStackTrace();
}
map.put("sucesso", isSuccess);
retorne "adicionar";
}
//分页查找评论 用户微信用户
string pública findClickCommentByPage() {
mapa = new HashMap<String, Object>();
map.put("lista", clickCommentDao.findClickCommentByPage(página, linha));
return "encontrarByPage";
}
//查询评论条数 用于微信用户
string pública getTotalNum(){
mapa = new HashMap<String, Object>();
map.put("total", clickCommentDao.getClickCommentCount());
retornar "total";
}
//回复评论 用于后台管理
public String updateClickComment(){
booleano isSuccess=false;
map=new HashMap<String, Object>();
ClickComment clickComment =clickCommentDao.findClickCommentById(id);
if(cliqueComment!=null){
clickComment.setRepcontent(repcontent);
isSuccess=clickCommentDao.updateClickComment(clickComment);
}
map.put("sucesso", isSuccess);
retornar "atualização";
}
//查询所有评论 用于后台管理
string pública findAllClickComment(){
map=new HashMap<String, Object>();
List<ClickComment> lists=clickCommentDao.findClickCommentByPage(página, linhas);
List<ClickComment> listss=clickCommentDao.findAllClickComment();
map.put("linhas", listas);
map.put("total", listass.size());
map.put("lista", listass);
retornar "lista";
}
//删除评论 用于后台管理
string pública deleteClickComment(){
booleano isSuccess=false;
map=new HashMap<String, Object>();
ClickComment clickComment =clickCommentDao.findClickCommentById(id);
if(cliqueComment!=null){
isSuccess=clickCommentDao.deleteClickComment(clickComment);
}
map.put("sucesso", isSuccess);
retornar "excluir";
}
}
pojo
复制代码代码如下:
pacote dfml.pojo;
importar java.io.Serializable;
importar javax.persistence.Entity;
importar javax.persistence.GeneratedValue;
importar javax.persistence.Id;
//评论表
@Entidade
classe pública ClickComment implementa Serializable{
privado estático final longo serialVersionUID = 1L;
ID inteiro privado;
private String time;// 评论时间
private String content;// 评论内容
private String nome;// 评论人
private String repcontent;//回复评论
@Eu ia
@GeneratedValue
público inteiro getId() {
identificação de retorno;
}
public void setId(ID inteiro) {
isto.id = id;
}
string pública getRepcontent() {
retornar conteúdo rep;
}
public void setRepcontent(String repcontent) {
this.repcontent = repcontent;
}
string pública getTime() {
horário de retorno;
}
public void setTime(Tempo da string) {
este.tempo = hora;
}
public String getConteúdo() {
devolver conteúdo;
}
public void setContent(Conteúdo da string) {
este.content = conteúdo;
}
public String getNome() {
nome de retorno;
}
public void setNome(Nome da string) {
este.nome = nome;
}
}