整理参考自《刘欣 程序猿》javascript
一、理解浏览器/服务器结构 (B/S)
B/S 是从 90年代的客户端/服务器端发展而来, 共同点都是由一个(或一组)服务器来服务多个客户端。
差异在于:首先,C/S结构的客户端多是由不一样语言编写的,例如VB,Delphi, PowerBuilder等, B/S结构中浏览器成为了一个通用的客户端, 程序以Web的方式呈现,不须要安装,服务器端的升级就意味着全部客户端的升级,这和C/S相比是个翻天覆地的变化。
其次B/S的访问协议也标准化为HTTP(s) ,而不是原来各类各样的私有协议。
最后B/S结构中的服务器面向全球用户访问,而不像C/S那样仅仅是局域网, 因此压力更大, 挑战更大。
二、Web页面是怎么组成的?前端
简单来讲就是HTML + CSS + Javascript , 咱们看到的Web界面就是由这三者组成。
HTML负责结构, CSS负责展示, 而Javascript负责行为。
咱们说的前端开发也主要是作这一块, 对于前端工程师,须要能理解DOM 模型,以及如何经过javascript(例如JQuery等框架)来操做DOM模型。 java
三、浏览器和服务器是怎么打交道的?程序员
固然是HTTP ! HTTP说穿了就是浏览器和服务器聊天是的一种约定, 这个约定确保双方互相理解。完整的HTTP是很是复杂的,《HTTP权威指南》一书厚达700多页。其实咱们最经常使用, 也是最重要的也就那么几点:数据库
四、URL 和 代码的映射后端
理解url 和 代码之间的关联, 例如 www.xxx.com?action=login 这样的url 是怎么和后端的业务代码关联起来的?这样的规则是在哪里定义的? 用代码、注解仍是配置文件?后端的业务代码该如何组织? 相信如今不会有人把业务逻辑都写到Servlet当中了, 因此须要不少MVC 框架像Struts , SpringMVC 来组织代码,让系统清晰易懂。数组
五、数据的验证、转换和绑定浏览器
如何保证浏览器发过来的数据是符合要求的?缓存
六、Web安全安全
如何防止黑客利用SQL 注入,跨站脚本攻击, 跨站请求伪造等手段来攻击系统?
七、数据库访问
这一块是比较麻烦的, 毕竟面向对象(OO)世界和关系(Relational)数据库之间存在着自然的鸿沟。
对于简单的应用, 直接写点JDBC就够用了,只须要掌握Connection, Statement , Resultset这三个基础。
复杂点的须要用O/R Mapping 框架来搞定,例如 Hibernate, MyBatis ,还有RoR的ActiveRecord。
这其中比较棘手的就是表之间的关联, 就是所谓的一对多, 一对一, 多对多这样的关系, 如何在面向对象的世界里描述。
扩展开去,还须要处理链接池, 事务,锁 等各类烦人问题。
八、用什么技术来生成Web页面?
这里说的Web页面就是第2点中的页面,包括HTML, CSS, Javascript。
能不能直接用Servlet的PrintWriter 直接输出HTML ? 固然能够,只是之后就没有人看懂了。
如今用来建立Web页面的技术多如牛毛:例如 JSP, Velocity, Freemaker, Groovy 等等, 他们都有一个共同点: 模板技术。
说白了就是有一个HTML的模板, 里边能够嵌入代码, 这个模板在运行时(例如在Tomcat当中)就能够根据输入的不一样而生成不一样内容的Web界面了。
不管哪一种模板,都须要面对一个重要问题:如何展现从业务逻辑层发送来的数据? 这一步骤其实和第5步中的数据绑定有密切关系。由于这一步须要肯定诸如user.name , user.password这样的字段名称。
九、如何把对象变成XML或者JSON字符串?
因为AJAX以及手机端的存在,对于一个URL的请求, 他们要求的返回值一般不是HTML页面, 而是XML或者JSON数据, 此时须要有框架把对象转化成相应的字符串。 搞定了Web这些基础的东西,在公司里作一个Web程序员应该不在话下了, 接下来须要学习的就是像高并发,缓存,搜索,分布式等高级的内容了。