天天看点

包含问题|学习笔记

开发者学堂课程【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 传递参数