复代码代码如下:
<%@ 페이지 언어="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,initial-scale=1.0, maximum-scale=1.0, user-scalable=no" 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>
<스타일 유형="텍스트/css">
몸{
텍스트 정렬: 중앙;
여백: 0;
패딩: 0;
색상: #500f60;
배경: url("../images/bj_4.jpg");
배경 반복:반복 없음;
배경 첨부: 스크롤;
배경 크기:100% 100%;
오버플로-x: 숨김;
}
리{
목록 스타일 유형: 없음;
}
a:링크{
목록 스타일 유형: 없음;
}
img{
너비: 100%;
}
#공전{
여백: 0 자동;
텍스트 정렬: 왼쪽;
너비: 90%;
여백 상단: 20px;
}
.aa{
왼쪽 패딩: 16px;
}
#bott{
테두리: 3px #590303 단색;
테두리 반경: 6px 6px 6px 6px;
-moz-국경-반경: 6px;
너비: 90%;
왼쪽 여백: 5%;
}
.tex{
테두리 상단: 없음;
테두리 하단: 없음;
테두리 왼쪽: 없음;
국경 오른쪽: 없음;
배경: 고정;
}
</style>
</head>
<스크립트 유형="텍스트/자바스크립트">
$(함수() {
변수 행 = 5;
//动态加评论信息
함수 loadCommentInfo(페이지) {
$("#page").text(페이지);
$.아약스({
유형: "POST",
url: "<%=basePath%>findClickCommentByPage.action",
데이터: "page="+page+"&row="+행,
성공 : 함수(데이터) {
var 목록 = 데이터.목록;
var 행 = "";
$("#comments").empty();
for ( var i = 0; i < list.length; i++) {
row = "<h3><span style="color: #000; 글꼴 크기: 0.5em; 왼쪽 패딩: 70%;/">"+list[i].time+"</span></h3>"+
"<h3 style=/"padding-left: 12px;/">"+list[i].content+"</h3>";
if(list[i].repcontent!=null){
row+="<h3 style=/"padding-left: 12px; word-wrap: break-word; word-break: Normal;/">回复:"+list[i].repcontent+"</h3>";
}
"<시간 크기=/"5px;/" color=/"#f0f/">";
$(row).appendTo($("#comments"));
}
$("#pagetag").val(페이지);
}
});
};
함수 getTotalContent() {
$.아약스({
유형: "POST",
url: "<%=basePath%>getTotalNum.action",
성공 : 함수(데이터) {
$("#count").text(data.total);
if(parseInt(data.total)==0){
$("#페이지").text(0);
}
var pagenum = parsInt(data.total/row);
$("#totalpage").text(parseInt(data.total%row==0?pagenum:pagenum+1));
},
});
}
$("#submit").click(함수(){
var content = $("#content").val();
if(content==""){
Alert("저장불가!");
반품;
}
$.post("<%=basePath%>addClickComment.action","content="+content,function(data){
if(data.success == true) {
Alert("성공을 완료했습니다!");
$("#content").val("");
loadCommentInfo(parseInt($("#pagetag").val()));
getTotalContent();
}
});
});
$("#pre").click(함수(){
var page = parsInt($("#pagetag").val());
if(페이지>1){
페이지--;
loadCommentInfo(페이지);
}
});
$("#다음").click(함수(){
var page = parsInt($("#pagetag").val());
if(page<parseInt($("#totalpage").text())){
페이지++;
loadCommentInfo(페이지);
}
});
window.onload = loadCommentInfo(1);
window.onload = getTotalContent();
});
</script>
<본문>
<input type="hidden" id="pagetag" value="1">
<div id="정적">
<div style="텍스트 정렬: 왼쪽; Z-색인: 999">
<img src="../pic/top4.jpg">
<a href="<%=basePath%>jsp/index.jsp"><img src="../pic/fan_2.png"></a>
</div>
<버튼 스타일="배경: #520202; 테두리 상단: 없음; 테두리: 3px #520202 단색; 테두리 반경: 2px 2px 2px 2px;-moz-border-반경: 6px; 색상: #FFEA00;" id="pre">上一页</button>
<버튼 스타일="배경: #520202; 테두리 상단: 없음; 테두리: 3px #520202 단색; 테두리 반경: 2px 2px 2px 2px;-moz-border-반경: 6px; 부동: 오른쪽; 색상: #FFEA00; " id="next">下一页</button>
<p style="배경: #520202; 색상: #FFEA00;">第<span id="page"></span>/<span id="totalpage"></span>页</p>
<h1>내용(<span id="count"></span>)</h1>
<시간 크기="5px;" 색상="#590303">
<div id="댓글">
</div>
<h2>发表评论</h2>
<h3>좋은 설명:</h3>
<div id="bott">
<textarearows="7" cols="100%" id="content"></textarea>
</div>
<button style="margin-left:80%; border-top: 없음;border: 3px #520202 solid; border-radius: 6px 6px 6px 6px;-moz-border-radius: 6px; 색상: #FFEA00; 배경: #520202;" id="submit">설명</button>
</div>
</body>
</html>
다오层
复代码代码如下:
패키지 dfml.daoImpl;
import java.sql.SQLException;
java.util.List 가져오기;
import javax.annotation.Resource;
org.hibernate.Criteria 가져오기;
import org.hibernate.HibernateException;
org.hibernate.Query 가져오기;
org.hibernate.Session 가져오기;
import org.hibernate.criterion.Order;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
org.springframework.stereotype.Component 가져오기;
dfml.dao.ClickCommentDao 가져오기;
import dfml.pojo.ClickComment;
@요소
공개 클래스 ClickCommentDaoImpl은 ClickCommentDao를 구현합니다.
개인 HibernateTemplate hibernateTemplate;
@의지
공공 무효 setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
//添加一条评论信息
@보수
공개 부울 addClickComment(ClickComment clickComment) {
부울 isSuccess = false;
노력하다 {
hibernateTemplate.save(clickComment);
isSuccess = 사실;
} 잡기(예외 e) {
isSuccess = 거짓;
e.printStackTrace();
}
isSuccess를 반환합니다.
}
//分页查找评论信息
@SuppressWarnings("선택 해제됨")
@보수
public List<ClickComment> findClickCommentByPage(최종 정수 페이지, 최종 정수 행) {
List<ClickComment> 목록 = this.hibernateTemplate
.executeFind(new HibernateCallback<Object>() {
@보수
공개 객체 doInHibernate(세션 세션)
HibernateException, SQLException이 발생합니다.
기준 c = session.createCriteria(ClickComment.class);
c.setFirstResult((페이지 - 1) * 행);
c.setMaxResults(행);
c.addOrder(Order.desc("시간"));
c.list()를 반환합니다.
}
});
반환 목록;
}
//得到评论的个数
@SuppressWarnings({ "unchecked", "rawtypes" })
@보수
공개 긴 getClickCommentCount() {
final String hql = "ClickComment에서 count(*) 선택";
긴 결과 = null;
결과 = (긴) hibernateTemplate.execute(new HibernateCallback() {
공용 개체 doInHibernate(세션 arg0)
HibernateException, SQLException이 발생합니다.
쿼리 쿼리 = arg0.createQuery(hql);
query.uniqueResult()를 반환합니다.
}
});
결과 반환;
}
//更新评论信息
@보수
공개 부울 updateClickComment(ClickComment clickComment) {
부울 isSuccess=false;
노력하다 {
hibernateTemplate.update(clickComment);
성공=true;
} 잡기(예외 e) {
e.printStackTrace();
성공=거짓;
}
isSuccess를 반환합니다.
}
//根据id查找评论信息
@보수
공개 ClickComment findClickCommentById(int id) {
반환(ClickComment) hibernateTemplate.find("ClickComment에서 id = ?",
id).get(0);
}
//删除评论信息
@보수
공개 부울 deleteClickComment(ClickComment clickComment) {
부울 isSuccess=false;
노력하다 {
hibernateTemplate.delete(clickComment);
성공=true;
} 잡기(예외 e) {
e.printStackTrace();
성공=거짓;
}
isSuccess를 반환합니다.
}
//查询所有评论
@SuppressWarnings("선택 해제됨")
@보수
공개 목록<ClickComment> findAllClickComment() {
return hibernateTemplate.find("ClickComment에서");
}
}
스트럿츠
复代码代码如下:
<패키지 이름="clickComment" 확장="json-default" 네임스페이스="/">
<작업 이름="addClickComment" 메서드="addClickComment">
<결과 이름="추가" 유형="json">
<param name="root">지도</param>
</결과>
</액션>
<작업 이름="findClickCommentByPage" 메서드="findClickCommentByPage">
<결과 이름="findByPage" 유형="json">
<param name="root">지도</param>
</결과>
</액션>
<액션 이름="getTotalNum" 메서드="getTotalNum">
<결과 이름="전체" 유형="json">
<param name="root">지도</param>
</결과>
</액션>
<작업 이름="updateClickComment" 메서드="updateClickComment">
<결과 이름="업데이트" 유형="json">
<param name="root">지도</param>
</결과>
</액션>
<작업 이름="findAllClickComment" 메서드="findAllClickComment">
<결과 이름="목록" 유형="json">
<param name="root">지도</param>
</결과>
</액션>
<작업 이름="deleteClickComment" 메서드="deleteClickComment">
<결과 이름="삭제" type="json">
<param name="root">지도</param>
</결과>
</액션>
행동
复代码代码如下:
패키지 dfml.action;
java.sql.Date 가져오기;
import java.text.SimpleDateFormat;
java.util.HashMap 가져오기;
java.util.List 가져오기;
java.util.Map 가져오기;
import javax.annotation.Resource;
org.springframework.context.annotation.Scope 가져오기;
org.springframework.stereotype.Component 가져오기;
import com.opensymphony.xwork2.ActionSupport;
dfml.dao.ClickCommentDao 가져오기;
import dfml.pojo.Activity;
import dfml.pojo.ClickComment;
@Component("clickCommentAction")
@Scope("프로토타입")
공개 클래스 ClickCommentAction은 ActionSupport를 확장합니다.
개인 정적 최종 긴 serialVersionUID = 1L;
비공개 ClickCommentDao clickCommentDao;
개인 맵<String, Object> 맵;
비공개 문자열 콘텐츠;// 评论内容
개인 문자열 recontent;// 回复评论
비공개 int 페이지;
비공개 int 행;
비공개 int 행;
개인 정수 ID;
공개 무효 setId(int id) {
this.id = 아이디;
}
공용 Map<String, Object> getMap() {
반환 지도;
}
@의지
공공 무효 setClickCommentDao(ClickCommentDao clickCommentDao) {
this.clickCommentDao = clickCommentDao;
}
공공 무효 setContent(문자열 콘텐츠) {
this.content = 내용;
}
공공 무효 setRepcontent(문자열 repcontent) {
this.repcontent = 대표콘텐츠;
}
공개 무효 setPage(int 페이지) {
this.page = 페이지;
}
공개 무효 setRow(int 행) {
this.row = 행;
}
공개 무효 setRows(int 행) {
this.rows = 행;
}
//添加评论 于微信用户
공개 문자열 addClickComment() {
부울 isSuccess = false;
map = new HashMap<String, Object>();
ClickComment clickComment = 새로운 ClickComment();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
clickComment.setTime(format.format(new Date(System.currentTimeMillis())));
clickComment.setContent(content);
노력하다 {
isSuccess = clickCommentDao.addClickComment(clickComment);
} 잡기(예외 e) {
isSuccess = 거짓;
e.printStackTrace();
}
map.put("성공", isSuccess);
"추가"를 반환합니다.
}
//분할하기(分页查找评论)
공개 문자열 findClickCommentByPage() {
map = new HashMap<String, Object>();
map.put("list", clickCommentDao.findClickCommentByPage(페이지, 행));
"findByPage"를 반환합니다.
}
//查询评论条数 于微信户
공개 문자열 getTotalNum(){
map = new HashMap<String, Object>();
map.put("total", clickCommentDao.getClickCommentCount());
"전체"를 반환합니다.
}
//回复评论 于后台管리
공개 문자열 updateClickComment(){
부울 isSuccess=false;
map=new HashMap<String, Object>();
ClickComment clickComment =clickCommentDao.findClickCommentById(id);
if(clickComment!=null){
clickComment.setRepcontent(repcontent);
isSuccess=clickCommentDao.updateClickComment(clickComment);
}
map.put("성공", isSuccess);
"업데이트"를 반환합니다.
}
//查询所有评论 于后台管리
공개 문자열 findAllClickComment(){
map=new HashMap<String, Object>();
List<ClickComment>lists=clickCommentDao.findClickCommentByPage(페이지, 행);
List<ClickComment>lists=clickCommentDao.findAllClickComment();
map.put("행", 목록);
map.put("전체",lists.size());
map.put("목록", 목록);
"목록"을 반환합니다.
}
//删除评论 于后台管리
공개 문자열 deleteClickComment(){
부울 isSuccess=false;
map=new HashMap<String, Object>();
ClickComment clickComment =clickCommentDao.findClickCommentById(id);
if(clickComment!=null){
isSuccess=clickCommentDao.deleteClickComment(clickComment);
}
map.put("성공", isSuccess);
"삭제"를 반환합니다.
}
}
포조
复代码代码如下:
패키지 dfml.pojo;
import java.io.Serialized;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
//설명
@실재
공개 클래스 ClickComment는 직렬화 가능{을 구현합니다.
개인 정적 최종 긴 serialVersionUID = 1L;
개인 정수 ID;
개인 문자열 시간;// 评论时间
비공개 문자열 콘텐츠;// 评论内容
개인 문자열 이름;// 评论人
개인 문자열 recontent;//回复评论
@ID
@GeneratedValue
공개 정수 getId() {
반환 ID;
}
공개 무효 setId(정수 ID) {
this.id = 아이디;
}
공개 문자열 getRepcontent() {
다시 콘텐츠를 반환합니다.
}
공공 무효 setRepcontent(문자열 repcontent) {
this.repcontent = 대표콘텐츠;
}
공개 문자열 getTime() {
복귀 시간;
}
공공 무효 setTime(문자열 시간) {
this.time = 시간;
}
공개 문자열 getContent() {
콘텐츠 반환;
}
공공 무효 setContent(문자열 콘텐츠) {
this.content = 내용;
}
공개 문자열 getName() {
이름 반환;
}
public void setName(문자열 이름) {
this.name = 이름;
}
}