服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

利用servlet开发企业级三层web应用(二) 实现中间层

利用servlet开发企业级三层web应用(二)

黄微、申刚玉

  3.实现中间层

  下面以bookservlet为例,说明如何实现中间层的servlet。

  (1)初始化servlet

   public class bookservlet extends httpservlet {

   protected connection dbconnection;

   protected preparestatement readquery;

   protected preparestatement writequery;

   protected string dbname=″jdbc:odbc:bookdatabase″;

   protected string bookname;

   protected string bookisbn;

   public void init(servletconfig config) throws servletexecption

   {

   try {

  class.forname(″sun.jdbc.odbc.jdbcodbcdriver″);

   dbconnection=drivermanager.getconnection(dbname,″″,″″);

   }

   catch(exception e)

   {

   system.out.println(″can not initialize database″);

   }

  }

  servlet的init()函数在servlet被初次激活时进行调用,对于bookservlet,在init()中我们创建其与图书数据库的连接(当然应该已经在odbc中定义bookdatabase),这里使用的是java jdbc api中的connection对象。

  (2)实现service()操作

  当客户端向servlet进行请求时,servlet的service()函数被调用,在service()中我们应该实现中间层的所有功能。

  public void service(httpservletrequest request,httpservletresponse reponse)

   throws servletexception,ioexception

  {

   bookname=request.getparameter(″bookname″);

   bookisbn=request.getparameter(″bookisbn″);

   if (bookname==null && bookisbn==null)

   doquerybook(request,reponse);

   else donewbook(request,reponse);

  }

  首先,我们通过参数httpservletrequest取得客户端的输入参数,这些参数是用户在html页面中的编辑框中输入的,然后我们根据用户的需要进行库查询或库更新的操作。

  ◆查询数据库信息并向浏览器返回结果页面

  查询数据库信息首先应该根据查询条件,构建一个sql语句(本例仅简单地返回所有记录),然后设置prepaerstatement对象,通过运行其executequery()向后台数据库服务器请求结果。取得查询结果后,servlet通过httpservletresponse生成一个结果html页面返回给浏览器。

  public void doquerybook(httpservletrequest request,httpservletresponse reponse)

  {

   try {

   readquery=dbconnection.preparestatement(

  ″select?from booktable″);

   string htmlhead=″〈html〉〈head〉〈title〉查询结果〈/title〉〈/head〉″;

   string htmlbody=″〈body〉″+;

   resultset readresult=readquery.executequery();

   while(readset.next())

   {

   string name=readresult.getstring(″bookname″);

   string isbn=readresult.getstring(″isbn″);

   htmlbody+=name+″ ″+isbn+″″;

   }

   htmlbody+=″〈/body〉″+〈/html〉″

   printwriter output=new printerwrite(response.getoutputstream());

   response.setcontenttype(″text/html″);

   output.println(htmlhead+htmlbody+htmltail);

   }

   catch(exception e)

   { … … … }

  }

  ◆将数据写入数据库

  将数据写入数据库的过程与查询类似,也是先构建一个sql语句,对于本例来说,其写入的sql语句为:

  string writesql=″insert into booktable (bookname,isbn) values(″+bookname+″,″+bookisbn+″)″;

  然后调用preparestatement::executeupdate();

  4.利用servlet实现中间层的进一步讨论

  通过上面的图书管理的例子,可以看出利用servlet技术实现中间层是十分方便的,其操作过程类似于cgi编写的

扫描关注微信公众号