javaEE--request.getRequestDispatcher--URL后带参数实现自定义跳转

javaEE web项目,需求如下:QueryServlet(数据库查询操作),每一次添加(addUser.jsp),删除(delUser.jsp)和修改(updateUser.jsp)的操作后都需要调用QueryServlet,如何能够在实现QueryServlet里的查询功能后,实现不同页面的跳转–如:

  • 添加后跳回添加页面–addUser.jsp–QueryServlet–addUser.jsp
  • 删除后跳回删除界面–delUser.jsp–QueryServlet–delUser.jsp
  • 更新后跳回更新界面–updateUser.jsp–QueryServlet–updateUser.jsp

这里就利用了request.getRequestDispatcher(“url?id=”+id+”“),URL后带参数传值实现自定义跳转

具体操作看下列代码

addUser.jsp

<form action="addServlet" method="post">
        <label for="username">管理员用户名</label><input type="text" id="username" name="username" placeholder="请输入用户名">
        <label for="password">管理员密码</label><input type="text" id="password" name="password" placeholder="请输入密码">
          <button type="submit">添加</button>
</form>

AddServlet.java

public class AddServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {  
        this.doPost(request, response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //...具体添加数据操作
        request.getRequestDispatcher("queryAdminServlet?").forward(request, response);
        //String url = "jsp/addUser.jsp";
        //request.getRequestDispatcher("queryAdminServlet?url="+url+"").forward(request, response);
    }
}

queryServlet.java

public class QueryServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {  
        this.doPost(request, response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //...遍历查询数据操作
        request.getRequestDispatcher(jsp/addUser.jsp).forward(request, response);
        //String url = request.getParameter("url");
        //request.getRequestDispatcher(url).forward(request, response);
    }
}

以上是一套添加用户的操作,这里的跳转逻辑为 – 打开addUser.jsp进行添加用户操作 – 通过form的action – 跳转到AddServlet进行入库操作–跳转到QueryServlet进行一次遍历更新查询结果 – 再跳回addUser.jsp。因为QueryServlet类似一个公共类,被反复调用,所以跳转的地址需要不同的变动,鉴于此问题,找到解决方法:
利用了request.getRequestDispatcher(“url?id=”+id+”“)语句,URL后附加参数,通过页面传值后引用实现自定义跳转。如下注释内容:

AddServlet.java

    String url = "jsp/addUser.jsp";
    request.getRequestDispatcher("queryAdminServlet?url="+url+"").forward(request, response);

这里在getRequestDispatcher传值时在servlet后面跟上自定义的url参数,然后传入另一个页面后,如本例中的QueryServlet.java,通过request.getParameter()取到值,进行跳转,即可实现自定义的页面跳转操作

QueryServlet.java

    String url = request.getParameter("url");
    request.getRequestDispatcher(url).forward(request, response);
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavaEE中,可以通过使用Servlet和JSP来实现按钮跳转到对应页面的功能。 首先,我们需要在Servlet中处理按钮的请求,然后根据请求的参数或者路径信息,将请求转发到对应的JSP页面。 下面是一个简单的示例代码: ```java // 在Servlet中处理按钮的请求 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if ("page1".equals(action)) { // 跳转到page1.jsp页面 request.getRequestDispatcher("/page1.jsp").forward(request, response); } else if ("page2".equals(action)) { // 跳转到page2.jsp页面 request.getRequestDispatcher("/page2.jsp").forward(request, response); } else { // 其他情况,跳转到错误页面 request.getRequestDispatcher("/error.jsp").forward(request, response); } } ``` 在JSP页面中,我们可以使用超链接或者表单的方式来触发Servlet中的处理逻辑,从而实现按钮跳转到对应页面的功能。 下面是一个超链接的示例代码: ```html <!-- 跳转到Servlet中处理page1请求 --> <a href="servlet_url?action=page1">跳转到page1页面</a> ``` 下面是一个表单的示例代码: ```html <!-- 提交表单,跳转到Servlet中处理page2请求 --> <form method="post" action="servlet_url"> <input type="hidden" name="action" value="page2"> <input type="submit" value="跳转到page2页面"> </form> ``` 需要注意的是,Servlet的URL需要根据实际情况进行配置,同时需要在web.xml文件中配置Servlet的映射关系。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值