国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

實(shí)戰(zhàn)JSP進(jìn)階編程之二:最簡單的DAO

2024-09-05 00:20:34
字體:
供稿:網(wǎng)友

  我們的第一個(gè)例子是簡化的dao方式,主要是在編程中引入了oop概念。

  這次,我們將dao補(bǔ)齊,但仍然保持最簡單的形式,以便初學(xué)者學(xué)習(xí)。

  簡單的dao模式構(gòu)成:

  1 interface

  2. factory

  3 implements

  4. caller

  第一個(gè)例子中的主程序newsdao.java代碼沒有改動(dòng),只是改了個(gè)名字,

  成為implements.

package news;
import java.sql.*;
public class newsdaomysql implements newsdao
{
connection conn = null;
statement stmt = null;
resultset rs = null;
string url="jdbc:mysql://localhost:3306/joke?user=root";
public newsdaomysql()
{
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;
}
}

  除了第一句由

  public class newsdao 變成了

  public class newsdaomysql implements newsdao

  構(gòu)造方法名稱由newsdao()變成newsdaomysql(),這個(gè)程序與第一個(gè)例子并沒有區(qū)別。

  第二個(gè)程序是interface,非常簡單,因?yàn)槲覀冎粚?shí)現(xiàn)了一個(gè)方法,所以這兒也只有一個(gè)方法的申明,大家可以很容易地自己補(bǔ)上。

package news;
import java.sql.sqlexception;
public interface newsdao {
public news getnewsbyprimarykey(int newsid) throws sqlexception;
}

  第三個(gè)程序是factory.

  我們的環(huán)境比較簡單,沒有使用jndi,

package news;
public class newsdaofactory {
public static newsdao getdao() throws exception {
newsdao newsdao = null;
string classname = "news.newsdaomysql";
try {
newsdao = (newsdao) class.forname(classname).newinstance();
}
catch (exception se) {
}
return newsdao;
}
}

  第四,調(diào)用的jsp程序:

<%@page contenttype="text/html;charset=gb2312" %>
<%@page import="news.*" %>
<%
// old version on 2004-12-07
// newsdao newsdao = new newsdao();
// new version on 2004-12-21
newsdao newsdao = newsdaofactory.getdao();
news news = newsdao.getnewsbyprimarykey(1);
if(news != null) {
out.println("title thru dao:"+news.gettitle());
out.println("<br>");
out.println("body:"+news.getcontent());
}
else out.println("failed.");
%>

  第五,本例所使用的pojo:news.java,沒有任何改動(dòng),故不在此重復(fù)。

  內(nèi)網(wǎng)觀測點(diǎn):同第一例子。

  更完整的例子,大家可以參考petstore 的catalogdao.


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 竹山县| 睢宁县| 卓资县| 大竹县| 太湖县| 雷州市| 陇南市| 浦县| 从江县| 赤壁市| 南陵县| 尚义县| 长顺县| 肥西县| 郯城县| 元江| 无锡市| 镇平县| 淳化县| 柏乡县| 宁德市| 唐河县| 龙井市| 通山县| 松江区| 屯留县| 正定县| 唐海县| 临武县| 无锡市| 会泽县| 江阴市| 宁夏| 镇坪县| 南部县| 上饶市| 义马市| 灌云县| 辽中县| 保德县| 榆中县|