开发者学堂课程【Java 面试疑难点串讲 4:Java Web 开发:包含问题】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/27/detail/592
包含问题
内容介绍:
1. 包含与跳转
2. 由 message.jsp 页面包含 show.jsp 页面,而后向 show.jsp 页面进行参数的传递
包含与跳转
对于包含与跳转两个操作,严格来讲都是可以向被包含(或被跳转)页面进行参数的传递,但是利用此类方式传递的参数,都一定要使“request.getParameter(String param)”
方法才可以正常接收参数。
由 message.jsp 页面包含 show.jsp 页面,而后向 show.jsp 页面进行参数的传递
<%@ page pageEncoding="UTF-8"%>
<jsp:include page="/show.jsp">
<jsp:param name="msg"value="mldn">
<jsp:param name="info"value="good"/>
</jsp:include>
<%@ page pageEncoding="UTF-8"%>
<h1>接收参数:<%=request.getParameter("msg")%></h1>
<h1>接收参数:${param.info}</h1>
正常的执行应该是
message.jsp:http://localhost:8888/mldn/message.jsp.
而如果此时直接使用 show.jsp 页面,那么对于接收的参数内容将变为 null ,原因是没有传递
如果在 show.jsp 页面里面有了一个明确的要求:msg 的内容绝对不可能为空,因为还需要其进行数据处理
<%@ page pageEncoding="UTF-8"%>
<%
String msg Value = request. getParameter ("msg");
%>
<h1>接收参数:<%=msgValue.toUpperCase()%></h1>
<h1>接收参数:${param.info}</h1>
如果此时在使用 message.jsp 页面时并没有传递 msg 的参数,在这样的情况下,如果想要保证程序正确使用,我们可以增加一个判断代码:
<%@ page pageEncoding="UTF-8"%>
<%
String msg Value = request.getParameter("msg");
if (msg Value==null ||"".equals(msg Value)){
msg Value="unknow";
}
<h1>接收参数:<%=msgValue.toUpperCase()%></hl>
<h1>接收参数:${param.info}</h1>
但是从另外一个角度,对于分页而言,很多参数的传递需要考虑一些代码调用的简洁模式,所以需要 request 传递属性,对于四种属性范围也是可以在参数传递中使用的
<%@page pageEncoding="UTF-8"%>
%
request.setAttribute("msg","MLDN");
pageContext.setAttribute("info","GOOD");
%>
<jsp:include page="/show.jsp">
<%@page pageEncoding="UTF-8"%>
<h1>接收参数:<%=request.getAttribute("msg")%></h1>.
<h1>接收参数:<%=pageContext.getAttribute("info")%></h1>
在被包含页面可以使用 request、session、application 传递参数