1、 如何进行转发? 1.绑定数据到request对象 语法:request.setAttribute(参数1,参数2); 参数1:绑定名 参数2:绑定值 2.获得转发器 requestDispatcher rd=request.getRequestDispatcher(String uri); uri:表示未完成的工作,交给哪个组件去完成;

2、 3.转发 rd.forward(request,response); 备注:一般开发过程中将二三步合并一步 requestDispatcher rd=request.getRequestDispatcher(String uri).forward(request,response); 转发的原理: 只有一次请求一次响应,相关的操作都是在容器的内部解决的

3、 1.转发之后,地址栏地址不会发生变化。原因是转发的过程是发生在服务器内部的,浏览器并不知道。 2.转发的目的地必须是同一个应用内部的某个地址 3.转发所涉及的各个web组件会共享同一个request对象和response对象 注意:在forward之后的其它语句还会执行吗? 答:—定会执行,只要不报异常。

4、转发和重定向的区别: a,转发地址栏地址不会发生改变,而重定向会发生改变 b,转发的路径必须是同一个web应用程序中的地址,而重定向可以是任意地址、 c,转发web应用程序中共享同一个request和response对象,而重定向则不共享 d,转发只有一次请求,而重定向有两次请求

5、if(action.equals("findBy")){ int id=Integer.parseInt(request.getParameter("id")); EmpDao dao=new EmpDaoImpl(); Emp emp=dao.findById(id); //绑定数据到request对象,转发 request.setAttribute("emp", emp); //获得转发器 request.getRequestDispatcher("updateEmp.jsp").forward(request, response); }

6、if(action.equals("listEmp")){ EmpDao dao=new EmpDaoImpl(); List<Emp>emps=dao.listEmp(); //用转发将显示结果由emplist.jsp来显示参数1:绑定名 参数2:绑定值 request.setAttribute("emps",emps); request.getRequestDispatcher("empList.jsp").forward(request, response); }
