JSP+Servlet培训班作业管理系统[3]–点击菜单加载功能页面

点此查看本系列文章目录、源代码、配套视频教程

1. 背景

上一篇我们已经实现了后台管理页面基本的布局。本篇我们要实现一个重要功能,就是点击左侧菜单后,跳转对应页面的功能。

例如左侧点击“课程管理”菜单,右侧就要显示课程管理对应的jsp页面。

2. 创建演示页面

为了便于演示,我们创建两个演示页面page1.jsp和page2.jsp。代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 使用c:标签需要添加本行代码 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>这里是page1.jsp
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 使用c:标签需要添加本行代码 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>这里是page2.jsp
</body>
</html>

3. 构造超级链接

改造index.jsp左侧菜单,将固定文字替换为超级标签导航。

		<div id="left">
			<ul>
				<li><a href="page1.jsp">页面1</a></li>
				<li><a href="page2.jsp">页面2</a></li>
			</ul>
		</div>

此时点击左侧菜单,会直接跳转到page1.jsp,并未实现我们想要的page1.jsp内容显示到右侧内容区域的效果。

此路不通!

4. 实现jsp页面的动态包含

jsp提供了<jsp:include>标签用于动态的将jsp页面内容嵌入当前页面。

我们的思路修改下,首先超级链接a标签后,跳转servlet,servlet获取a标签指定的页面信息,然后再跳回index.jsp页面。

此时可以将页面信息通过<jsp:include>将指定页面放入右侧内容区域,这样就实现了我们想要的效果。

4.1 修改左侧菜单部分的超级链接。

        <div id="left">
			<ul>
				<li><a href="/HomeworkSystem/RouteServlet?childPage=page1.jsp">页面1</a></li>
				<li><a href="/HomeworkSystem/RouteServlet?childPage=page2.jsp">页面2</a></li>
			</ul>
		</div>

4.2 创建用于导航的servlet

创建RouteServlet,功能很简单,就是接受超级链接发起的请求,还是返回index.jsp页面,但是告知index.jsp页面右侧内容区域要加载的页面信息,即子页面childPage名称。


@WebServlet("/RouteServlet")
public class RouteServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置输入输出格式、编码
		response.setContentType("text/html");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		// 获取用户在网页输入的用户名和密码
		String childPage = request.getParameter("childPage");
		request.setAttribute("childPage", childPage);
		request.getRequestDispatcher("/index.jsp").forward(request, response);// 跳转到index.jsp
	}
}

4.3 右侧区域动态包含

右侧内容区域就根据childPage,动态加载指定页面即可。注意当childPage不存在时(尚未点击菜单),直接显示固定文字即可。

		<div id="right">
			<c:if test="${empty childPage}">
	  			欢迎来到猫哥培训班管理系统
	  		</c:if>
			<c:if test="${not empty childPage}">
				<jsp:include page="${childPage}" flush="true"></jsp:include>
			</c:if>
		</div>

5. 测试验证

点击相应菜单1、菜单2,右侧即可显示page1.jsp、page2.jsp的内容,大功告成!非常完美啊。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
采用Eclipse 编写的关于省市县三级菜单采用JSP +servlet+MYSQL ,数据库表的数据文件在src文件夹 mysql> show tables; +----------------+ | Tables_in_area | +----------------+ | area | | cities | | provinces | +----------------+ 3 rows in set (0.00 sec) mysql> desc provinces; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | pid | char(6) | NO | | NULL | | | province | varchar(100) | NO | | | | +----------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> desc cities; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | cid | char(6) | NO | | NULL | | | city | varchar(40) | NO | | NULL | | | pid | char(6) | NO | | NULL | | +-------+-------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) mysql> desc area; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | aid | char(6) | NO | | NULL | | | area | varchar(40) | NO | | NULL | | | cid | char(6) | NO | | NULL | | +-------+-------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值