您当前的位置: 首页 > 网站编程 > JSP教程 > 好文共享:实战JSP进阶编程之一

好文共享:实战JSP进阶编程之一

作者:guanchaofeng 来源:不详 发布时间: 2009-03-06 21:49 点击:
不少JSP初学者在学会简单的jsp编程后,往往停留在用jsp里面的sql语句调一个javabean进行数据库连接阶段,止步不前了。 这个简单的教程希望能够有助于初学者学会用oop思想进行jsp编程。 场景:一个简单的新闻系统,有2-3个数据表构成。 数据库系统用的是Mysq

好文共享:实战JSP进阶编程之一

不少JSP初学者在学会简单的jsp编程后,往往停留在用jsp里面的sql语句调一个javabean进行数据库连接阶段,止步不前了。

这个简单的教程希望能够有助于初学者学会用oop思想进行jsp编程。

场景:一个简单的新闻系统,有2-3个数据表构成。
数据库系统用的是Mysql,当然用其它的也类似。
先看第一个数据表,也是主要的数据表:news

create table news2 (newsid int not null,
userid int,
kwid int, // 关键词外键
title varchar(100),
content text,
hits int,
cdate varchar2(30),
mdate varchar2(30),
primary key(newsid));

再插入一个样本数据:

insert into news2 (newsid, title, content) values (1, 'test title', 'test body');


设计思路:用mvc模式编程,将数据以一个helper class News.java 打包,
并通过NewsDAO.java进行数据库操作。
设计阶段,用UML勾画出系统的object.
...此处省略

NewsDAO的主要方法有:
1. public News getNewsByPrimaryKey(int newsid);
2. public News[] getRecentNews();
3. public News[] getHotNews();
......

News.java的代码如下:

package news;

public class News {
private int newsid;
private int userid;
private int kwid;
private int hits;
private String title;
private String content;
private String cdate;
private String mdate;

public News(){ }
public News(int newsid,int userid,int kwid,int hits,String title,String content,String cdate)
{
this.newsid=newsid;
this.userid=userid;
this.kwid=kwid;
this.hits=hits;
this.title=title;
this.content=content;
this.cdate=cdate;
}

public News(int id, String t, String cnt) {
this.newsid = id;
this.title = t;
this.content = cnt;
}
public int getNewsid()
{
return newsid;
}
public void setNewsid(int newsid)
{
this.newsid=newsid;
}


public int getUserid()
{
return userid;
}
public void setUserid(int userid)
{
this.userid=userid;
}

public int getKwid()
{
return kwid;
}
public void setKwid(int kwid)
{
this.kwid=kwid;
}

public int getHits()
{
return hits;
}
public void setHits(int hits)
{
this.hits=hits;
}

public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title=title;
}

public String getContent()
{
return content;
}
public void setContent(String content)
{
this.content=content;
}


public String getCdate()
{
return cdate;
}
public void setCdate(String cdate)
{
this.cdate=cdate;
}

}

说明:这个程序可以用作javabean,作为录入表单的参数携带者(params Holder).

最主要的文件NewsDAO.java代码如下:

package news;

import java.sql.*;

public class NewsDAO
{

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String url="jdbc:mysql://localhost:3306/joke?user=root";


public NewsDAO()
{
try {
Class.forName ("com.mysql.jdbc.Driver");
}
catch (java.lang.ClassNotFoundException e) {
System.err.println("joke():"+e.getMessage());
}
}

public News getNewsByPrimaryKey(int newsid) throws SQLException
{
Connection conn=null;
Statement stmt;
ResultSet rs;
News news = null;

String sql="select newsid,title,content from news2"+
" where newsid="+newsid+"";
conn = getConnection();
stmt = conn.createStatement();
rs=stmt.executeQuery(sql);

if(rs.next())
{
news = new News(rs.getInt(1), rs.getString(2),rs.getString(3));
}
rs.close();
stmt.close();
conn.close();
return news;
}

private Connection getConnection() throws SQLException
{
Connection conn = null;
conn = DriverManager.getConnection(url);
return conn;
}

}

说明:这个程序作为示例代码,非常简单,没有考虑异常,更主要的method
如getRecentNews()等,大家可以自己参考实现。

简单的jsp调用测试程序:getNews.jsp

<%@page contentType="text/html;charset=gb2312" %>
<%@page import="news.*" %>
<%
NewsDAO newsDao = new NewsDAO();
News news = newsDao.getNewsByPrimaryKey(1);
if(news != null) {
out.println("Title:"+news.getTitle());
out.println("<br>");
out.println("Body:"+news.getContent());
}
else out.println("Failed.");
%>

说明:这个简化实现其实是DAO模式的省略形式,还应该有interface,dao factory的。

有时间的话,可能以后会给出示例,当然,大家在熟悉oop方式之后,也能够自己补齐。

还有,编译的时候 用 javac news/*.java 就可以了。

如果系统提示找不到News, 那其实是因为你的NewsDAO.java有问题,并非真的是News不在路径上。在同一个包内,一般这样编译就可以的。只不过,编译的错误提示误导人。

分享到:
本文"好文共享:实战JSP进阶编程之一"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4