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对象携带的数据。
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/11482088.html