Spring-web源码解析之HttpRequestHandler

Spring-HttpRequestHandler

基于4.1.7.RELEASE

HttpRequestHandler用于处理Http requests,其类似于一个简单的Servlet,只有一个handlerRequest方法,其处理逻辑随子类的实现不同而不同。

其实现类有

DefaultServletHttpRequestHandler

public class DefaultServletHttpRequestHandler implements HttpRequestHandler, ServletContextAware 

由于其实现了ServletContextAware,所以会被Spring的容器通知它所使用ServletContext,具体通知的时机是在设置完bean的属性之后init回调之前,

它的调用次序是在ApplicationContextAware之后的。次序如下图



而在本类中,setServletContext的主要作用是,如果当前的defaultServletName没有设置,则根据ServletContext中的DispatcherName来决定当前的defaultServletName。而这个defaultServletName是做什么用的呢?看下面这段注释

/**
 * Set the name of the default Servlet to be forwarded to for static resource requests.
 */
public void setDefaultServletName(String defaultServletName) {
   this.defaultServletName = defaultServletName;
}

设置静态资源转发的默认Servlet的name。

@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

   RequestDispatcher rd = this.servletContext.getNamedDispatcher(this.defaultServletName);
   rd.forward(request, response);
}

将请求转发到默认的dispatcher中去,该dispatcher可能为多种形式的Servlet,在tomcat上则是默认为名字“default”的Servlet。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值