• 中文
    • English
  • 注册
  • 查看作者
    • 3:使用Servlet完成添加和修改

      一.  前言

      之前我们的jsp文件中包含大量Java代码,通过JSTL和Servlet,我们就可以将之前的项目jsp文件中的Java代码全部替换掉。下面我们通过几个例子来简单了解一下如何使用Servlet和JSTL来完成之间的JSP中Java代码的相关操作,中间还会用到一些EL表达式,我们的目标

      二.  添加和修改

      1.  获取Web根目录

      在之前的操作中,我们都是通过表达式可以获取Web的根目录

      <%=request.getContextPath()%>

      在EL表达式中,我们需要首先使用pageContext获取request对象后才能获取Web根目录

      ${pageContext.request.contextPath}

      2.   更改标题

      假如我们修改数据和添加数据采用的是同一个页面,如果URL中传入了ID这个参数,则该页面标题显示修改数据,如果URL中没有传入ID这个参数,则该页面的标题显示添加数据,在之前我们是通过表达式操作的:

      <title><%=request.getParameter("id") == null? "添加":"修改"%>数据</title>

      上面的操作也可以使用JSTL来完成:

      <c:if test="${param.id == null}">
          <title>添加单车</title>
      </c:if>
      
      <c:if test="${param.id != null}">
          <title>修改单车</title>
      </c:if>

      3.  获取数据

      在之前的JSP页面中,比如我们想查询数据中获取一辆自行车的数据,都是在小脚本中操作的:

      <%
      
          BikeDao bikeDao = new BikeDaoImpl();
          boolean isAdd = request.getParameter("id") == null;
          int id = -1;
          if (!isAdd) {
              id = Integer.parseInt(request.getParameter("id"));
          }
          Bike bike = bikeDao.queryById(id);
      %>

      有了Servlet,我们便可以将上面的小脚本用Servlet来完成。

      新建一个FromServlet类,重写doGet方法,在该方法里获取请求参数id,并根据该id查找指定单车,然后将该单车添加到request,并转发到表单页面即可。

      package io.zhangjia.servlet;
      
      import dao.BikeDao;
      import dao.impl.BikeDaoImpl;
      import entity.Bike;
      
      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("/form")
      public class FromServlet extends HttpServlet {
          private BikeDao bikeDao = new BikeDaoImpl();
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              String id = req.getParameter("id");
              if(id != null) {
                  Bike bike = bikeDao.queryById(Integer.parseInt(id));
                  req.setAttribute("bike",bike);
              }
              //转发
              req.getRequestDispatcher("/admin/updateAndAdd.jsp").forward(req,resp);
          }
      }

      转发后,我们就可以请求Servlet(也就是访问/form)来显示数据,而不是和以前那样直接访问updateAndAdd.jsp

      将
      <a href="${pageContext.request.contextPath}/admin/updateAndAdd.jsp?id=${bike.id}" class="btn btn-success"> 修改</a>
      修改为:
      <a href="${pageContext.request.contextPath}/form?id=${bike.id}" class="btn btn-success"> 修改</a>

      山东省·济宁市
    • 0
    • 0
    • 0
    • 1.5k
    • 请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: