[size=large][color=red]一、servlet的三种转发方式[/color]
[/size]
[size=medium][color=blue]1、req.getRequestDispatcher(url).forward(req,resp);
将req和resp转发给url表示的对象 由于是转发地址栏中的地址不变
2、req.getRequestDispatcher(url).include(req,resp);
将req和resp转发给url表示的对象,同时发送PrintWriter在此处写入的信息(但是这里注意写入信息要在这一句之前写入,否则resp已经被转发就不能在写入了) 同样由于是转发地址栏中的地址不便
3、resp.sendRedirect(url);
请求客户端重新定向与url再次发送req 由于是重新定位发送,地址栏中的地址改变
url可以是html 可以是jsp 也可以是servlet[/color][/size]
[size=large][color=red]二、servlet对象中数据的范围[/color][/size]
[size=medium][color=blue]这三个对象是ServletRequest Session ServletContext
他们都一致用setAttribute(String key,Object value)
getAttribute(String key)
removeAttribute(String key)
来存放和取出数据。 不同之处在与他们的作用范围不同
1、ServletRequest
作用范围最小的一个,消耗资源少,用的相对比较多。
通过不同servlet间转发传递ServRequest来传递数据。
2、Session
通过ServletRequest的getSession方法得到。
从session第一次创建直到Session因超时或客户端关闭之前,数据会一直存在。
Session 常用做存入某个用户相关的数据对象。
3、ServletContext
通过Servlet的getServletConext方法得到。
作用范围最大的一个。只要服务器中建立了它,他就一直存在。直到服务器关闭。[/color][/size]
[/size]
[size=medium][color=blue]1、req.getRequestDispatcher(url).forward(req,resp);
将req和resp转发给url表示的对象 由于是转发地址栏中的地址不变
2、req.getRequestDispatcher(url).include(req,resp);
将req和resp转发给url表示的对象,同时发送PrintWriter在此处写入的信息(但是这里注意写入信息要在这一句之前写入,否则resp已经被转发就不能在写入了) 同样由于是转发地址栏中的地址不便
3、resp.sendRedirect(url);
请求客户端重新定向与url再次发送req 由于是重新定位发送,地址栏中的地址改变
url可以是html 可以是jsp 也可以是servlet[/color][/size]
[size=large][color=red]二、servlet对象中数据的范围[/color][/size]
[size=medium][color=blue]这三个对象是ServletRequest Session ServletContext
他们都一致用setAttribute(String key,Object value)
getAttribute(String key)
removeAttribute(String key)
来存放和取出数据。 不同之处在与他们的作用范围不同
1、ServletRequest
作用范围最小的一个,消耗资源少,用的相对比较多。
通过不同servlet间转发传递ServRequest来传递数据。
2、Session
通过ServletRequest的getSession方法得到。
从session第一次创建直到Session因超时或客户端关闭之前,数据会一直存在。
Session 常用做存入某个用户相关的数据对象。
3、ServletContext
通过Servlet的getServletConext方法得到。
作用范围最大的一个。只要服务器中建立了它,他就一直存在。直到服务器关闭。[/color][/size]