Servlet是一种比JSP更早的动态网页编程技术。在没有JSP之前,Servlet可以同时充当视图层、业务逻辑层和持久层角色。自MVC框架出现以后,Servlet的职责开始明确下来,仅仅作为控制器使用,不再作为视图层角色使用。
Servlet通常称为服务器小程序,是运行在服务器端的程序。用于处理及响应客户端的请求。Servlet是个特殊的Java类,创建Servlet类的时候必须继承HTTPServlet。Servlet提供不同的方法用于响应客户端请求:
doGet:用于响应客户端的GET请求;
doPost:用于响应客户端的POST请求;
doPut:用于响应客户端的PUT请求;
doDelete:用于响应客户端的DELETE请求;
响应每种请求的时候都需要重写其对应的方法。也可以只需重新service()方法来响应所有的请求。
HttpServlet还包括两个方法:
init(ServletConfig config):创建Servlet实例的时候,调用该方法来初始化Servlet资源;
destroy():销毁Servlet的时候,自动调用该方法回收资源;
Servlet需要配置在web应用中才能响应用户请求。配置Servlet的时候需要修改web.xml文件。配置Servlet需要配置两个部分:
配置Servlet的名字:对应web.xml文件中<servlet/>元素;
配置Servlet的URL:对应web.xml文件中<servlet-mapping/>元素;
如下配置实例:
<!--配置Servlet的名字--> <servlet> <!--指定Servlet的名字--> <servlet-name>myServlet</servlet-name> <!--指定Servlet的实现类--> <servlet-class>com.MyServlet</servlet-class></servlet> <!--配置Servlet的URL--> <servlet-mapping> <!--指定Servlet的名字--> <servlet-name>myServlet</servlet-name> <!--指定Servlet映射的URL地址--> <servlet-url>/myServlet</servlet-url> </servlet-mapping>
使用Servlet作为表现层存在以下劣势:
1、开发效率低,所有的HTML标签都需要使用页面输出流完成;
2、不利于团队的协作开发,美工人员无法参与Servlet界面的开发;
3、程序可维护性差,每一处小变动都需要重新编辑Java代码,并重新编译。
Servlet在MVC中仅仅作为控制器使用。对于遵循MVC模式的WEB应用而言:
JSP作为表现层(View)技术,用于收集用户请求参数,并将应用的处理结果、状态数据呈现给用户;
Servlet充当控制器(Controller)角色,它的作用类似于调度员:所有用户请求都发送给Servlet,Servlet根据请求调用对应的Model来处理用户请求,并调用JSP来呈现处理结果;
Mode通常用javabean来充当,所有的业务逻辑、数据访问逻辑都在model中实现。当然model之下也包含丰富的组件如DAO组件、领域对象等等。