一进入jsp就拿到数据

 

      在我们创建一个jsp页面后,如果我们需要一进jsp就跳到servlet层从数据库拿到数据并返回jsp通过EL表达式拿到数据该怎么办呢。

         给大家看看我一步一步坑过来的方法:

         通过C标签拿到当前页面的路径:

         <c:set value="${pageContext.request.contextPath }" scope="page" var="ctx"></c:set>

         创建的一个:login.jsp页面:

         <div class="row">

                <label for="UserName">操作员代码:</label>

                <div class="col-3">

                    <select id="OperationID" name="OperationID" class="form-control     select2 ">

                          <c:forEach items="${OperationMans}" var="Operationman">

                               <option value="${Operationman.operationId}">${Operationman.operationNumber}</option>

                          </c:forEach>

                    </select>

                </div>

                <div class="col-2" style="color:#000000;">备注:</div>

                <div class="col-3"><input type="text" class="form-control" name="Remark" id="Remark" value="${OperationMans[0].remark}" style="background:#c2c2c2;font-size:14px" readonly /></div>

            </div>

         创建的servlet层:

         @Override

         protected void doGet(HttpServletRequest req, HttpServletResponse resp)

                          throws ServletException, IOException {

                  doPost(req, resp);

         }

         @Override

         protected void doPost(HttpServletRequest req, HttpServletResponse resp)

                          throws ServletException, IOException {

                  req.setCharacterEncoding("UTF-8");

                  resp.setCharacterEncoding("UTF-8");//设置编码格式

                  List<SOperationMan> OperationMan=isOperationMan.findAll();//查询到的数据

                  req.setAttribute("OperationMans", OperationMan);//存放

                  req.getRequestDispatcher("/jsp/login.jsp").forward(req, resp);//共享数据

         }

         在这里可以看到,我们已经查询到了需要的数据,并且共享数据到了login.jsp,然后我们需要一进入login.jsp页面时就跳到这个servlet层拿到数据并返回jsp页面;

         首先,如果你在jsp页面写onload事件(加载事件)一来就进行跳转到servlet,比如:

         <body id="body" οnlοad=load()>

   

     function load() {

            $.get(${ctx}/servlet/LoginServlet);

     }

    这样的话虽然是会跳到servlet层,但他会进行一个无限循环的跳转,因为它一加载就跳到servlet,然后servlet那边又跳回jsp,一直循环,所以这样还不行,那应该怎么办呢?

    其实很简单,给那个需要用EL表达式获取到的值进行一个判断,如果他为空时,就跳转到servlet,如果不为空,那就不进行跳转,代码如下:

    $(function () {

            var OperationID = $("#OperationID").val();//需要用EL表达式获取到的值

            if (OperationID == null) {

                window.location.href = "${ctx}/servlet/LoginServlet";

            }

    });

猜你喜欢

转载自blog.csdn.net/weixin_44543131/article/details/107882083