1. 两个动作标签
- 转发动作标签:
<jsp:forward page="目标页面路径"></jsp:forward>
- 动作包含标签:
<jsp:include page="目标页面路径"></jsp:include>
2. 动态包含和静态包含的区别
- 动态包含
<jsp:include page="目标页面路径"></jsp:include>
- 两个jsp页面会各自翻译成java文件然后编译执行。
- 运行过程中,将目标页面的视图显示到本页面中来.
- 动态包含不会引入代码,而是引入视图
- 静态包含
<%@include file="相对路径或者内部路径"%>
- 将目标页面的代码全部引入本页面
- 会和本页面的代码一起翻译成java文件,最后编译执行
- 静态包含会真实的引入代码
- 测试两种包含视图层的作用
page1.jsp:
<jsp:include page="page3.jsp"></jsp:include>
page2.jsp
<%@include file="page3.jsp" %>
page3.jsp
<h1>我是页面3</h1>
//两者的显示效果相同
- 测试业务逻辑代码
adminOnly.jsp:
<%
Object onlineUserSession1 = session.getAttribute("onlineUser");
if (onlineUserSession1 == null) {
request.setAttribute("message", "请先登录再访问其他页面!");
request.getRequestDispatcher("login.jsp").forward(request, response);
} else if (((User)onlineUserSession1).getRole() != RoleEnum.ADMIN.ordinal()) {
response.sendRedirect("403.jsp");
}
%>
这里使用动态包含,业务逻辑将不起作用
注意: 业务逻辑判断完之后需要加return,否则会继续执行后面的代码