码迷,mamicode.com
首页 > 编程语言 > 详细

再看Spring

时间:2018-12-05 00:25:21      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:cep   ble   htm   table   order   http版本   spring   重写   映射   

第一次看Spring的代码,还是学生时候,看的模棱两可。

现在有了实际的工作经验,应该会另有收获。

 

先浏览下Http: 

http是用TCP来传输数据的一种协议,请求报文和响应报文的结构都分为三部分:首行、头部、主体。请求报文的首行是方法、URL、http版本,响应报文的首行是http版本、状态码、简略描述。

响应报文的状态码含义:

    1xx:信息性状态码 (没有仔细了解),

     2xx:成功,200

     3xx:重定向相关,301重定向成功

    4xx:客户端错误码,404 找不到资源(一般是请求内容错误)

     5xx:服务器错误,(一般是服务器逻辑抛异常)

 

Tomcat Servlet

 8.5 api   http://tomcat.apache.org/tomcat-8.5-doc/api/index.html   http://tomcat.apache.org/tomcat-8.5-doc/servletapi/index.html

javax.servlet  

 
The javax.servlet package contains a number of classes and interfaces that describe and define the contracts between a servlet class and the runtime environment provided for an instance of such a class by a conforming servlet container.

这个包中的类描述和定义了servlet 和 容器之间的关系。

javax.servlet.http 

 
The javax.servlet.http package contains a number of classes and interfaces that describe and define the contracts between a servlet class running under the HTTP protocol and the runtime environment provided for an instance of such a class by a conforming servlet container.

这个包中 是 ,Servlet 和 容器 在http协议下的实现。

 

ServletConfig  A servlet configuration object used by a servlet container to pass information to a servlet during initialization.

一个Servlet实例初始化的参数之一是ServletConfig,容器会在初始化servlet的时候把它传进Servlet的初始化函数中(init 函数)。Servlet接口的初始化函数:public void init(ServletConfig config) throws ServletException;

ServletContext  Defines a set of methods that a servlet uses to communicate with its servlet container, for example, to get the MIME type of a file, dispatch requests, or write to a log file.

ServletContext 是 一个servlet实例运行的上下文,实例通过ServletContext来和容器交互。ServletConfig中包含一个ServletContext。ServletContext 中的内容是变化的。

ServletConfig 中 getInitParameterNames 和 getInitParameter 用来访问 init-param标签的内容。getServletName 用来访问 servelt-name标签的内容。

其实很多时候都会在代码中写这样的结构,一个大的模块需要使用很多个小的节点一起来实现功能,这些节点依赖的外部因素分为两类:1,常亮参数 ;2,运行时的环境。在这里分别对应了ServletConfig和ServletContext。比方说手游中的新手引导系统,引导系统分为多个小的行为(点击、对话、拖拽等)。点击行为的具体样式可以配置成常亮,而点击所触发的具体事件则是根据游戏运行时的状态来确定的(一般通过一个引用变量来和容器交互)

 

抽象类GenericServlet 实现了 Servlet接口 和 ServletConfig接口,它的inti(ServletConfig)函数定义为:

public void init(ServletConfig config) throws ServletException {     this.config = config;     this.init(); }

继承GenericServlet的时候可以直接重写无参的初始化函数   init()  ,容器传递的ServletConfig 可以通过getServletConfig来获得。

GenericServlet 需要重写的抽象方法是

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException

 

HttpServlet

HttpServlet 是Servlet针对http协议的一种实现。他继承自GenericServlet,其实现的service方法如下:

public void service(ServletRequest req, ServletResponse res)     throws ServletException, IOException {
HttpServletRequest request; HttpServletResponse response;
try { request = (HttpServletRequest) req; response = (HttpServletResponse) res; }
catch (ClassCastException e) {
throw new ServletException("non-HTTP request or response"); }
service(request, response);
}
HttpServlet中service(HttpServletRequest , HttpServletResponse)方法的主要作用是把http请求的方法类型映射到具体的函数上。
protected void service(HttpServletRequest req, HttpServletResponse resp)     throws ServletException, IOException 

 GenericServlet的Init() 和HttpServlet的service(HttpServletRequest , HttpServletResponse)让我联想起了重构中的rename,(纯粹是联想)

 

 

Web.xml 中配置Servlet

多个servlet-name 可以使用同一个servlet-class ,init-param各不相同。(init-param相同的话就没有意义了)

一个servlet-name 可以映射多个url-pattern

 

再看Spring

标签:cep   ble   htm   table   order   http版本   spring   重写   映射   

原文地址:https://www.cnblogs.com/afraidToForget/p/10067707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!