Severlet跳转JSP,切换div

该博客介绍了如何使用Java Servlet和jQuery实现页面间的跳转并定位到指定内容。通过Servlet处理请求,将跳转目标传递到JSP页面,再利用jQuery动态切换div内容,展示了从'index.jsp'到'jump.jsp'的平滑过渡,并根据用户选择高亮显示相应导航项和内容。
摘要由CSDN通过智能技术生成

一、前言:(Severlet)实现一页面跳转至下一页面指定位置(div),以及(jq)实现div的切换功能,非常简单,且一目了然。如图所示:

在这里插入图片描述

二、代码实现

  1. index.jsp部分

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%--允许使用el表达式--%>
    <%@ page isELIgnored="false" %>
    <%--提前导入jstl依赖包,然后给定标签名c--%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
    <title>Index</title>
    <style>
       body{
           background-color: rgb(72, 121, 111);
       }
       .index{
           width: 180px;
           margin-top: 4.5%;
           margin-left: 10%;
           text-align: center;
           background-color: rgb(241, 241, 241);
           box-shadow: 0.6px 0.6px 4px 0.8px rgba(199, 199, 199, 0.349);
           border-radius: 3px;
       }
       .index>a{
           display: block;
           text-decoration: none;
           font-size: 1.2vmax;
           font-family: 楷体;
           font-weight: 500;
           color: rgb(31, 31, 31);
           letter-spacing: 0.125vmax;
           width: 100%;
           padding: 12px 0;
           transition: all 0.1s linear;
       }
    
       .index>a:hover{
           background-color: rgba(199, 199, 199, 0.45);
       }
    </style>
    </head>
    <body>
    <div>
    <div class="index">
    <%--        利用set,写入下列数组--%>
       <c:set value="西游记,水浒传,红楼梦,三国演义" var="arrStr"/>
    <%--        利用foreach循环赋值--%>
       <c:forEach items="${arrStr}" var="str">
           <a href="jump.do?it=${str}">${str}</a>
       </c:forEach>
    </div>
    </div>
    </body>
    </html>
    
    
  2. JumpServlet.java的servlet

    package com.hjc.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/jump.do")
    
    public class JumpServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取参数名为it的值
            String it = request.getParameter("it");
            //此顺序与两个关联页面的顺序相对应,都是一一对应
            String []arrStr = {"西游记","水浒传","红楼梦","三国演义"};
            for (int i = 0;i < arrStr.length;i++){
                if (arrStr[i].equals(it)){
                    //将所对应的下标赋给it
                    it = String.valueOf(i);
                    break;
                }
            }
            //将it存入四大作用域之一的request中,请求一次(一次性),占用内存空间少,其它几大作用域各有其利弊
            request.setAttribute("it",it);
            //
            request.getRequestDispatcher("jump.jsp").forward(request,response);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //转接到doGet方法
            doGet(req, resp);
        }
    }
    
    
  3. jump.jsp部分

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%--配置使得可以使用el表达式--%>
    <%@ page isELIgnored="false" %>
    <html>
    <head>
        <link rel="stylesheet" href="css/jump.css" type="text/css">
        <%--    首先导入jQuery包--%>
        <script src="https://s3.pstatp.com/cdn/expire-1-M/jquery/3.2.1/jquery.min.js"></script>
        <script src="js/jump.js"></script>
        <title>Jump</title>
        <script>
            $(document).ready(function(){
                var navStr = $(".nav_bar").children('span');
                var divShow = $(".content").children('.zs');
                if (${it!=null}){
                    $(navStr[parseInt(${it})]).addClass('nav_barFirst').siblings('span').removeClass('nav_barFirst');
                    // 索引对应div块显示
                    $(divShow[parseInt(${it})]).show();
                    //其他隐藏
                    $(divShow[parseInt(${it})]).siblings('.zs').hide();
                }
            });
        </script>
    </head>
    <body>
    <div class="box">
        <div class="nav_bar">
            <span>西游记</span>
            <span>水浒传</span>
            <span>红楼梦</span>
            <span>三国演义</span>
        </div>
        <div class="content">
            <div class="zs" style="background-color: antiquewhite">
                <span>
                    西游记<br>
                    ————作者:吴承恩
                </span>
            </div>
            <div class="zs" style="background-color: #6cba86">
                <span>
                    水浒传<br>
                    ————作者:施耐庵
                </span>
            </div>
            <div class="zs" style="background-color: #4f9590">
                <span>
                    红楼梦<br>
                    ————作者:曹雪芹
                </span>
            </div>
            <div class="zs" style="background-color: #7e74a1">
                <span>
                    三国演义<br>
                    ————作者:罗贯中
                </span>
            </div>
        </div>
    </div>
    </body>
    </html>
    
    
  4. jump.js部分

    $(function(){
        //获取点击事件的对象
        $(".nav_bar span").click(function(){
            //获取显示或隐藏的对象
            var divShow = $(".content").children('.zs');
            //判断当前对象是否被选中
            if(!$(this).hasClass('nav_barFirst')){
                //获取当前索引
                var index = $(this).index();
                //选中一个其他被移除样式,sibling兄弟
                $(this).addClass('nav_barFirst').siblings('span').removeClass('nav_barFirst');
                //索引对应div块显示
                $(divShow[index]).show();
                //其他隐藏
                $(divShow[index]).siblings('.zs').hide();
            }
        });
    });
    
  5. jump.css部分

    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    
    body{
        background-color: rgb(249, 248, 248);
    }
    
    .box{
        width: 78%;
        margin: 4.5% auto;
    }
    
    .nav_bar{
        position: absolute;
        width: 13%;
        margin-right: 5px;
        text-align: center;
        padding: 10px 0;
        font-size: 1.2vmax;
        font-family: 楷体;
        font-weight: 500;
        letter-spacing: 0.125vmax;
        color: rgb(31, 31, 31);
        background-color: rgb(253, 253, 253);
        box-shadow: 0.6px 0.6px 4px 0.8px rgba(199, 199, 199, 0.349);
        border-radius: 3px;
    }
    
    .nav_bar>span{
        display: block;
        width: 100%;
        padding: 12px 0;
        cursor: pointer;
        transition: all 0.1s linear;
    }
    
    .nav_bar span:hover,.nav_barFirst{
        background-color: rgba(199, 199, 199, 0.45);
    }
    
    .content{
        display: block;
        position: relative;
        float: right;
        width: 83%;
        height: 567px;
    }
    
    .content>.zs{
        display: none;
        width: 100%;
        height: 100%;
        font-family: 楷体;
        font-weight: 400;
        text-align: center;
        font-size: 25px;
        padding-top: 25px;
    }
    
    

三、结语:感谢您的到来!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叁Mar.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值