编写两个JSP页面,main.jsp和yonghu.jsp,将两个JSP页面放到同一Web服务目录下。main.jsp使用include动作标记加载yonghujsp。当 yonghu.jsp被加载时获取main.jsp页面动作标记的param子标记提供的用户名参数值。
时间: 2024-09-26 22:18:48 浏览: 39
当你想要在JSP页面之间共享数据,其中一个页面(如main.jsp)包含另一个页面(如yonghu.jsp),并且你想从外部传递参数给内嵌的页面,你可以使用JSP的`<jsp:include>`标签配合`<jsp:param>`元素。下面是一个简单的示例说明如何操作:
首先,在`main.jsp`文件中,你可以设置并传递用户名参数到`yonghu.jsp`:
```jsp
<!DOCTYPE html>
<html>
<head>
<title>Main Page</title>
</head>
<body>
<!-- main.jsp -->
<jsp:include page="yonghu.jsp" id="content">
<jsp:param name="username" value="${session.user.name}" />
</jsp:include>
<!-- ... other content ... -->
</body>
</html>
```
这里,`${session.user.name}`通常用于从会话中获取用户的姓名。如果用户尚未登录或者名字不存在于会话中,你需要处理这个异常。
然后,在`yonghu.jsp`中,你可以通过`<jsp:params>`标签来访问这些参数:
```jsp
<!-- yonghu.jsp -->
<jsp:useBean id="userParams" class="java.util.Map" scope="request"/>
<jsp:doBody>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${userParams.entrySet()}" var="entry">
<p>Welcome, ${entry.value['username']}!</p> <!-- 使用entry的value属性来获取参数值 -->
</c:forEach>
</jsp:doBody>
```
当`yonghu.jsp`被包含时,它会自动获取`main.jsp`中指定的参数。这样,无论何时用户打开`main.jsp`,只要`username`参数存在,`yonghu.jsp`就会显示相应的欢迎消息。
阅读全文