Java 使用 Servlet进行URL重写
URL重写是一个在加载页面时追加或修改任何URL结构的过程。
客户端发出的请求总是一个新的请求,服务器无法识别当前的请求是由一个新的客户端还是以前的同一个客户端发出的。由于HTTP协议的这种特性,网络服务器被称为无状态。
但很多时候,我们在处理请求时应该知道谁是客户端。例如:
在任何社交网站上,从登录到注销,服务器应该知道谁是客户端,这样服务器就可以根据用户的需要管理所有的请求。
这个问题由Servlet中的Session解决。
会话: 会话是客户和服务器之间的一种状态,它包含客户和服务器之间的多个请求和响应。我们知道HTTP和Web服务器都是无状态的,维护会话的唯一方法是在每次请求和响应中在服务器和客户端之间传递一些关于会话的唯一信息(会话ID)。
以下是一些我们可以在请求和响应中提供唯一ID的方法
- Servlet中的会话接口
- Cookies管理
- URL重写
URL重写
如果你的浏览器不支持cookies,URL重写为你提供了另一种会话跟踪的选择。URL重写是一种方法,其中请求的URL被修改以包括会话ID。有几种方法可以进行URL重写。
这里我们讨论的是会话管理技术,我们将控制权从一个Servlet传递给另一个。将控制权从一个Servlet传递给另一个Servlet的语法如下
注意: 一般来说,我们为请求调度器编写web.xml文件,但在这个例子中,我们使用注解,所以他们不需要创建web.xml文件。
注释的语法是:
使用注解的URL重写进行会话跟踪的例子
程序流程
解释(按图索骥)
当你在eclipse中部署你的项目时,第一个被加载的页面是HTML表单,其表单动作是第一个servlet,所以控件会被送到servlet1。在这种情况下,我们将servlet1命名为FirstServlet,在那里打印用户名。在FirstServlet中,我们提供了url,在那里我们使用url重写将控件转移到servlet2。在我们的案例中,我们将servlet2命名为SecondServlet。
URL重写的优势
- 它不依赖于cookie,无论cookie是启用还是禁用,都可以工作。
- 不是所有的页面都需要额外的表单提交
URL重写的缺点
它只对链接起作用,只能发送文本。