先回答第二个问题:
会话跟踪技术:cookie ,url 重写, 隐藏表单域 1.Cookie 实现会话跟踪机制。通俗的说,就是每当客户端请求一次,服务器端就响应一次,并且客户端将接受到的结果保存在本地机上,一个保存了用户信息的文件,称谓Cookie 。此后,当客户端再次对同一个服务器作出请求时,首先,服务器端会检索Cookie 文件信息,判断是否为同一用户,先前有哪些信息等等。再作出响应,并把这些响应的结果再次写到客户端的 Cookie 中去,替换或者追加一些内容。如此循环,请求和响应,服务器就可以根据Cookie知道各个请求是否来自于同一客户,且包括此前保存的有用的信息。请求-响应-写入Cookie-断掉连接   再次请求-读取Cookie-响应-写入Cookie-断掉连接。最明显的例子就是 我们在登录我们的邮箱,或者一个网站(如CSDN)时,就可以把用户名和密码保存在我们本地机上的Cookie。下次当再次打开这个网站时,会发现我们根本就没有输入姓名和密码就直接进入了以前要去的一个版快。这个实际上就是Cookie的实际运用,当我们请求这个网站时(服务器),服务器读取了Cookie的信息,来判断这个用户是否以前也登陆过这个网站,直接读取用户名和密码代替用户完成了登陆动作。2.URL重写但是有一种情况就是客户端禁止使用Cookie的话,该如何实现会话跟踪呢?这个时候最简单的就是 URL重写,以参数的形式附加到要请求页面的URL后面。当第二张页面提交时,会同时解析此URL ,得到所需要的参数。3.隐藏表单域是一种最简单的方式,将字段隐藏在HTML表单中,但不在客户端显示。比如在第一张页面中输入用户名和密码登陆,服务器生成响应返回第二张页面。当第二张页面提交时可能仍然需要知道来自第一张页面中的用户名。那么就可以通过隐藏表单域来实现这一连续的过程。当第一张页面提交后,服务器端作出响应返回第二张页面,此页面中用隐藏域记录了来自登陆时的用户名。通俗说就是当服务器回发给客户端的响应中,就同时把用户名再次回发到客户端,用隐藏域隐藏起来,是不可见的。当第二张页面提交时,此隐藏域中的用户名一并随表单提交。这样服务器就仍然可以判断此用户是否与以前的用户相同。于是,再次处理完结果后继续将响应回发给客户端,且此响应中也仍然包含了用户名,在客户端中仍然用隐藏域将这一信息隐藏。这样就完成了一个连续请求的动作,但是对于用户,这是不可见的。比如一个页面我们可以这样来操作:http://blog.csdn.net/ default.aspx ? name=simonlv&password=11111 那么我们在第二个页面就能得到 参数 name 的值 simonlv       参数 password的值111 ,那么下次提交的时候,这几个值就确保了服务器端仍然能够知道是哪一个用户。但是这样有一个缺点,就是 暴露了一些敏感的信息。那么在我们的 response对象中有一个 encodeURL的方法,通过这个方法能把 http://blog.csdn.net/ default.aspx ? name=simonlv&password=11111  变成为http://blog.csdn.net/simonlv/   或者 http://blog.csdn.net/default.aspx;name=%$#%@$& password=$#@$#@类似于这样的形式,这样就实现了参数在不同页面间的传递,并且隐藏了部分敏感的信息。encodelURl 做了些什么动作,这个我会在以后的文章中详细介绍,它其实就是根据 正则表达式 来解析http://blog.csdn.net/simonlv/   类似于这样的格式,如果匹配 就转向 http://blog.csdn.net/default?name=simonlv这样的内部资源,这个内部资源估计是看不到的。这样的一种形式就是重写了URL ,实现了参数的传递。

解决方案 »

  1.   

    上面是csdn上,一个朋友的博客上的
    会话跟踪技术介绍——cookie ,url 重写, 隐藏表单域”文章楼主参考一下
      

  2.   

    1.swing中的组件数据为模型(m),组件的外观为视图,处理事件更改模型或视图为控制器部分,三者组成UI代表
    2.web的会话跟踪机制主要有cookie,URL重写,session吧,区别楼下接着吧
      

  3.   

    Swing程序最佳架构设计之二 
    MVC模式 Swing程序的组成 
    一般,Swing程序由以下几部分组成: 
    1,表现层----Swing组件组成的GUI 
    2,业务层------业务对象,及其相互之间的关系 
    3,持久化层-----把业务对象保存为文件,或者是数据库记录。 
    MVC模式在Swing程序中的应用 
    我们知道,Swing是MVC模式的典范。Swing的各个可视化组件都使用MVC模式来设计。 
    Swing组件一般由三个部分组成: 
    1,Swing的Model,这是MVC中的M—模型部分。它保存了Swing组件所需要的数据。Swing组件的UI需要根据它来展现。 
    2,Swing的UI类。这是MVC模式的View—视图部分。它根据组件的Model中的数据,执行绘制、展现Swing组件的任务。 
    3,Swing组件类。这是“门面”,它封装了Swing的UI对象和Model对象。我们一般都是通过它来操纵Swing组件,不会直接使用Swing组件内部的UI对象和Model对象。 
    Swing组件之间,还有着复杂的关系。Swing的UI类,监听Model对象的数据改变,即时进行重绘界面的工作。 
    在Swing组件上还可以注册一系列的事件监听器。它们就是MVC模式中的Controller控制器。 Swing应用程序中使用MVC模式 
    一个Swing应用程序的GUI由很多个Swing组件组成。各个Swing组件本身是由MVC模式设计的,而我们的整个Swing应用程序的表现层也应该由MVC模式设计。 
    使用MVC模式,能够更好地分离代码和数据。使整个应用的表现层部分,更加低耦合、高内聚,灵活度更高。 
    在Swing应用程序的编写过程中,我们需要使用Swing组件的2个部分: 
    1,Swing组件的Model。Swing组件的MVC模式设计,使整个Swing组件是以Model为核心的。通过更改Model,我们就能够即时改变Swing组件的UI外观。 
    2,Swing组件上注册事件监听器。这是Swing组件的控制器,也可以作为整个Swing程序的控制器之一。 
        在Swing组件的监听器中,我们可以响应用户的操作,作为整个程序功能的入口。在这里,我们可以调用业务层的代码进行业务计算。计算完毕之后,可以修改Swing程序的外观。常常是修改某个Swing组件的Model。 
        Swing组件的监听器,一般是使用Swing程序的内部类来实现的。因此,我们可以在控制器中完全使用整个Swing程序的所有资源!因此,Swing组件的控制器是足够足够强大的! 此Model非彼Model 
    读者应该对JavaEE比较熟悉吧。毕竟,今天Java的主战场是在企业级应用上,会java,而不懂javaEE,这就有点说不过去了。 
    这里,我以大家比较熟悉的JavaEE的表现层技术来说明Swing程序的MVC设计。 
    Struts中,其MVC由以下几部分组成: 
    1,View视图,就是使用Struts标签的JSP页面。 
    2,Controller控制器,就是响应用户操作的Action。 
    3,Model模型,就是用户html页面表单中提交的数据。这在Struts中被称为“form”表单。 
    HTML表单的数据,都是String型的,而我们的业务对象的属性,却未必都是String型的。因此,在Struts应用程序中,我们需要根据接收到的form对象,构造业务对象。 
    在SpringMVC中,提供了一个机制,可以帮助我们自动把表单数据转为业务对象。对于一些特殊的类型转换,还是需要我们手工提供转换。 
    Form和业务对象之间的自动转换,固然是提高了开发效率。但是,我们必须要明白,GUI组件中的数据Form和业务对象是截然不同的两种东西。2者碰巧一样,或者可以自动转换,只是特例。它们本质上还是两样截然不同的东西。 
    Form是表现层的数据容器,而业务对象则是来自于特定业务的对象。Form的数据类型,变化不多,而业务对象的数据类型,那就是千变万化了。 
    因此,Form对象类型和业务对象类型一致,这是少之又少的特例。 Swing程序中的表单数据(Form)和业务对象(Model) 
    Web应用程序中的表单数据form,是来自于Html的表单的各个项的数据,都是String类型。 
    Swing程序中的表单数据Form。是由Swing程序的各个Swing组件的Model组成的。其各个部分的数据类型非常不同。 
    如,最简单的文本框JTextField的Model,是javax.swing.text.Document类型的对象。这个对象,我们也可以直接得到或设置String的值来作为Model。实际上这个String类型的数据,是Document的属性。 
    还有,如JTree组件的Model是TreeModel对象。 
    因此,Swing程序中的表单数据Form的类型是非常多的。显然,我们的业务对象不大可能和Swing的Form数据的类型一致。 
    因此,Swing程序的表现层的数据Form和业务对象Model之间的转换,必然要由我们自己去实现。不大可能直接把Form作为业务对象扔到业务层中使用。也不可能直接在Swing的GUI中显示业务对象的数据! 楼主根据这个来修改一下回答就可以了
      

  4.   

     关于Swing的MVC还真的是挺绕的,学习一下