数据库学习笔记–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的概念。

数据库笔记(自己学习过程中整理)

编程语言是实现对内存的操作比较方便,对硬盘数据的操作数据库比较方便   一、数据库如何存储数据的 字段,记录,表,约束(主键,外键,唯一键,非空,check,default)   二、如何操作数据 i...
  • Caster_Saber
  • Caster_Saber
  • 2015年05月17日 16:20
  • 1660

Python基础学习笔记

编译语言:C,java 解释语言:php,javascript,  需要保留源代码,需要解释器    维护方便,可移植性强 Python 中文为蟒蛇 拥有者是Python Software Fou...
  • zxm1306192988
  • zxm1306192988
  • 2016年09月24日 19:26
  • 1973

台湾大学林轩田机器学习基石课程学习笔记2 -- Learning to Answer Yes/No

上节课,我们主要简述了机器学习的定义及其重要性,并用流程图的形式介绍了机器学习的整个过程:根据模型H,使用演算法A,在训练样本D上进行训练,得到最好的h,其对应的g就是我们最后需要的机器学习的模型函数...
  • red_stone1
  • red_stone1
  • 2017年04月27日 18:05
  • 4405

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

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

Design pattern学习笔记 – what and why?

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

PHP and MySQL Web Development个人学习笔记2--持续更新

  • 2014年07月19日 09:51
  • 2KB
  • 下载

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

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

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

终于要做一个完整的Web app了。除了使用TypeScript的各种语法糖,创建一个真正的web app还需要更多的功能:引用第三方库、declaration file、source map等等。...
  • wershest
  • wershest
  • 2017年07月04日 17:55
  • 426

PHP and MySQL Web Development个人学习笔记1--持续更新

  • 2014年07月17日 23:51
  • 3KB
  • 下载

PHP and MySQL Web Development个人学习笔记3--持续更新

  • 2014年07月19日 23:12
  • 948B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库学习笔记–Application Design and Development(2)
举报原因:
原因补充:

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