关闭

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

370人阅读 评论(0) 收藏 举报

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的概念。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:78515次
    • 积分:1439
    • 等级:
    • 排名:千里之外
    • 原创:60篇
    • 转载:0篇
    • 译文:8篇
    • 评论:16条
    最新评论