什么是servlet
在用java开发网站的时候,我们有时候会用servlet。那什么是servlet。从实际代码角度说,他们就是一些java代码。是一些的类,比如:
@WebServlet("/Looks")
public class Looks extends HttpServlet {
....
}
所以所谓的servlet只不过是继承自HttpServlet的一些类。观察这个类 就发现几个基本的方法,构造函数,doGet,doPost。
写好之后,在浏览器中访问http://website/looks时,web服务器解析了http中的内容,知道你要访问servlet,就实例化一个servlet类,产生一个servlet对象,然后调用一系列servlet方法。servlet容器(比如tomcat)会执行这个java代码编译之后的class代码。
映射关系怎么定义
上一部分中说道的流程中有一步,服务器解析http之后,怎么知道你要访问servlet,又怎么映射到servlet类?首先,每个servlet类都将映射到一个或者多个URL模式,servlet收到的URL后,会去web.xml中定义的模式,寻找匹配项。所以(1)从文件角度来说,是web.xml。通过web.xml 中定义的模式,找到对应的servlet类来处理请求。
请求处理流程
这个图非常清楚,引自ibm网站。可以看到,请求是先经过servlet和分派层,然后经过控制器,如果有需要进行业务逻辑则先处理,否则直接走到jsp,最后返回。业务的数据转为bean对象,以供在jsp中使用。