返回介绍

搞懂了这几点,你就学会了 Web 编程

发布于 2025-01-22 00:38:52 字数 2701 浏览 0 评论 0 收藏 0

做了那么多年 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 程序员应该不在话下了, 接下来需要学习的就是像高并发,缓存,搜索,分布式等高级的内容了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文