标签:
练习续:
答案:A、B、D、E、F、G
其中C,没有request.setParameter()方法。
请求转发与重定向
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("test", "hello") // 请求转发 request.getRequestDispatcher("/test4.jsp").forward(request, response); // 重定向 // response.sendRedirect("test4.jsp"); } <%--test4.jsp--%> <body> <%= request.getAttribute("test") %> </body>
请求转发的方式,从表象上来看,在浏览器中访问地址栏localhost:8080/test/HelloServlet,页面出现hello,地址栏信息保持不变;而重定向的方式地址栏访问localhost:8080/test/HelloServlet后,页面跳转到:localhost:8080/test/test4.jsp,页面信息为null。从本质上,底层的分析,请求转发的方式从Servlet到jsp始终是同一个request对象,而重定向的方式是,一旦调用sendRedirect(注意到是response对象调用),首先响应到达客户端,告诉客户端必须再去请求页面test.jsp,于是客户端重新发送一个请求,此时先前的request对象已经被销魂了,被一个新的request对象所取代,因此结果为null。
JavaBean的作用范围实例
package com.test.servlet; public class Student { private long classNo; private String name; private int age; private boolean sexy; public Student() // 构造函数 { classNo = 970431; name = "ZZZl"; age = 34; sexy = true; } /** * @return 返回 age。 */ public int getAge() { return age; } /** * @param age * 要设置的 age。 */ public void setAge(int age) { this.age = age; } /** * @return 返回 classNo。 */ public long getClassNo() { return classNo; } /** * @param classNo * 要设置的 classNo。 */ public void setClassNo(long classNo) { this.classNo = classNo; } /** * @return 返回 name。 */ public String getName() { return name; } /** * @param name * 要设置的 name。 */ public void setName(String name) { this.name = name; } /** * @return 返回 sexy。 */ public boolean isSexy() // 对于返回值为boolean类型的get方法也可以用is代替 { return sexy; } /** * @param sexy * 要设置的 sexy。 */ public void setSexy(boolean sexy) { this.sexy = sexy; } }
<%@ page language="java" pageEncoding="gb2312" %> <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <body> <%-- 引用自己编写的javaBean生成的bean组件 --%> <jsp:useBean id="student" scope="application" class="com.test.servlet.Student"/> <%=student.getName()%><br> <% student.setName("cong"); %> <%-- 用getProperty动作来返回bean组件的属性值 --%> <jsp:getProperty name="student" property="classNo" /> <br> <jsp:getProperty name="student" property="name" /> <br> <jsp:getProperty name="student" property="age" /> <br> <jsp:getProperty name="student" property="sexy" /> <br> <%-- 取属性值 --%> <%=student.getClassNo() %> <br> <%=student.getName() %> <br> <%=student.getAge() %> <br> <%=student.isSexy() %> <br> <%--引用Java类库中生成的bean组件 --%> <jsp:useBean id="date" scope="page" class="java.util.Date" /> <%= date.toLocaleString()%><br> </body> </html>
访问javabean.jsp页面,可以看到随着刷新jsp页面,其上的时间也不断刷新,但是如果将date的scope改为application,只要服务器不停止,这个时间永远不会变,而将其改为session,只要当前的会话没有结束,时间就不会变,也就是刷新页面时间没有变化,但是重新打开一个页面就有变化了。而request是随着请求来的,随着刷新(客户端的请求操作),时间在变化。
标签:
原文地址:http://www.cnblogs.com/Code-Rush/p/4622499.html