博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsp开发教程之 仿MOP论坛 三(帖子列表-上)
阅读量:6757 次
发布时间:2019-06-26

本文共 6832 字,大约阅读时间需要 22 分钟。

 
习惯用eclipse来开发,先新建立一个web项目 取名为axbbs
准备两个jar包,一个是mysql for java 的驱动程序,一个是jspsmartupload的上传组件
复制到项目中 WebRoot\WEB-INF\lib目录下
先在src目录下新建一个 com.axbbs.common工具包,再新建一个数据库工具类,用来创建数据库连接.
DbUtil.java 设计如下
 
package com.axbbs.common; 


import java.sql.Connection; 

import java.sql.DriverManager; 

import java.sql.ResultSet; 

import java.sql.SQLException; 

import java.sql.Statement; 

/** 
* @程序编写 阿汐 
* @版本 1.0 
* @说明 仿wc的jsp版本小论坛 
* @本模块使用于数据库连接公用类 
* @并且功能并不需要太多,因此本版本没有采用传统意义上的MVC开发模式,而是针对 
* @vo,bo类进行了精简,用po类来共用vo类,用servlet类来共用bo类,很奇怪的开发模式 
* @日期 2008.09.01 
*/
 

public 
class DbUtil { 


    
//数据库连接 

    
public 
static Connection getConnection() { 


  
try { 

      
//数据库驱动驱动 

      Class.forName(
"org.gjt.mm.mysql.Driver").newInstance(); 


      
//创建连接 

      String url = 
"jdbc:mysql://localhost/axbbs?user=root&password=root"; 
      //设置连接 
      Connection con = DriverManager.getConnection(url); 
      return con; 
  } catch (Exception e) { 
      System.out.println("数据库连接失败!"); 
      e.printStackTrace(); 
      return null
  } 
    } 
    // 执行sql语句 
    public int execSQL(String sql) { 
  Connection con = getConnection(); 
  Statement st = null
  int n = 0; 
  try { 
      st = con.createStatement(); 
  } catch (SQLException e) { 
      System.out.println("error!"); 
      e.printStackTrace(); 
  } 
  try { 
      n = st.executeUpdate(sql); 
  } catch (SQLException e) { 
      System.out.println("error!"); 
      e.printStackTrace(); 
  } finally { 
      if (st != null
    try { 
        st.close(); 
    } catch (SQLException e) { 
        System.out.println("error!"); 
        e.printStackTrace(); 
    } 
      if (con != null
    try { 
        con.close(); 
    } catch (SQLException e) { 
        System.out.println("error!"); 
        e.printStackTrace(); 
    } 
  } 
  return n; 
    } 
    public ResultSet getResultSet(String sql) { 
  Connection con = getConnection(); 
  Statement st = null
  ResultSet rs = null
  try { 
      st = con.createStatement(); 
  } catch (SQLException e) { 
      System.out.println("数据库异常"); 
      e.printStackTrace(); 
  } 
  try { 
      rs = st.executeQuery(sql); 
  } catch (SQLException e) { 
      System.out.println("数据库异常"); 
      e.printStackTrace(); 
  } 
  return rs; 
    } 
    public void closeResultSet(ResultSet rs) { 
  try { 
      if (rs != null) { 
    Statement st = rs.getStatement(); 
    Connection con = st.getConnection(); 
    if (rs != null) { 
        rs.close(); 
    } 
    if (st != null) { 
        st.close(); 
    } 
    if (con != null) { 
        con.close(); 
    } 
      } 
  } catch (Exception e) { 
      System.out.println("数据库连接失败"); 
      e.printStackTrace(); 
  } 
    } 
然后在src目录新建一个包 com.axbbs.Dao :) 习惯从dao层设计 (Data Access Object 数据访问对象)
在com.axbbs.Dao 目录下新建一个Dao类 GetPostListDAO.java
这个类其实做了两件事情,一是得到帖子的列表,二是得到主贴的信息(偷懒)

package com.axbbs.Dao; 


import java.sql.Connection; 

import java.sql.ResultSet; 

import java.sql.SQLException; 

import java.sql.Statement; 

import java.util.ArrayList; 


import com.axbbs.common.DbUtil; 

import com.axbbs.po.PostPo; 



/** 
* @程序编写 阿汐 
* @版本 1.0 
* @说明 仿wc的jsp版本小论坛 
* @本模块是用于获取帖子列表信息和帖子内容信息的DAO类 
  * @并且功能并不需要太多,因此本版本没有采用传统意义上的MVC开发模式,而是针对 
* @vo,bo类进行了精简,用po类来共用vo类,用servlet类来共用bo类,很奇怪的开发模式 
* @日期 2008.09.01 
*/
 

public 
class GetPostListDAO { 


    
/** 
  * @param args 
  */
 

    
//创建数据工具包对象 

    
private DbUtil dbUtil = 
new DbUtil(); 


    
//创建数据库连接 

  

    
private Connection conn = dbUtil.getConnection(); 

    
public 
static 
void main(String[] args) { 

  
//主方法测试方 

  
//ArrayList l = new GetPostListDAO().getPost("1"); 

  
//System.out.print(((PostPo) l.get(0)).getPostUserName()); 

    } 

    
//帖子帖子列表信息 

    
public ArrayList ViewList() { 

  ArrayList viewList = 
new ArrayList(); 

  Statement stmt = 
null

  ResultSet rs = 
null

  String sql = 
"select * from MainPost"

  
try { 

      stmt = conn.createStatement(); 

      rs = stmt.executeQuery(sql); 

      
while (rs.next()) { 

    PostPo pp = 
new PostPo(); 

    pp.setPostId(rs.getInt(
"id")); 

    pp.setPostTitle(rs.getString(
"Post_Title")); 

    pp.setPostContent(rs.getString(
"Post_Content")); 

    pp.setPostUserName(rs.getString(
"Post_UserName")); 

    pp.setPosttime(rs.getString(
"Post_Time")); 

    pp.setPostReply(rs.getInt(
"Post_Reply")); 

    pp.setPostHits(rs.getInt(
"Post_Hits")); 

    viewList.add(pp); 

      } 

  } 
catch (SQLException e) { 

      
// TODO Auto-generated catch block 

      e.printStackTrace(); 

  } 


   

  
return viewList; 

   

    } 

    
//获得帖子信息 

    
public ArrayList getPost(String id) { 

  ArrayList viewList = 
new ArrayList(); 

  Statement stmt = 
null

  ResultSet rs = 
null

  String sql = 
"select * from MainPost where id='"+id+
"'"

  
try { 

      stmt = conn.createStatement(); 

      
//执行查询获得主贴信息 

      rs = stmt.executeQuery(sql); 

      
while (rs.next()) { 

    PostPo pp = 
new PostPo(); 

    pp.setPostId(rs.getInt(
"id")); 

    pp.setPostTitle(rs.getString(
"Post_Title")); 

    pp.setPostContent(rs.getString(
"Post_Content")); 

    pp.setPostUserName(rs.getString(
"Post_UserName")); 

    pp.setPosttime(rs.getString(
"Post_Time")); 

    pp.setPostReply(rs.getInt(
"Post_Reply")); 

    pp.setPostHits(rs.getInt(
"Post_Hits")); 

    viewList.add(pp); 

      } 

  } 
catch (SQLException e) { 

      
// TODO Auto-generated catch block 

      e.printStackTrace(); 

  } 


  
return viewList; 

   

    } 

  

    
public 
void closeResultSet(ResultSet rs) { 

  
try { 

      
if (rs != 
null) { 

    Statement st = rs.getStatement(); 

    Connection con = st.getConnection(); 

    
if (rs != 
null) { 

        rs.close(); 

    } 

    
if (st != 
null) { 

        st.close(); 

    } 

    
if (con != 
null) { 

        con.close(); 

    } 

      } 


  } 
catch (Exception e) { 

      System.out.println(
"数据库连接关闭异常!"); 

      e.printStackTrace(); 

  } 

    } 



 
 
这个类用到了一个Po对象,所以同时需要建立一个Po对象类.
com.axbbs.po 下建立PostPo.java
 
package com.axbbs.po; 

/** 
* @程序编写 阿汐 
* @版本 1.0 
* @说明 仿wc的jsp版本小论坛 
* @本模块是帖子信息的PO类,帖子列表信息同样用此类,另外省去了VO类,为了精简 
* @并且功能并不需要太多,因此本版本没有采用传统意义上的MVC开发模式,而是针对 
* @vo,bo类进行了精简,用po类来共用vo类,用servlet类来共用bo类,很奇怪的开发模式 
* @日期 2008.09.01 
*/
 

public 
class PostPo { 

    
//id 

    
private 
int postId; 

    
//帖子标题 

    
private String postTitle; 

    
//帖子内容 

    
private String postContent; 

    
//发帖人 

    
private String postUserName; 

    
//发帖时间 

    
private String posttime; 

    
//回复 

    
private 
int postReply; 

    
//点击 

    
private 
int postHits; 

    
/** 
  * @return postContent 
  */
 

    
public String getPostContent() { 

  
return postContent; 

    } 

    
/** 
  * @param postContent 要设置的 postContent 
  */
 

    
public 
void setPostContent(String postContent) { 

  
this.postContent = postContent; 

    } 

    
/** 
  * @return postHits 
  */
 

    
public 
int getPostHits() { 

  
return postHits; 

    } 

    
/** 
  * @param postHits 要设置的 postHits 
  */
 

    
public 
void setPostHits(
int postHits) { 

  
this.postHits = postHits; 

    } 

    
/** 
  * @return postId 
  */
 

    
public 
int getPostId() { 

  
return postId; 

    } 

    
/** 
  * @param postId 要设置的 postId 
  */
 

    
public 
void setPostId(
int postId) { 

  
this.postId = postId; 

    } 

    
/** 
  * @return postReply 
  */
 

    
public 
int getPostReply() { 

  
return postReply; 

    } 

    
/** 
  * @param postReply 要设置的 postReply 
  */
 

    
public 
void setPostReply(
int postReply) { 

  
this.postReply = postReply; 

    } 

    
/** 
  * @return posttime 
  */
 

    
public String getPosttime() { 

  
return posttime; 

    } 

    
/** 
  * @param posttime 要设置的 posttime 
  */
 

    
public 
void setPosttime(String posttime) { 

  
this.posttime = posttime; 

    } 

    
/** 
  * @return postTitle 
  */
 

    
public String getPostTitle() { 

  
return postTitle; 

    } 

    
/** 
  * @param postTitle 要设置的 postTitle 
  */
 

    
public 
void setPostTitle(String postTitle) { 

  
this.postTitle = postTitle; 

    } 

    
/** 
  * @return postUserName 
  */
 

    
public String getPostUserName() { 

  
return postUserName; 

    } 

    
/** 
  * @param postUserName 要设置的 postUserName 
  */
 

    
public 
void setPostUserName(String postUserName) { 

  
this.postUserName = postUserName; 

    } 

  


 
好了,关于帖子列表的DAO和PO都做完了,下一章我们开始进行在页面得到帖子列表信息的设计.
本文转自阿汐 51CTO博客,原文链接:http://blog.51cto.com/axiii/97506,如需转载请自行联系原作者
你可能感兴趣的文章
输出空心菱形
查看>>
StringBuilder类为何比string的简单拼接效率高
查看>>
仿百度搜索框自动下拉提示
查看>>
某封包地址分析
查看>>
渗透测试
查看>>
第七节
查看>>
获取和设置WebBrowser内核IE版本
查看>>
我的第一个博客,开始记录点滴生活
查看>>
用C#sqlserver实现增删改查
查看>>
使用DataX同步MaxCompute数据到TableStore(原OTS)优化指南
查看>>
绿色地址栏,未来安全的新趋势!
查看>>
给初学者的RxJava2.0教程(一)(转)
查看>>
进程概念
查看>>
netlink socket编程
查看>>
注册特殊广播接收者
查看>>
matplotlib正弦和余弦图
查看>>
DataTable的用法
查看>>
教育部老师远程培训课程听课点击器
查看>>
表操作汇总(复制,删除,修改,插入,查询及数据库的复制)
查看>>
redis 基本数据类型-列表(List)
查看>>