自己做了个留言板即时更新和分页效果,显示数据时出现乱码?自己加了乱码处理效果也不行?

艾码仕 2011-12-18 12:18:42
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.sql.*" %>
<jsp:useBean id="db" scope="page" class="bean.DBBean"/>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>留言板和分页效果</title>
</head>
<body>
<%//每页显示记录数
int PageSize = 8;//每页显示8条记录
int StartRow = 0; //开始显示记录的编号 一行一个编号
int PageNo=0;//需要显示的页数 比如100条数据,每一页芬8条数据显示,每页的页数也是递增显示
int CounterStart=0;//每页页码的初始值 1->8 到 8->16....
int CounterEnd=0;//显示页码的最大值
int RecordCount=0;//总记录数;
int MaxPage=0;//总页数
int PrevStart=0;//前一页
int NextPage=0;//下一页
int LastRec=0;
int LastStartRecord=0;//最后一页开始显示记录的编号

//获取需要显示的页数,由用户提交
if(request.getParameter("PageNo")==null){ //如果为空,则表示第1页
if(StartRow == 0){
PageNo = StartRow + 1; //设定为1
}
}else{
PageNo = Integer.parseInt(request.getParameter("PageNo")); //获得用户提交的页数 如果我点击第二页,这里就获取2
StartRow = (PageNo - 1) * PageSize; //获得开始显示的记录编号 因为第一页显示8条记录,所以 (2-1)*8
}

//因为显示页码的数量是动态变化的,假如总共有一百页,则不可能同时显示100个链接。而是根据当前的页数显示
//一定数量的页面链接

//设置显示页码的初始值!!
if(PageNo % PageSize == 0){
CounterStart = PageNo - (PageSize - 1);
}else{
CounterStart = PageNo - (PageNo % PageSize) + 1;
}
CounterEnd = CounterStart + (PageSize - 1);
%>
<div>//实现留言板功能和分页效果
<a href="#">登录</a> |<a href="#">注册</a><br/>
<form action="liufen.jsp" method="post">
<textarea rows="5" cols="80" name="speak"></textarea><br/>
表情 <input type="submit" name="submit1" value="发表评论"/>
</form>
<%
request.setCharacterEncoding("gb2312");
String speak=request.getParameter("speak");
String sqll="insert into speaks(speakstext) value('"+speak+"')";//添加留言
int ii=db.executeUpdate(sqll);
if(ii==1){

String sql="select count(*) from speaks";//查出有多少条留言
ResultSet rs=db.executeQuery(sql);
rs.next();
RecordCount = rs.getInt(1);
rs = db.executeQuery("SELECT speakstext FROM speaks ORDER BY Id DESC LIMIT "
+StartRow+", "+PageSize);
//获取总页数
MaxPage = RecordCount % PageSize; //比如总记录数是41条,分页显示8条,那么就是 总也数=41%8=5,就是分成5也显示,余数是1,再加一页显示
if(RecordCount % PageSize == 0){
MaxPage = RecordCount / PageSize;
}else{
MaxPage = RecordCount/PageSize+1;
}
int i=1;
while(rs.next()){
String speaking=rs.getString("speakstext");
// str = (new String(str.getBytes("iso-8859-1"), "GB2312")).trim();
byte by[]=speaking.getBytes("ISO-8859-1");
speaking=new String(by);
%>
<P><%=speaking %></P>


<% i++;
}
}
%>

<%
out.print("<font size=4>");
//显示第一页或者前一页的链接
//如果当前页不是第1页,则显示第一页和前一页的链接
if(PageNo != 1){
PrevStart = PageNo - 1;
out.print("<a href=liufen.jsp?PageNo=1>第一页 </a>: ");
out.print("<a href=liufen.jsp?PageNo="+PrevStart+">前一页</a>");
}
out.print("[");

//打印需要显示的页码
for(int c=CounterStart;c<=CounterEnd;c++){
if(c <MaxPage){
if(c == PageNo){
if(c %PageSize == 0){
out.print(c);
}else{
out.print(c+" ,");
}
}else if(c % PageSize == 0){
out.print("<a href=liufen.jsp?PageNo="+c+">"+c+"</a>");
}else{
out.print("<a href=liufen.jsp?PageNo="+c+">"+c+"</a> ,");
}
}else{
if(PageNo == MaxPage){
out.print(c);
break;
}else{
out.print("<a href=liufen.jsp?PageNo="+c+">"+c+"</a>");
break;
}
}
}

out.print("]");;

if(PageNo < MaxPage){ //如果当前页不是最后一页,则显示下一页链接
NextPage = PageNo + 1;
out.print("<a href=liufen.jsp?PageNo="+NextPage+">下一页</a>");
}

//同时如果当前页不是最后一页,要显示最后一页的链接
if(PageNo < MaxPage){
LastRec = RecordCount % PageSize;
if(LastRec == 0){
LastStartRecord = RecordCount - PageSize;
}
else{
LastStartRecord = RecordCount - LastRec;
}

out.print(":");
out.print("<a href=liufen.jsp?PageNo="+MaxPage+">最后一页</a>");
}
out.print("</font>");
%>
</div>
</body>
</html>
红色是处理乱码
...全文
92 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧