目录

  • 1 课程概述及开发工具
    • 1.1 第1次课 课程概述
    • 1.2 第1次课  开发工具
  • 2 HTML基础(4+2)
    • 2.1 第2次课  认识HTML
    • 2.2 第3次课  表格制作
    • 2.3 第4次课  表单:文本框和按钮制作
    • 2.4 第4次课  表单:单选框制作
    • 2.5 第4次课  表单:复选框制作
    • 2.6 第4次课  表单:下拉框制作
    • 2.7 第4次课  表单综合练习
    • 2.8 综合项目:大学生消费水平调查问卷网页设计
    • 2.9 第4次课 CSS基础
      • 2.9.1 第4次课  认识CSS-嵌入式CSS语句
      • 2.9.2 第4次课  认识CSS-文档头内CSS语句
      • 2.9.3 第4次课  认识CSS-CSS外部文件应用
      • 2.9.4 附:CSS参考手册
  • 3 JSP开发基础
    • 3.1 第1次课 认识JSP
    • 3.2 第1次课  EL语言
    • 3.3 第1次课 JSP页面元素
    • 3.4 第2次课  JSP页面元素-代码片段
    • 3.5 第3次课  JSP页面元素-标签行为
      • 3.5.1 第3次课  标签行为jsp:useBean
    • 3.6 第4次课 标签行为 jsp:forward
      • 3.6.1 第4次课 标签行为jsp:param
    • 3.7 第5次课 再一次认识JSP
    • 3.8 附:JavaEE API(开发者参考手册)
    • 3.9 jsp基础测试题
  • 4 JSP内置对象
    • 4.1 第1次 JSP内置对象概述
    • 4.2 第1次 request对象概述
    • 4.3 第2次 request对象获取表单中的请求参数
    • 4.4 第3次 request对象获取URL中的请求参数
    • 4.5 第4次 小项目:列表导航与详情页面设计
    • 4.6 第5次 request对象获取特殊的请求参数-“一对多键-值”对(选)
    • 4.7 第5次 小项目:调查问卷(选)
    • 4.8 第6次 session对象
    • 4.9 第7次 存储“键-值”对到session对象
    • 4.10 第8次 存储“键-值(对象)”对到session对象
    • 4.11 第9次 小项目:果卉团-选购功能设计与实现
    • 4.12 第10次 application对象
    • 4.13 第10次 小项目:运用application实现留言板
  • 5 Servlet开发基础
    • 5.1 第1次 Servlet概述
    • 5.2 第1次 Servlet的生命周期
    • 5.3 第2次 Servlet生成HTML页面
    • 5.4 第3次 Servlet处理表单数据
    • 5.5 第4次 Servlet页面重定向
    • 5.6 第4次 小项目:Web计算器
    • 5.7 第5次 Servlet请求转发
    • 5.8 第6次 Servlet中访问HttpSession对象
    • 5.9 第7次 小项目:简单Web教师工资计算
  • 6 JDBC数据库访问技术
    • 6.1 第1次 JDBC概述
    • 6.2 第2次 JDBC-Statement、ResultSet
    • 6.3 第3次 JDBC实现Web页面简单查询
    • 6.4 第4次 JDBC完成表单查询应用
    • 6.5 第4次 小项目:“寝室大事记”Web查询系统
    • 6.6 第5次 JDBC-预准备语句PreparedStatement
    • 6.7 第6次 JDBC完成增删改功能应用
    • 6.8 第7次 小项目:基于层次架构模式的Web教师工资管理系统
    • 6.9 JDBC API
第5次 Servlet请求转发

请求转发概述

客户端对一个”Servlet“提交请求,Servlet计算处理后,可利用RequestDispatcher对象,可以把请求转发给其他的Servlet或JSP页面。通常这出现在Servlet进行了验证处理得出结果,需要到另外一个结果页面显示的情形。

页面重定向和请求转发的区别

页面重定向向客户浏览器发送页面重定向指令,浏览器接收后将向Web服务器重新发送页面请求,所以执行完后浏览器的url显示的是跳转后的页面。跳转页面可以是一个任意的URL。

请求转发是直接在服务器中进行处理,将处理完后的信息发送给浏览器进行显示,所以完成后在URL中显示的是跳转前的页面

ServletContext

Servlet的运行环境称为Servlet上下文,每一个Web应用程序都有一个与之相关的Servlet上下文。JAVA Servlet API提供了一个ServletContext接口用来表示上下文。

HttpServlet类继承了getServletContext方法,该方法的原型为:

public ServletContext getServletContext()

该方法能够返回当前Servlet对象所属的ServletContext对象的引用。

    


RequestDispatcher

提供的forward方法可以重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变。

截取应用代码:

ServletContext context=getServletContext();

RequestDispatcher rd=context.

 getRequestDispatcher ("/Payroll/ShowCalResult.jsp?employeeName="

 +name+"&wage="+wage);

rd.forward(request,response);


请求转发完整示例

jsp页面:

    <form action="OutputWelcome">

       对我说Hello:<input name="word" type="text"><br>

       <input    type="submit"  value="确定">

       <input   type="reset" value="取消">

    </form>

Servlet接收到前一页面的参数后,将“携带参数”的request对象一同转发给另一目标页面(JSP页面)。

OutputWelcome.JAVA源码:

public class OutputWelcome extends HttpServlet {

  protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

ServletContext context = getServletContext();//找出总管

RequestDispatcher rd = context.getRequestDispatcher("/welcome.jsp");//由总管调出服务员,设置服务员工作,将给你的菜改变成另一道

rd.forward(request,response);//服务员给菜:你要的菜虽然变了,但是你要的料还是给你,变化的菜也给你。

 }

}

此例中的目标页面是welcome.jsp.

修改后的welcome.jsp:

<body>

 <%>

 String word= request.getParameter("word");

 %>

 <%=word%>

</body>

注意:地址栏中地址未发生变化。

rd.forward(request,response);该语句传递了request对象,所以name值被显示在最终JSP页面中。

视频

通过案例演示对比,可快速掌握页面重定向和请求转发的区别。

测试题