Servlet--Request生命周期

Servlet--Request生命周期

一、Request、Response对象的生命周期

1、浏览器像servlet发送请求
2、tomcat收到请求后,创建Request和Response两个对象的生命周期,并且将浏览器请求的参数传递给Servlet
3、Servlet接收到请求后,调用doget或者dopost方法。处理浏览器的请求信息,然后通过Response返回信息
4、tomcat接收到返回的信息,返回给浏览器。
5、浏览器接收到返回消息后,tomcat销毁Request和Response两个对象,同时销毁这两个对象所获得的信息。
Servlet--Request生命周期_第1张图片


二、Request、Response对象的内存地址维护
1、在同一个浏览器中不断的向同一个Servlet发送请求,reqeust和response不断的新建和销毁但是内存地址没有改变。是因为tomcat根据访问的IP地址对reqeust和response内存地址进行维护,当reqeust和response对象销毁后,tomcat不会立刻将该内存地址销毁,而是将该内存进行占位,等到下次创建新的reqeust和response对象就会分配到这个内存中。避免了不断分配新内存造成资源浪费。
2、如果该内存长时间(默认30分钟)没有reqeust和response对象,将会销毁该内存地址,或是存放其他的对象。

三、Request、Response对象的内存地址维护实例
1、接受和返回请求
package test07_6;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RequestServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		//获取访问的IP地址和request地址
		System.out.println("request"+request.getRemoteAddr()+request);
		
                //获取访问的IP地址和response地址
System.out.println("response"+request.getRemoteAddr()+response);}}
 
   2、web.xml配置 
  


  
    This is the description of my J2EE component
    This is the display name of my J2EE component
    RequestServlet
    test07_6.RequestServlet
  

  
    RequestServlet
    /RequestServlet
  


3、index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    My JSP 'index.jsp' starting page
	
	
	    
	
	
	
  
  
  
    This is my JSP page. 
查看request和response内存地址

4、测试
A、浏览器访问:http://127.0.0.1:8080/test07_6/   在主页面点击【查看request和response内存地址】
B、不断的刷新浏览器,request对象和response对象不断新建和销毁,但是内存地址没有改变。
C、再用另一个IP地址访问,内存地址改变。

你可能感兴趣的:(-----【javaWEB】,-----【Servlet】,全栈测试)