java web之servlet
接下来一段时间会写一系列java web的学习博客,重点记录学习的方法和路径。
之所以对java产生了学习的念头,有几个原因:
- 市场需要,尤其是中小企业对低成本搭建分布式系统的需求,恰好java有很多轮子
- 微服务思想,spring cloud有完整的微服务轮子,只有亲自实践才有深刻理解
java本身生态庞大、涉及各个领域,从其他语言转过来的同学因为有相关领域的经验,所以一般只需要掌握相关的java框架或者类库就可以投入工作,随着使用的加深不断回顾基础,从而加深理解。
不过我目前的工作接触不到Java,所以我的学习方法更注重知识体系的建立,不求在实践方面有多么的深入,但求知识体系完整,从而提升对java技术栈的各方面理解。另外,语法方面我暂时也不会去刻意的学习,尤其是像thinking in java这种砖头,我是不会去碰的。
这系列的博客不会记录详细的过程,仅仅提供一些学习资料,学习路径。
我不会买任何一本java方面的书,因为它们真的太厚,废话太多了。网上有很多简明扼要的教程和视频(不是那些动辄几十章节,每章节1小时的视频),它们可以提供足够的基础、核心知识点。
IDE
开发java毋庸置疑选择这款编辑器:idea,注册参考:http://idea.lanyus.com/。
servlet
没有使用任何框架的PHP语言,与servlet技术的地位非常相像。
PHP脚本只需要编写请求处理逻辑,而具体的网络请求预处理等环节均由PHP-FPM搞定。
servlet也是如此,只需要编写请求的处理与应答,而像请求如何解析,应答如何序列化,以及如何方便的操作请求与应答,都由servlet类库包装好了。
servlet是java web的一个标准化组件,所有web框架都是在这个标准化的接口上封装出来的,所以掌握它是必经之路,学web就要先学servlet。
而tomcat,jboss等开源项目,就是一种HTTP服务端的实现,它们会从磁盘上将你编译过的servlet类加载到内存里并创建对象,网络解析的HTTP请求会解析到servlet相关的request,response对象中,最终传递给servlet对象进行处理,仅此而已。
- 首先,你确保安装了jdk和jre,然后确保你下载或者通过yum/brew等工具安装一个tomcat作为http server。
- 其次,你应该搭出一个Servlet环境并成功运行它,请参考:Intellij idea创建javaWeb以及Servlet简单实现。
- 再详细学习servlet:http://www.runoob.com/servlet/servlet-tutorial.html,你最好也亲自动手来提升自信。
- 关于servlet的context和config关系:http://www.cnblogs.com/vmax-tam/p/4127396.html。
- 关于多个servlet之间的内部dispatch操作:https://docs.oracle.com/cd/E13222_01/wls/docs92/webapp/progservlet.html#wp160016。
- 关于listener的用法:https://my.oschina.net/itblog/blog/204723。
- 关于默认主页(也就是访问/):可以通过welcome-file-list配置一个路径,然后通过servlet-mapping映射到一个servlet实现。(具体看我的例子)
我把我搭建的项目环境上传了github,方便你搞不定的时候比较一下哪里有差异:java-web-servlet。
带着疑惑
- session保存在tomcat里,而cookie在浏览器端只能session级过期。 — 那么,spring mvc框架是如何支持的?
- 文件表单解析额外加载了jar包,在最新标准里是如何支持的?
- spring mvc和servlet的接口有多大差异?以后在spring mvc学习中将会逐步了解。
- servlet,servletContext,servletConfig,session等等的set和get接口是原子的(线程安全的),但是逻辑上的同步需要自己做(比如set if not exists这种逻辑),参考:https://stackoverflow.com/questions/31588467/is-javax-servlet-servletcontext-set-getattribute-thread-safe。
如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~

👍学习中
加油!我也有这个学习念头,本身PHPer。
加油~