数据库学习笔记–Application Design and Development(2)

Two-Layer Web Architecture

在双层Web架构中,服务端应用程序是作为web server的一部分运行的。哪怎么实现的呢,一种流行的Java实现方法就是把Java代码加载到web server内部,我们知道做什么事情都要有个规矩,写程序也是一样的,程序员可以根据业务需求用Java实现不同的应用业务逻辑,包括和数据库的交互,那web server和java应用代码之间怎么交互呢,这个’规矩’就是Java servlet specification。比如HttpServlet就实现了这个接口,我们来看一个例子,假设开始的时候客户端浏览器看到的是这样一个HTML,这是一个Form,要求用户选择是储蓄账户(Account)还是贷款账户(Load),然后输入帐户号码,点击Submit以后,传回服务器,由服务器进行查询以后返回该账户的存款数(Account Balance)或者是贷款数(Loan Amount)。

<form action="BankQuery" method=get >
Select account/load and enter number<br>
<select name="type ">
    <option value="account" >Account</option>
    <option value="loan" selected>Loan</option>
</select>
<input type=text size=5 name="number ">
<input type=submit value="submit">
</form>

感兴趣的话可以把这段代码拷贝到文本文件里面,文件后缀改成html,然后用IE或者Firefox打开看看效果。当你点击 Submit以后,HTTP就会使用get方法将信息传回服务器,现在的web server都是并行处理的,也就是每收到一个请求,就会分配一个工作线程,来响应请求,在HttpServet的接口实现中,doGet方法就会被调用,我们来看server端的代码:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class BankQueryServlet extends HttpServlet {
   public void doGet (HttpServeletRequest request,HttpServetResponse response)
       throws ServletException,IOException
   {
       String type=request.getParameter("type");//得到是account还是loan查询
       String number=request.getParameter("number");//得到账户号码
       …使用JDBC和数据库服务器通信,取回用户请求的数据
       //我们假设查询结果存在变量balance里面
       //开始创建返回客户请求的HTML页面
       result.setContentType("text/html");
       PrintWriter out=response.getWriter();
       out.println("<HEAD><TITLE>Query Result</TITLE></HEAD>");
       out.println("<BODY>");
       out.println("Balance on"+ type + number + "=" + balance );
       out.println("</BODY>");
       out.close();
    }

可以看到任何通过get方法从客户浏览器传回来的数据,都封装在HttpServletRequest里面(这里还包括cookie数据),而传回客户浏览器的内容被封装在HttpServletResponse里面了。

我们这里使用了Servlet的实现来说明问题的,其实其他实现只是换汤不换药,或许语法不同,本质上的工作逻辑是一样的。通俗点来讲,就像你去永和豆浆吃饭,你(客户浏览器)去到永和豆浆一家门店(web server),你看一下菜单,勾上你要的饭菜(客户浏览器上的操作),然后交给服务台(将请求发给server),然后就会有一个服务生来为你服务(服务端分配一个工作线程),根据你的要求去后台拿菜,然后端到你的桌子上(将结果返回客户浏览器)。

其实对于服务器来说,基本就3步:

  1. 解析客户请求
  2. 后端操作
  3. 组建包含结果的HTML返回客户

下一回介绍 HTTP服务中session的概念。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值