javaWeb如何转发数据,jsp页面如何接收?

1.情景展示

  现在有一个需求就是:请求达到服务器后,服务器需要将请求的数据传给另一个页面,如何实现?   

2.目标分析

  通过服务器跳转到页面上,有两种实现方式:一种是转发,一种是重定向。

  我们知道转发可以携带数据,而重定向无法携带数据,所以,要想携带数据跳转页面,必须通过转发实现。 

3.解决方案

  通过request对象的setAttribute()传值给页面;页面通过getAttribute()取值。

  请求地址

  http://localhost:8070/demo2/dispatcher.do?userName=%25E7%2594%25A8%25E6%2588%25B7%25E5%2590%258D&password=pwd

// 告诉浏览器以utf-8的字符集来解析success.jsp
response.setCharacterEncoding("utf-8");
// 用户名
String userName = request.getParameter("userName");
// tomcat服务器,会自动解码一次,这里需要再解码一次(userName总共编码了两次)
userName = URLDecoder.decode(userName,"utf-8");
// 密码
String password = request.getParameter("password"); 
// 转发页面时需要携带的数据
request.setAttribute("userName", userName);
request.setAttribute("password", password);
// 跳转到success.jsp(浏览器的地址栏不会发生变化)
request.getRequestDispatcher("/success.jsp").forward(request, response);

  页面取值的两种方式:

  1.通过EL表达式获取;

${属性名}

  2.通过小脚本获取。

<%=request.getAttribute("属性名")%>

4.效果展示

  说明:

  页面通过request对象取值的方法,只能在jsp中实现,因为:jsp的本质是servlet,而servlet属于java语言,所以jsp可以直接使用request对象,进而能够取值。

  相应的,如果你转发的是一个html文件,那么不好意思,你将无法获取到request对象携带的数据。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

原文地址:https://www.cnblogs.com/Marydon20170307/p/11482088.html