kokonotsu

博客园 首页 新随笔 联系 订阅 管理

在这两个war包的主要知识点中,存在Servlet页面之间的跳转以及参数传输这一个问题,在理解这个方法上首先需要知道servlet对象参数之间的作用域

 

 

 这是我在学习war时结合平时的知识点简单的回答了其中的一些问题,首先是比较常用的request-Request对象,它的域范围在当前请求的链接有效,采用setAttribute()方法来存入对象属性的值,而使用getAttribute()方法来取出对象属性的值。

 

会话对象session-HttpSession对象的域范围在于对于(一次请求)请求转发,或是(两次请求)重定向,它的作用域都是有效的。域对象session表示一次会话,一次会话中的数据是共享的,这时session作为域对象的存在,同样可以通过setAttribute()方法来向域中添加数据,同时也可以通过getAttribute(name)方法从域中获取数据,removeAttribute(name)从域中移除数据。但是需要注意的是两个不同session之间的数据是不可以共享的。

全局作用域application-ServletContext对象的生命周期是从创建开始,到服务器关闭,它的作用域可以被看成一个公共空间,所有的客户都可以从这个空间里读数据,取数据,删除数据,修改数据,这是一个所有人都有权限且能看到的空间。


Servlet和Servlet之间的跳转,一般通过两种方法来实现,一种是请求转发,一种是请求重定向,请求转发我们用的是ResquestDispatcher(对象).forward()方法,重定向我们使用的是HttpServletResponse(对象).sendRedirect()方法。请求转发服务器只会对servle发出一次请求,剩下的都是在servle内部进行任务的传输交接,而重定向则是服务器会对servlet进行两次或者多次的请求

 

 

一般来说,我们调用request的getRquestDispatcher对象,再调用Dispathcher的forward请求转发的方法,将这个Servlet的request和response打包发给另外一个Servlet服务进行剩下的处理,这样就完成了不同Servlet服务之间的数据交接。


servlet和jsp之间的跳转有两种方式,sendRedirect()方式和forward()方式。

sendRedirect("/a.jsp"),可以将页面跳转到任何路径,不局限于web应用中,跳转的过程中url地址变化,并无法使用request.setAttribute来传递;该种方式在页面进行跳转,灵活的多,但要指定项目名。
并且其中request, response全部是新的,它可以是相对路径,也可以是绝对路径,在跳转之后地址栏会发生变化。

request.getRequestDispatcher("/a.jsp").forward(request.response),url地址不变,只能跳转到本web应用中的页面上。可以用request.setAttibute方法.该种方式在服务器跳转,只能指定页面,不能再指细节;地址栏地址不变;且request, response全部传给页面,与sendRedirect()方法主要不同的是它只能是绝对路径,在跳转之后地址栏也并不会发生变化。

 

posted on 2022-05-14 12:37  小猫咸菜  阅读(28)  评论(0编辑  收藏  举报