• 中文
    • 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.9k
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置: