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

原创 2011年01月07日 18:04:00

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

Web Fundamentals今天的鱼我烧失败了,幸好还看了点书,这是数据库系统概念的第8章,看了就写下来吧。属于扫盲级别的。现在的数据库系统,其实很少有用户直接写SQL访问数据库的,通常的做法都是...

Design pattern学习笔记 – what and why?

Design pattern学习笔记 – what and why? 1. 为什么要学习和应用设计模式     我们在设计过程中面临的问题有很多已经被前人解决过,设计模式是前人经验的总结,学习和应...

数据库学习笔记–Database Design(1)

需求分析:今天天气很好,早上去交了电费,中午和晚上都煮了馄饨。昨天把《数据库系统概念》这本书从公司又扛了回来。今天看了点,就是第6章–Database Design and the E-R M...

TypeScript 学习笔记9: Real-World Application Development

终于要做一个完整的Web app了。除了使用TypeScript的各种语法糖,创建一个真正的web app还需要更多的功能:引用第三方库、declaration file、source map等等。

Design pattern学习笔记 – observer pattern

Design pattern学习笔记 – observer pattern 1. 问题引入—气象观测站     实现一个气象观测站系统,从物理设备中获取天气变化(主要包括humidity, tem...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)