最近在用mysql做数据库,写一个网站,
-----------------------------------
在那个网站的首页,从数据库里取出所有的title(我数据库一张表里的一个字段,用于存放所有帖子的主题),
然后用“平板”式的展现出来,(展现的都是帖子的主题),
问题是:
如果我不用分页的形式展现,所有的帖子主题都在同一个页面展现出来,
那么就不会有任何的问题。
如果用分页的形式展现,那么,
偶尔就会有些帖子的主题乱码,乱码的地方很少,也不一定出现在哪个页面,(所有内容在数据库中都是正常的)
而且所有的时间也不准确,只能精确到天,(我使用的格式是:yyyy-MM-dd HH:mm:ss)
小时、分钟、秒都是00:00:00,
这是为什么啊?找了很久也没找出错误在哪了。下面是一部分代码:(我的mysql使用的utf-8字符集)<%@ page pageEncoding="GB18030"%>
<%@ page import="java.sql.*, wen.hui.mybbs.*, java.io.*, java.util.*" %>
<%@ page import="java.text.SimpleDateFormat"%><%
request.setCharacterEncoding("GB18030");
String strPageNo = request.getParameter("pageNo"); //pageNo为分页的页码 
int pageNo = 1;
if(strPageNo == null || strPageNo.trim().equals("")) {
pageNo = 1;
} else {
try {
pageNo = Integer.parseInt(strPageNo);
} catch(Exception e) {
pageNo = 1;
}
}
if(pageNo <= 0) {
pageNo = 1;
}
%><%
int pageSize = 15; //每页最多展现多少个帖子
Connection conn = DB.getConn();  //DB为一个JavaBean,简单的封装了一些关于数据库连接的方法
Statement sta = DB.getSta(conn);
ResultSet rs = null;
String sql2 = "select count(*) from article where pid = 0";
rs = DB.getRs(sta, sql2);
rs.next();
int totalNum = rs.getInt(1); //帖子的总数;
if(totalNum <= pageSize) {
pageSize = totalNum;
}
int totalPage = (totalNum + pageSize -1)/pageSize; //总的页数;
System.out.println(totalPage);if(pageNo > totalPage) pageNo = totalPage;
int start = pageSize * (pageNo - 1); / mit开始的位置;
String sql = "select * from article where pid = 0 order by pdata desc limit " + start + "," + pageSize;
rs = DB.getRs(sta, sql);//然后下面开始展现title
%>
//***********分页处的代码*************//
[ <a href="index.jsp?pageNo=<%=1 %>">首页</a>  
<a href="index.jsp?pageNo=<%=pageNo-1 %>">上一页</a> | 
<%
for(int i=1; i<=totalPage; i++) {
%>
<a href="index.jsp?pageNo=<%=i %>" class='<%=(i == pageNo ? "jive-current":"") %>'><%=i %></a>
<%

%>       
| <a href="index.jsp?pageNo=<%=pageNo+1 %>">下一页</a> 
<a href="index.jsp?pageNo=<%=totalPage %>">末页</a> ] 注:如果有些简单的语法错误可能是发帖时帖错;

解决方案 »

  1.   

    如果想将时间精确的时分秒,就不能使用java.sql.Date,因为这个类没有时分秒信息。要么使用java.util.Date,要么使用java.sql.Timestamp
      

  2.   

    乱码的话,在网上搜个过滤器,
    package org.wang.rpms.util;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    public class UnicodeFilter implements Filter
    { String encoding="";

    public void destroy()
    {
    // TODO Auto-generated method stub }
     
     /* (non-Javadoc)
      * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
      */
     public void init(FilterConfig config) throws ServletException { 
     encoding = config.getInitParameter("encoding");
     if (org.apache.commons.lang.StringUtils.isEmpty(encoding))
    {
    encoding="UTF-8";
    }
     config.getServletContext().setAttribute("encoding", encoding);
     }  /* (non-Javadoc)
      * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, 
      *   javax.servlet.ServletResponse, 
      *   javax.servlet.FilterChain)
      */
     public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) 
      throws IOException, ServletException 
     { 
     req.setCharacterEncoding(this.encoding);
     chain.doFilter(req,res);
     }}
    在Web.xml中加入 <!-- 过滤器 -->
    <filter>
    <description>UnicodeFilter</description>
    <display-name>UnicodeFilter</display-name>
    <filter-name>UnicodeFilter</filter-name>
    <filter-class>org.wang.rpms.util.UnicodeFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>UnicodeFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>UnicodeFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>时间java.util.Date吧