36 Request对象 Session Application

1. request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转换为真正的对象)。setAttribute与getAttribute方法都是在服务器端内部执行的客户端不知道服务器端是否执行过这两个方法。

程序对比

(1)

request1.jsp

<form action="request2.jsp">
    
    
    username: <input type="text" name="username">
    
    <input type="submit" value="submit">
    
    </form>

request2.jsp

<% String username = request.getParameter("username"); %>
    
    
    username: <%= username %>
    
    <% request.setAttribute("username", username); %>
    
    
    
    <jsp:forward page="request3.jsp"></jsp:forward>
request3.jsp

<% String username = (String)request.getAttribute("username"); %>
    
    <%= username %>

(2)


request2.jsp

<% String username = request.getParameter("username"); %>
    
    
    username: <%= username %>
    
    <% request.setAttribute("username", username); %>
    
       <a href="request3.jsp">request3.jsp</a>
程序1执行结果可以获取的属性值,程序2不能获取到属性值。




2. request的getParameter方法的作用是获取到客户端 通过表单或url请求参数所发送过来的参数值,是客户端与服务器端之间的交互服务器端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。没有与getParameter方法对应的setParameter方法。



3. request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。

4. session对象内数据的存活范围也就是session对象的存活范围(?只要浏览器不关闭,session对象就会一直存在?),因此在同一个浏览器窗口中,无论向服务器端发送多少个请求,session对象只有一个。

Session程序


session1.jsp

<form action="/test/Session2.jsp">
	<input type="text" name="username"/>  
	<input type="submit" value="submit"/>

</form>
session2.jsp

<%String username=request.getParameter("username"); 
   
   session.setAttribute("username", username);
    %>
  <h1> 欢迎登陆 <%= username %></h1>
   
   <a href="Session3.jsp">check</a>

session3.jsp

<%
    String name=(String)session.getAttribute("username");
   	if(name==null)
   	{%>
   		您还未登陆
   	<%}
   	else
   	{ %>
    <%= name %>您已经登陆
   	<% }
     %>

5. application(应用对象):存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程当中,application对象只有一个。

<body>
   <%  
   	int count=1;
      if (application.getAttribute("count")==null)
	   {
	   			count=1;
	   			application.setAttribute("count", count);
	   
	   }
	   else
	   {
		  count=Integer.parseInt(application.getAttribute("count").toString());
		  count++;
		   application.setAttribute("count", count);
		   
	   }
	      %>
	 <h1>您是第<%= count %>位访问者 </h1>
  </body>

6. request、session以及application这3个对象的范围是逐个增加的:request只在一个请求的范围内;session是在浏览器窗口的范围内?;application则是在整个服务器的运行过程中。

你可能感兴趣的:(36 Request对象 Session Application)