实战JSP进阶编程之一

 我来答
新科技17
2022-10-04 · TA获得超过5869个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:73.3万
展开全部

  不少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 News java 打包 并通过NewsDAO java进行数据库操作 设计阶段 用UML勾画出系统的object 此处省略

  NewsDAO的主要方法有 public News getNewsByPrimaryKey(int newsid); public News[] getRecentNews(); 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: /joke?user=root";

   public NewsDAO() { try { Class forName (" 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 news "+ " where newsid="+newsid+""; conn = getConnection(); stmt = conn createStatement(); rs=stmt executeQuery(sql);

  if(rs next()) { news = new News(rs getInt( ) rs getString( ) rs getString( )); } 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/;charset=gb " %> <%@page import="news *" %> <% NewsDAO newsDao = new NewsDAO(); News news = newsDao getNewsByPrimaryKey( ); 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 就可以了

lishixinzhi/Article/program/Java/JSP/201311/20088

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式