Servlet是哪里的概念
首先明确Servlet是JavaEE的概念,所谓Tomcat Jetty都是基于JavaEE的一个Servlet容器,Servlet并不是Spring的概念!
Servlet在哪里配置
既然Servlet是JavaEE的概念,参考文章web.xml配置文件讲解,它的配置文件肯定是web.xml
Servlet如何完成地址转换
在配置文件根标签web-app下有两个标签
- servlet:代表后台进行逻辑处理的Java代码
- servlet-mapping: 代表对外开放的URL地址
servlet和servlet-mapping一者代表Java的逻辑,一者代表对外转换的url地址,它们之间通过参数 servlet-name 作为连接手段
这个地址与静态资源不同,该地址不存在一个实质的文件,这种就是逻辑接口
接口和静态文件的区别参考接口是什么
Servlet举个栗子
下面展示如何进行映射
1 | <servlet> |
逻辑类要怎么写
逻辑类要如何写才能完成Servlet也就是Http报文的逻辑呢?JavaEE为你准备好了一个类 HttpServlet,你只需要对其进行实现,里面就有一些http常用的概念让你使用
1 | public class ClassBean extends HttpServlet { |
比如我们常见的Get和Post,后台具体做了什么操作,就可以在这个逻辑函数里完成,其中
- request: 这个是对请求报文的分拆和包装
- response: 完成逻辑处理后,把返回的东西放入response,Servlet就会帮你返回给发送者
总结
根据以上栗子,每当你访问 url:port/project/bean这个地址时,就会完成ClassBean里的逻辑处理
难道我有100个地址,要写100份web.xml文件么?
我们知道了Servlet如何工作,那么实际应用中我有无数个接口该怎么办呢?我们可以把url的根目录映射给一个转发器,在转发器内部完成url的管理,SpringMVC就是完成的这个功能,参考文章web.xml的配置文件看如何把SpringMVC加入Servlet
使用注解式Servlet
在Servlet 3.0里,Java推出了注解式Servlet,比写web.xml更为方便
1 | @WebServlet(name = "servletName", value = "/bean") |
可以进入其源代码文件查看每一项属性的意义
1 | @Target({ElementType.TYPE}) |