Web编程核心

1. 理解浏览器/服务器结构 (B/S)

B/S 是从 90年代的客户端/服务器端发展而来, 共同点都是由一个(或一组)服务器来服务多个客户端。

差 别在于:首先,C/S结构的客户端可能是由不同语言编写的,例如VB,Delphi, PowerBuilder等, B/S结构中浏览器成为了一个通用的客户端, 程序以Web的方式呈现,不需要安装,服务器端的升级就意味着所有客户端的升级,这和C/S相比是个翻天覆地的变化。

其次B/S的访问协议也标准化为HTTP(s) ,而不是原来各种各样的私有协议。

最后B/S结构中的服务器面向全球用户访问,而不像C/S那样仅仅是局域网, 所以压力更大, 挑战更大。

2. Web页面是怎么组成的?

简单来说就是HTML + CSS + Javascript , 我们看到的Web界面就是由这三者组成。

HTML负责结构, CSS负责展现, 而Javascript负责行为。

我们说的前端开发也主要是做这一块, 对于前端工程师,需要能理解DOM 模型,以及如何通过javascript(例如JQuery等框架)来操作DOM模型。

3. 浏览器和服务器是怎么打交道的?

当然是HTTP ! HTTP说穿了就是浏览器和服务器聊天是的一种约定, 这个约定确保双方互相理解。

完整的HTTP是非常复杂的,《HTTP权威指南》一书厚达700多页。

其实我们最常用, 也是最重要的也就那么几点:

(1) GET 和 POST 。 GET从服务器端获取数据, POST 向服务器端发送数据(由此引出图片上传问题)

(2) HTTP是个没有状态的协议,需要通过额外的机制来维持状态(例如登录状态), 常用的方法就是cookie。

(3) 理解HTTP 状态码

(4) 理解 同步 vs 异步(由此引出AJAX,以及JQuery等框架)

4. URL 和 代码的映射

理解url 和 代码之间的关联, 例如 www.xxx.com?action=login 这样的url 是怎么和后端的业务代码关联起来的?

这样的规则是在哪里定义的? 用代码、注解还是配置文件?

后端的业务代码该如何组织? 相信现在不会有人把业务逻辑都写到Servlet当中了, 所以需要很多MVC 框架像Struts , SpringMVC 来组织代码,让系统清晰易懂。

5. 数据的验证、转换和绑定

如何保证浏览器发过来的数据是符合要求的?

例如不能为空、不超过8个字符、两个密码必须相等…. , 出错了得给出错误提示。

浏览器发过来的数据都是形如username=liuxin&password=123456这样简单的文本, 但是后台程序却有着丰富的数据类型,什么String, Date ,Integer等等。 所以需要把文本变成指定语言的类型。

类型转换以后, 后端的业务代码怎么才能有效的使用呢?

最简单的就是弄一个key : value 这个样的Map 出来, 业务代码直接用map.get(key) 即可。

高级一点的可以把页面发来的数据直接绑定到对象的属性上, 并且支持数组,嵌套等复杂的结构。

例如user.name=liuxin&user.password=123456 可以绑定到一个叫User的对象, 其中有两个属性userName和password。

6. Web安全

如何防止黑客利用SQL 注入,跨站脚本攻击, 跨站请求伪造等手段来攻击系统?

7. 数据库访问

这一块是比较麻烦的, 毕竟面向对象(OO)世界和关系(Relational)数据库之间存在着天然的鸿沟。

对于简单的应用, 直接写点JDBC就够用了,只需要掌握Connection, Statement , Resultset这三个基础。

复杂点的需要用O/R Mapping 框架来搞定,例如 Hibernate, MyBatis ,还有RoR的ActiveRecord。

这其中比较棘手的就是表之间的关联, 就是所谓的一对多, 一对一, 多对多这样的关系, 如何在面向对象的世界里描述。

扩展开去,还需要处理连接池, 事务,锁 等各种烦人问题。

8. 用什么技术来生成Web页面?

这里说的Web页面就是第2点中的页面,包括HTML, CSS, Javascript。

能不能直接用Servlet的PrintWriter 直接输出HTML ? 当然可以,只是以后就没有人看懂了。

现在用来创建Web页面的技术多如牛毛:例如 JSP, Velocity, Freemaker, Groovy 等等, 他们都有一个共同点: 模板技术

说白了就是有一个HTML的模板, 里边可以嵌入代码, 这个模板在运行时(例如在Tomcat当中)就可以根据输入的不同而生成不同内容的Web界面了。

无论哪种模板,都需要面对一个重要问题:如何展示从业务逻辑层发送来的数据? 这一步骤其实和第5步中的数据绑定有密切关系。因为这一步需要确定诸如user.name , user.password这样的字段名称。

9. 如何把对象变成XML或者JSON字符串?

由于AJAX以及手机端的存在,对于一个URL的请求, 他们要求的返回值通常不是HTML页面, 而是XML或者JSON数据, 此时需要有框架把对象转化成相应的字符串。

搞定了Web这些基础的东西,在公司里做一个Web程序员应该不在话下了, 接下来需要学习的就是像高并发,缓存,搜索,分布式等高级的内容了。

时间: 2024-08-04 06:18:38

Web编程核心的相关文章

python+web编程学习总结记录(一)

近来一个多星期一直在学习py的web编程,从零开始,短暂时间接受的很多知识都需要消化吸收,所以在这里把这个过程梳理一遍,尽量用自己的语言去描述这些知识点. 首先是web编程的必备知识:HTTP协议.超文本传输协议(HTTP),是一种通信协议,按照定义来直接去看容易一头雾水,但其实只需要了解:web服务器和客户端之间交流,必须要遵守统一的规矩,不然就跟你说汉语我说英文一样,互相不知对方在说什么.这个统一的规矩或者格式就是HTTP协议 而服务器和客户端之间的通信方式简而言之就是,客户端给服务器发了一

python web编程-概念预热篇

互联网正在引发一场革命??不喜欢看概念的跳过,注意这里仅仅是一些从python核心编程一书的摘抄 这正是最激动人心的一部分了,web编程 Web 客户端和服务器端交互使用的“语言”,Web 交互的标准协议是HTTP(超文本传输协议).HTTP协议是TCP/IP 协议的上层协议,这意味着HTTP 协议依靠TCP/IP 协议来进行低层的交流工作.它的职责不是路由或者传递消息(TCP/IP 协议处理这些),而是通过发送.接受HTTP 消息来处理客户端的请求. HTTP 协议属于无状态协议,它不跟踪从一

物联网网络编程、Web编程综述

本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.对于专注J2EE后端服务开发的童鞋们来说,这篇文章可能稍显简单.但是网络编程和web编程对于绝大部分嵌入式物联网工程师来说是一块真空领域. 的确,物联网研发应该以团队协作分工的方式进行,所以有嵌入式设备端.网关.web前端.APP.后端开发等专属岗位.作为系统架构师,自然需要掌握各种岗位的关键技术.作为嵌入式工程师,掌握网络编程.web编程,能够极大地拓展自己的视野和架构思维,能够主动地对系统的各种协议和应用场景提出优化的见解

[转]所有编程皆为 Web 编程

Web编程还远远没有达到完美的境地.其实,还有点乱!没错,随便会写点代码的人就能三下两下地搞出一个糟糕的Web应用:也确实,99%的Web 应用都似狗屎一堆.但是,这也意味着,相当"聪明"的程序员们正在将他们的成果展现在成百上千(或者成千上万,甚至几百万)的用户面前,而这在互联网盛行 之前是绝无可能的 把软件按照Web应用的形式重整一下,即使软件本身并 不怎么样,这也使得程序员们能够把他们的软件展现在某个地方的某人面前. 如果你希望尽可能多的用户来使用你的软件,绝没有比把它做成Web应

不要忽视Web编程中的小细节

概述:长时间以来,我们创造了某些在构造和范围内用以提升网站易用性的约定和实践.然后在我们进行web编程的时候总有一些疏忽和纰漏.这里总结了一些web编程时容易出现的小错误,并给出了相应的补救方法,希望可以帮助提高网站的可用性.只要避免下列这些错误,网站的用户体验度就会大大提升. 错误一: 表单标签没有与相应字段相关联 利用 "for" 属性,使客户可以通过点击标签在表格内选择正确的输入字段.这对于复选框和单选字段来说就是要有更大的可点击区域. 错误二: Logo图表没有链接到主页 给l

Table被web编程弃用的原因

Table要比其它html标记占更多的字节.(延迟下载时间,占用服务器更多的流量资源.)Tablle会阻挡浏览器渲染引擎的渲染顺序.(会延迟页面的生成速度,让用户等待更久的时间.)Table里显示图片时需要你把单个.有逻辑性的图片切成多个图.(增加设计的复杂度,增加页面加载时间,增加HTTP会话数.)在某些浏览器中Table里的文字的拷贝会出现问题.(这会让用户不悦.)Table会影响其内部的某些布局属性的生效(比如<td>里的元素的height:100%)(这会限制你页面设计的自由性.)一旦

【汇总】Python 编程核心知识体系

[汇总]Python 编程核心知识体系 大神著作,源自:https://woaielf.github.io/2017/06/13/python3-all/ 本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库,后续会发布相应专题的文章). 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合),条件&循环,文件对象,错误&异常,函数,模块,面向对象编程: 接着,结合这些思维导图主要参考的资料,分享一下我的学习体验,一方面

Python Web编程系列

我从网上找到了其他园友的文章,很不错,留着自己学习学习. Python Web编程(一)Python Web编程(二)Python Web编程(三)Python Web编程(四)Python Web编程(五)Python Web编程(六)Python Web编程(七) Python Web编程(八) 出处:http://www.cnblogs.com/game-over/category/105911.html

JAVA web编程经验之: 一个请求一个事务

对于一个web请求,你会开启几个事务呢? 或许你没注意过吧. 又或许你不会对代码,性能要求太高,所以.... 一个请求一个事务, 因为一个事务往往和一个数据库连接关联, 如果开启了多个事务的话,也就意味着多个数据库连接, 性能不高吧? 前提 1.项目的代码结构分层如下: web层 ->  service层 -> infrastructure层(或DAO层) 2.所有事务都添加在 service层, 通过AOP(或其他类似的技术)实现 先看代码(一个Spring Controller 的调用代码