熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

實戰JSP進階編程之一

2013-11-15 12:00:56  來源: JSP教程 

  不少JSP初學者在學會簡單的jsp編程後往往停留在用jsp裡面的sql語句調一個javabean進行數據庫連接階段止步不前了

  這個簡單的教程希望能夠有助於初學者學會用oop思想進行jsp編程

  場景一個簡單的新聞系統個數據表構成
數據庫系統用的是Mysql當然用其它的也類似
先看第一個數據表也是主要的數據表:news

  create table news (newsid int not null
userid int
kwid int // 關鍵詞外鍵
title varchar()
content text
hits int
cdate varchar()
mdate varchar()
primary key(newsid));

  再插入一個樣本數據

  insert into news (newsid title content) values ( test title test body);

  
設計思路用mvc模式編程將數據以一個helper class Newsjava 打包
並通過NewsDAOjava進行數據庫操作
設計階段用UML勾畫出系統的object
此處省略

  NewsDAO的主要方法有
public News getNewsByPrimaryKey(int newsid);
public News[] getRecentNews();
public News[] getHotNews();

  Newsjava的代碼如下

  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 newsidint useridint kwidint hitsString titleString contentString cdate)
{
thisnewsid=newsid;
thisuserid=userid;
thiskwid=kwid;
thishits=hits;
thistitle=title;
thiscontent=content;
thiscdate=cdate;
}

  public News(int id String t String cnt) {
thisnewsid = id;
thistitle = t;
thiscontent = cnt;
}
public int getNewsid()
{
return newsid;
}
public void setNewsid(int newsid)
{
thisnewsid=newsid;
}

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

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

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

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

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

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

  }

  說明這個程序可以用作javabean作為錄入表單的參數攜帶者(params Holder)

  最主要的文件NewsDAOjava代碼如下

  package news;

  import javasql*;

  public class NewsDAO
{

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

  
public NewsDAO()
{
try {
ClassforName ("commysqljdbcDriver");
}
catch (javalangClassNotFoundException e) {
Systemerrprintln("joke():"+egetMessage());
}
}

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

  String sql="select newsidtitlecontent from news"+
" where newsid="+newsid+"";
conn = getConnection();
stmt = conncreateStatement();
rs=stmtexecuteQuery(sql);

  if(rsnext())
{
news = new News(rsgetInt() rsgetString()rsgetString());
}
rsclose();
stmtclose();
connclose();
return news;
}

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

  }

  說明這個程序作為示例代碼非常簡單沒有考慮異常更主要的method
如getRecentNews()等大家可以自己參考實現

  簡單的jsp調用測試程序getNewsjsp

  <%@page contentType="text/html;charset=gb" %>
<%@page import="news*" %>
<%
NewsDAO newsDao = new NewsDAO();
News news = newsDaogetNewsByPrimaryKey();
if(news != null) {
outprintln("Title:"+newsgetTitle());
outprintln("<br>");
outprintln("Body:"+newsgetContent());
}
else outprintln("Failed");
%>

  說明這個簡化實現其實是DAO模式的省略形式還應該有interfacedao factory的

  有時間的話可能以後會給出示例當然大家在熟悉oop方式之後也能夠自己補齊

  還有編譯的時候 用 javac news/*java 就可以了

  如果系統提示找不到News 那其實是因為你的NewsDAOjava有問題並非真的是News不在路徑上在同一個包內一般這樣編譯就可以的只不過編譯的錯誤提示誤導人


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20088.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.