说起java开发WEB,大家就会想到JSP和SERVLET。现在初学者很多都潮着ssh(以后再谈)这种框架开始学了,不过从那里学都可以,JSP都是开始建项目就会有一个index.jsp的页面,代码看起来很像HTML的页面代码,就是多了一些所谓动态页面必须的头部。这个应该是初学都见过比较简单的JSP文件,而SERVLET会在那里见过呢。可能是会这样听说而来,SERVLET是没JSP前做开发时的一个CGI。那他们之间有啥关系呢?
这里我就根据我学过原理和自己开发的一些经验谈谈。首先说一个他们的关系,JSP其实就是一个SERVLET,在TOMCAT里要运行JSP先要把它转化成.java文件,实际也是一个SERVLET再编译这个.java文件成.class文件。JSP这样做是方便开发人员,在页面的设计上跟java代码分离,感觉开发不是在一个java类上做视图,而是把类都放入JSP文件编辑。这样对开发者的视图编辑更方便(其时我是不提倡在JSP面JAVA代码的,最基本的可以用C标签来代替JAVA代码在JSP上用,这里的方便指对初学者)。这样看来JSP把开发者实现视图从java类里实现,解放到JSP页面来实现这样更可观。既然JSP最终是转变为SERVLET,那这里主要还是谈谈SERVLET。
SERVLET的生命周期就不提了,网上多的一大片,这里谈谈SERVLET我们怎么来看待这个强大的JAVA类。那就从SERVLET是一个什么的类说起吧。首先SERVLET是一个被SUN公司规定出来的一个类,其实规定的一堆接口,
这个SERVLET的接口源码:
package javax.servlet;
import java.io.IOException;
// Referenced classes of package javax.servlet:
// ServletException, ServletConfig, ServletRequest, ServletResponse
public interface Servlet{
public abstract void init(ServletConfig servletconfig) throws ServletException;
public abstract ServletConfig getServletConfig();
public abstract void service(ServletRequest servletrequest, ServletResponse servletresponse) throws ServletException, IOException;
public abstract String getServletInfo();
public abstract void destroy();
}
看吧很普通的一个INTERFACE跟大家开发的接口没什么俩样,不过SUN规定的不只一个接口,而是一堆接口,他们的关系都很明确,只要谁遵循这一规范那就可以实现这SERVLET所有的功能。
其时就这些接口SERVLET是运行不起来的,还要有SERVLET 容器和服务器才能运行,这又是怎么回事呢。这边就简单提一下,容器就像一个工具包,现在做一个工程要很多工具,你不可能每个人都带上所有要用的工具,那样不方便也浪费资源,现在你们主管说:小东你管所有的工具(工具正常都会有多个相同工具这方便同时多人用吗),谁要用就来领。SERVLET容器也这样,开发者生产工具,都放入这个容器,谁请求就过来调用——这个相当于工具包。而小东——就是相当服务器。