首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

servlet请求中转的三种方式

2012-09-21 
servlet请求转发的三种方式servlet中的请求转发主要有三种方式:protected void service(HttpServletReques

servlet请求转发的三种方式

servlet中的请求转发主要有三种方式:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("gbk");response.setCharacterEncoding("gbk");response.setContentType("text/html;charset=gbk");String username = request.getParameter("username");String password = request.getParameter("password");PrintWriter pw = response.getWriter();pw.write("include包含。");if(username.equals("123")&&password.equals("123")){//include测试request.getRequestDispatcher("/success.html").include(request, response);}else{//在sendRedict中url前必须加上当前web程序的路径名.....response.sendRedirect(request.getContextPath()+"/fail.html");}}

?

?

运行后如果输入正确的用户名密码,则执行include方法,界面显示:include包含。 登录成功!并且地址栏地址未改变,若是输入错误登录名或者密码,界面显示:登录失败! 并且地址栏地址改变。其中要注意的是sendRedirect方法中在要跳转的页面url前必须加上当前web程序路径名,这个路径通过request.getContextPath()可以得到。

?

如果吧其中include方法改为forward方法:

?

if(username.equals("123")&&password.equals("123")){request.getRequestDispatcher("/success.html").forward(request, response);}else{//在sendRedict中url前必须加上当前web程序的路径名.....response.sendRedirect(request.getContextPath()+"/fail.html");}

?

登录时输入正确信息,则跳转的页面地址不变,显示:登录成功!不包含url中的内容。

?

总结如下:

redirect与include、forward的区别在于是不是同一个Request,redirect会有两次交互。

include与forward的区别在于输出的内容,include包含本身servlet与跳转页面内容的结果,而forward不包含本身servlet的内容。

热点排行