URL传值

4.6 URL传值

HTTP是无状态的协议。Web页面本身无法向下一个页面传递信息,如果需要让下一个页面得知该页面中的值,除非通过服务器。Web页面之间传递数据,是Web程序的重要功能,其流程如图4-14所示

 
图4-14 页面之间传递变量的方法

其过程如下:

1. 页面1中输入数据"guokehua",提交给服务器端的P2;

2. P2获取数据,响应给客户端。

问题的关键在于页面1中的数据如何提交,页面2中的数据如何获得。

举一个简单的案例:页面1中定义了一个数值变量,并显示其平方;要求点击链接,在页面2中显示其立方。很明显,页面2必须知道页面1中定义的那个变量。这里就可以用URL传值。

URL,通俗地说,就是网址。如:http://localhost:8080/Prj04/page.jsp,表示访问项目Prj04中的page.jsp,但是还可以在该页面后面给出一些参数,格式是,在原url后面添加:

 
 
  1. ?参数名1=参数值1&参数名2=参数值2&…… 

如:

 
 
  1. http://localhost:8080/Prj04/page.jsp?m=3&n=5 

表示访问http://localhost:8080/Prj04/page.jsp,并给其传送参数m,值为3,参数n,值为5。

http://localhost:8080/Prj04/page.jsp中获得m和n的方法是:

 
 
  1. <%  
  2.     //获得参数m,赋值给str  
  3.     String str = request.getParameter("m");  
  4. %> 

如果m没有传过来或者参数名写错,str为null。

提示

和out一样,request也是JSP九大对象之一,其作用是获取请求的信息。关于其详细内容,在后面的章节中将有讲述。

如上例子,可以写成:

urlP1.jsp

 
 
  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 
  2. <%  
  3.     //定义一个变量:  
  4.     String str = "12";  
  5.     int number = Integer.parseInt(str);  
  6.  %> 
  7. 该数字的平方为:<%=number*number %><HR> 
  8. <a href="urlP2.jsp?number=<%=number %>">到达p2</a> 

运行,效果如图4-15所示:

 
图4-15 运行效果
页面底部显示了一个链接:到达p2,其链接内容为:
 
 
  1. http://localhost:8080/Prj04/urlP2.jsp?number=12 

相当于提交到服务器的urlP2.jsp,并给其一个参数number,值为12。urlP2代码为:

urlP2.jsp

 
 
  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 
  2. <%  
  3.     //获得number  
  4.     String str = request.getParameter("number");  
  5.     int number = Integer.parseInt(str);  
  6.  %> 
  7. 该数字的立方为:<%=number*number*number %><HR> 

点击urlP1.jsp中的链接,到达urlP2.jsp,效果如图4-16所示:

 
图4-16 显示效果

这说明,可以顺利实现值的传递。

但是该方法有如下问题:

1. 传输的数据只能是字符串,对数据类型具有一定限制。

2. 传输数据的值会在浏览器地址栏里面被看到。如上例子,当点击了链接到达urlP2.jsp,浏览器地址栏上的地址变为:

 

number的值可以被人看到。从保密的角度讲,这是不安全的。特别是秘密性要求很严格的数据(如密码),不应该用URL方法来传值。

但是,URL方法并不是一无是处,由于其简单性和平台支持的多样性(没有浏览器不支持URL),很多程序还是用URL传值比较方便。如下界面:

 
可以通过链接来删除学生。用URL方法显得简洁方便。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值