JAVA WEB:application与session对象使用范例与差异深度分析

1.本文分析一下request对象中getParameter方法及getAttribute的差异及使用场景。

这个关系到servlet的生命周期

很简单的一个例子,上代码

页面1 :request1.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 <html>
 7 <head>
 8
 9 <title>1</title>
10 </head>
11 <body>
12         <form    action="request2.jsp">
13
14             username:<input type="text" name="username">
15
16             <input type="submit" value="submit">
17             </form>
18 </body>
19 </html>

这个JSP 从text框获取一个文本值(用户名)

然后在request2.jsp中调用getParameter方法获取改对象

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>2</title>
 8 </head>
 9 <body>
10
11 <%
12     String username = request.getParameter("username");
13
14 %>
15
16         username: <%=username %>
17
18         <% request.setAttribute("username", username);%>
19
20
21         <jsp:forward="request3.jsp"></jsp:forward>
22 </body>
23 </html>

显示成功。

我们在request2.jsp中将username再set到request中传递给第三个页面request3.jsp

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>3</title>
 8 </head>
 9 <body>
10     <% String username = (String)request.getAttribute("username");%>
11
12     username:<%=username %>
13 </body>
14 </html>

然后在request3.JSP中用getAtterbute方法获取该对象

但是二者有什么区别呢,我们将request2.jsp修改一下即可看出差别

修改后的request2.JSP

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>2</title>
 8 </head>
 9 <body>
10
11 <%
12     String username = request.getParameter("username");
13
14 %>
15
16         username: <%=username %>
17
18         <% request.setAttribute("username", username);%>
19
20
21         <a href="request3.jsp">request3.jsp</a>
22 </body>
23 </html>

我们将request2.jsp中的页面跳转转为超链接

username:null

  页面只会这么显示。

因为改为超链接后,在游览器点击该链接,游览器会发送第二个请求,那么request的生命将终止,而发起的第二个request的session会话中是null的不存在一个叫username-String的KEY-VALUE对的。

总结:

1.request的setAtterbute与getAtterbute方法一般都是成对出现的,首先通过setAtterbute方法设置属性与属性值,

然后getAtterbute根据属性获取到该值(一般都需要进行向下的类型转换,转换为确切的类型对象进行使用)。setAtterbute与getAtterbute方法都是在服务器内部执行的,

客户端不可见。

2.request的getParameter方法的作用是获取到客户端通过表单或者URL请求参数发送过来的参数值,是客户端与服务器

之间的交互,服务器端想要获取到客户端发送过来的数据,就需要使用getParameter方法来获取。

没有雨getParameter方法对应的setParameter方法

3.*setAtterbute与getAtterbute是服务器内部对话的方法,而getParameter是游览器和服务器进行外部对话的方法

二。session与request的区别

request对象内的数据的存活范围是在request对象的范围内,当客户端向服务器发送一个请求,服务器想客户端返回一个响应后,该

请求对象就被销毁了,之后再向客户端发送新的请求时,服务器会创建新的request的对象,改对象之前的request和其没有任何关系,因此也无法获得之前的request对象中的任何对象。

4.session对象的内数据的存活范围也就是session对象的存活范围(?通俗的说:只要游览器不关闭,session对象就会一直存在?),

因此子啊同一个游览器窗口中,无论想服务器发送多少个请求,session对象只有一个

5.

时间: 2024-08-06 06:19:47

JAVA WEB:application与session对象使用范例与差异深度分析的相关文章

java web 程序---内置对象application的log方法的使用

application的主要方法里,有log方法,是日志文件里可以查看到信息的. 当老师写好代码后,他发现在tomact里的log目录下找不到信息,原因是:我们用myeclipse这个客户端软件,应该把服务器关闭,而是去bin目录下,手动开启服务器 即startup.bat.这个文件,然后在log目录下查到了信息: 这里有截图,我输入的用户名,这里当程序运行后是个空白页面,只有到log目录下才可以查看到信息. 代码: login.jsp ? 1 2 3 4 5 6 7 <body>     &

ASP.NET 使用application和session对象写的简单聊天室程序

ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览器端的变量对象,用来存储跨网页程序程序的变量或者对象. 说实话,写了快一年的asp.net,application对象还真没怎么用过.看了看书,根据这两个对象的特性写了一个简单的聊天室程序.真的是非常的简陋. 我的思路是,有两个页面Default页和ChatRoom页,页面布局如图: Default

深入研究Application和Session对象

用ASP编写虚拟社区.网上购物等程序时,Application和Session对象具有举足轻重的作用,能够灵活合理地运用这两个对象是提高程序质量的关键.下面让笔者根据自己在这方面的经验,向大家深入介绍一下ASP的这两个内建对象. 一.Application对象的成员概述 Application对象成员包括Application对象的集合.方法和事件. ⒈Application对象的集合 Contents集合:没有使用<OBJECT>元素定义的存储于Applicaiton对象中的所有变量的集合

Java Web 九大内置对象(一)

在Jsp 中一共定义了九个内置对象,分别为: *request            HttpServletRequest; *response          HttpServletResponse; *session             HttpSession; page                  This(本jsp页面): *application        ServletContext; config                 ServletConfig; exc

java web中的Session

Session的生命周期 一.创建session对象 当打开浏览器第一次访问jsp或servlet时,服务器端创建session对象,通过设置cookie的方式,把JSESSIONID存放到浏览器中,浏览器再次访问服务器时,自动携带JSESSIONID.访问其他资源时,访问的都是同一个session对象. 当服务器端设置request.getSeesion(false)时,不创建session对象 当服务端设置request.getSession(true)或者request.getSessio

java集合框架(1) hashMap 简单使用以及深度分析(转)

java.util 类 HashMap<K,V>java.lang.Object  java.util.AbstractMap<K,V>      java.util.HashMap<K,V>类型参数:K - 此映射所维护的键的类型V - 所映射值的类型所有已实现的接口: Serializable, Cloneable, Map<K,V> 直接已知子类: LinkedHashMap, PrinterStateReasons -----------------

9.Java web&mdash;JSP内置对象

容器内置了9大对象,这些对象在jsp页无需实例化,可以直接使用. 分别为request. response .session. application .out. pageContext .config .page. exception 1)request对象 request封装了由客户端请求的http所有细节,包括HTTP头信息,系统信息,请求方式,请求参数 request.getParameter("参数name");  //获取请求的url参数.不存在此参数返回null,存在参数

Java根据sessionId获取Session对象

1. 建立一个自己的SessionContext: package cn.org.jshuwei.session.core; import javax.servlet.http.HttpSession; import java.util.HashMap; public class MySessionContext { private static MySessionContext instance; private HashMap mymap; private MySessionContext(

java web 中分布式 session 的实现

已经有现成的库现实现分布式的 session 管理: 1.memcached-session-manager. 2.tomcat-redis-session-manager. 3.spring-session 官网地址 : http://projects.spring.io/spring-session/ GitHub地址:https://github.com/spring-projects/spring-session 4.设计一个Filter,利用HttpServletRequestWrap