Tomcat和Servlets
2. Tomcat主线程对转发来用户的请求做出响应创建两个对象:HttpServletRequest和HttpServletResponse;
3. 从请求中的URL中找到正确Servlet,Tomcat为其创建或者分配一个线程,同时把2创建的两个对象传递给该线程;
4. Tomcat调用Servlet的servic()方法,根据请求参数的不同调用doGet()或者doPost()方法。假设是HTTP GET请求,doGet()方法生成静态页面,并组合到响应对象里;
5. Servlet线程结束,Tomcat将响应对象转换为HTTP响应发回给客户,同时删除请求和响应对象。
1、客户端发出request请求和请求URL。例:http://127.0.0.1:8080/test_servlet/loginServlet
2、服务器Tomcat根据URL截取相关内容。如:项目名称test_servlet,访问名称loginServlet
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class> LoginServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
3、Tomcat根据获取的访问名称,根据相关的配置文件获取servlet-name。如上所示的配置文件中的servlet-name为MyServlet
4、根据相关的servlet-name找到相关的servlet-class。如上所示的配置文件中的servlet-class为LoginServlet
5、Tomcat根据找到的class的完整路径,利用反射对class完成实例化
6、Tomcat调用Servlet类的service()方法
7、被调用Servlet类由于继承了父类的service方法,该方法会根据传递的Request请求的类型POST/GET选择执行doGet/doPost方法
8、doGet/doPost方法会根据传递的相关参数调用或执行相关的操作。例如:调用UserManager类执行login方法,通过响应对象Response输出HTML字符串传递给Tomcat
9、Tomcat将Response转换为HTTP响应发回给客户端,同时删除请求和响应对象。
Tomcat是一个web容器,它实现了J2EE中的JSP和servlet开发标准。编译好的servlet类运行在tomcat容器中,客户端不可以通过浏览器直接访问Servlet,需要在web.xml中进行相关配置之后才可以。
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
Servlet的生命周期是由Tomcat容器管理的,过程如下:
1. 客户发出请求—>Web 服务器转发到Web容器Tomcat;2. Tomcat主线程对转发来用户的请求做出响应创建两个对象:HttpServletRequest和HttpServletResponse;
3. 从请求中的URL中找到正确Servlet,Tomcat为其创建或者分配一个线程,同时把2创建的两个对象传递给该线程;
4. Tomcat调用Servlet的servic()方法,根据请求参数的不同调用doGet()或者doPost()方法。假设是HTTP GET请求,doGet()方法生成静态页面,并组合到响应对象里;
5. Servlet线程结束,Tomcat将响应对象转换为HTTP响应发回给客户,同时删除请求和响应对象。
从该过程中,我们可以理解Servlet的生命周期:Servlet类加载(对应3步);Servlet实例化(对应3步);调用init方法(对应3步);调用service()方法(对应4、5步);调用destroy()方法(对应6步)。
1、客户端发出request请求和请求URL。例:http://127.0.0.1:8080/test_servlet/loginServlet
2、服务器Tomcat根据URL截取相关内容。如:项目名称test_servlet,访问名称loginServlet
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class> LoginServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
3、Tomcat根据获取的访问名称,根据相关的配置文件获取servlet-name。如上所示的配置文件中的servlet-name为MyServlet
4、根据相关的servlet-name找到相关的servlet-class。如上所示的配置文件中的servlet-class为LoginServlet
5、Tomcat根据找到的class的完整路径,利用反射对class完成实例化
6、Tomcat调用Servlet类的service()方法
7、被调用Servlet类由于继承了父类的service方法,该方法会根据传递的Request请求的类型POST/GET选择执行doGet/doPost方法
8、doGet/doPost方法会根据传递的相关参数调用或执行相关的操作。例如:调用UserManager类执行login方法,通过响应对象Response输出HTML字符串传递给Tomcat
9、Tomcat将Response转换为HTTP响应发回给客户端,同时删除请求和响应对象。
10、浏览器将HTTP响应传递的HTML字符串进行渲染页面