页面之间的数据传递

来源:互联网 发布:excel输入数据 编辑:程序博客网 时间:2024/05/24 00:26




页面之间的数据传递:


1、A.jsp提交数据到B.jsp


A.jsp----
<form method="post" action="B.jsp">
      <input type="text" name="num"/>
      <input type="submit" value="提交" >


</form>


B.jsp----
<% 
    String u = request.getParameter("num");
    out.print(u);
%>


2、Url地址栏传参数


1)一个页面被访问的时候,获取地址栏中的参数
http://localhost:8081/myweb/A.jsp?变量1=值1&变量2=值2


例子:http://localhost:8081/myweb/A.jsp?name=tom&pwd=123
<%
  
  String n = request.getParameter("name");
  String p = request.getParameter("pwd");
  out.print(n);
  out.print(p);
  
%>
---
tom123


2)从A页面超链接或者重定向到B页面时,可以通过地址栏把A的数据传递给B
A.jsp--------
<%
    String a = "hello";
    String b = "kitty";  
%>  
<a href="B.jsp?num1=<%=a%>&num2=<%=b%>">跳转到B</a>


B.jsp---------
<%
  String n = request.getParameter("num1");
  String p = request.getParameter("num2");
  out.print(n);
  out.print(p); 
%>




另外:
response.sendRedirect("B.jsp?a=1&b=2");


3、A表单提交给B,B再(请求)转发给C


A.jsp->action="B.jsp"-->转发给C.jsp


B中执行:
request.getRequestDispatcher("C.jsp").forward(request, response);
C中执行:
request.getParameter("变量名");


相当于数据从A到B到C


4、session存放(只要浏览器不关,会话不结束就有效)
A.jsp----
 <%
    String a = "hello";
    String b = "kitty"; 
    session.setAttribute("x", a);
    session.setAttribute("y", b);
    out.print("session存好了");
  %>  
B.jsp-----
  <%
    Object o1 = session.getAttribute("x");
    Object o2 = session.getAttribute("y");
    out.print(o1.toString());
    out.print(o2.toString());
  %>


5、application存放(只要服务器不关,不主动删除有效)


A.jsp----
 <%
    String a = "hello";
    String b = "kitty"; 
    application.setAttribute("x", a);
    application.setAttribute("y", b);
    out.print("session存好了");
  %>  
B.jsp-----
  <%
    Object o1 = application.getAttribute("x");
    Object o2 = application.getAttribute("y");
    out.print(o1.toString());
    out.print(o2.toString());
  %>


6、作用域:对象在什么范围内有效


四大域对象(当成4个容器,每个容器存内容用setAttribute,取内容getAttribute):
application:作用范围是整个web应用
session:作用范围是一次会话(浏览器)
request:作用范围是一次请求(整个请求可以用请求转发的方式在页面之间传递)
pageContext:作用范围是一个页面




例1:
     request.setAttribute("a", "呵呵");
     Object o = request.getAttribute("a");
     out.print(o.toString());


例2:
     pageContext.setAttribute("a", "呵呵");
     Object o = pageContext.getAttribute("a");
     out.print(o.toString());


由于http协议是无状态(下一个请求永远记不住上一个请求),request对象必须用请求转发的方式才能送到下一页。


例子:
1、创建Servlet:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
  String[]  args ={"tom","jerry","mark"};
  //把数组送到A页面去,先把数据存入request域对象
  request.setAttribute("names", args);
  //请求转发给A
  request.getRequestDispatcher("A.jsp").forward(request, response);  
}
2、A.jsp获取request域中的数据
 <%
     
     Object o = request.getAttribute("names");
     String[] ns = (String[])o;
     for(int i=0;i<ns.length;i++)
     {
       out.print(ns[i]);
     }
  %>  





































原创粉丝点击