熟知 Servlet 规范之前,请不要学习任何框架使用最简单的工具,不要任何向导和可视化熟知 HTTP 协议
框架很多,但套路基本类似,帮你隐藏很多关于 HTTP 协议细节内容,专注功能开发。
但对一个初学者来说,过早的接触框架往往是事倍功半!同样一个问题,换一种框架你可能需要从头开始研究。
下面是针对初学 Java 开发 Web 过程一些个人见解和思路,高手可略过。
1. 基本要求:Java 编程基础
有良好的 Java 语言编程基础,这是必须的,在讨论 Web 开发技术时提了一个 Java 编程基础的问题会被鄙视的。
2. 环境准备 (Eclipse + Tomcat)
选择一个你喜爱的Servlet容器,或者说大一点就是应用服务器,推荐 Tomcat 、Resin 或者 Jetty 这些轻量级的产品。这三个产品下载 zip 包解压后就可以用了。如果你不熟悉 Tomcat 的话请不要使用 exe 版本的 Tomcat,那会徒增很多烦恼。也不建议在 Eclipse 等一些开发环境中集成 Tomcat 的做法,也会徒增烦恼。
把应用服务器启动起来并能访问到其默认的页面为准。
关于开发工具
不推荐使用 MyEclipse 和 Eclipse 的 JEE 版本,徒增烦恼、运行缓慢而且还让你无法了解 Web 项目的结构。普通的 Eclipse 或者你喜欢的开发工具就足够了,能支持普通 Java 项目开发即可。
3. 了解 Servlet 和 Filter
好了,我已经把环境搭起来了,接下来该干嘛呢?
前面的步骤为的是搭建一个测试的环境,然后让你了解一个最基本的 Java Web 项目的结构。
一个最基本的 Java Web 项目所需的 jar 包只需要一个 servlet-api.jar ,这个 jar 包中的类大部分都是接口,还有一些工具类,共有 2 个包,分别是 javax.servlet 和 javax.servlet.http。我把这个jar包放到了 webapp 目录外的一个独立 packages 文件夹里,这是因为所有的 Servlet 容器都带有这个包,你无需再放到Web项目里,我们放到这里只不过是编译的需要,运行是不需要的。如果你硬是把 servlet-api.jar 放到 webapp/WEB-INF/lib 目录下,那么 Tomcat 启动时还会报一个警告信息。
再谈谈 Session
HTTP 协议里是没有关于 Session 会话的定义,Session 是各种编程语言根据 HTTP 协议的无状态这种特点而产生的。其实现无非就是服务器端的一个哈希表,哈希表的Key就是传递给浏览器的名为 jsessionid 的 Cookie 值。
当需要将某个值保存到 session 时,容器会执行如下几步:
a. 获取 jsessionid 值,没有的话就生成一个,也就是 request.getSession() 这个方法
b. 拿到的 HttpSession 对象实例就相当于一个哈希表,你可以往哈希表里存放数据(setAttribute)
c. 你也可以通过 getAttribute 来获取某个值
而这个名为 jsessionid 的 Cookie 在浏览器关闭时会自动删除。把 Cookie 的 MaxAge 值设为 -1 就能达到浏览器关闭自动删除的效果。
关于 JSP
首先我已经不用 JSP 很多年了,现在一直是使用 Velocity 模板引擎。