javaEE web项目,需求以下:QueryServlet(数据库查询操做),每一次添加(addUser.jsp),删除(delUser.jsp)和修改(updateUser.jsp)的操做后都须要调用QueryServlet,如何可以在实现QueryServlet里的查询功能后,实现不一样页面的跳转–如:java
这里就利用了request.getRequestDispatcher(“url?id=”+id+”“),URL后带参数传值实现自定义跳转web
具体操做看下列代码数据库
addUser.jspmarkdown
<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.javajsp
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.javapost
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后附加参数,经过页面传值后引用实现自定义跳转。以下注释内容:this
AddServlet.javaurl
String url = "jsp/addUser.jsp"; request.getRequestDispatcher("queryAdminServlet?url="+url+"").forward(request, response);
这里在getRequestDispatcher传值时在servlet后面跟上自定义的url参数,而后传入另外一个页面后,如本例中的QueryServlet.java,经过request.getParameter()取到值,进行跳转,便可实现自定义的页面跳转操做spa
QueryServlet.javacode
String url = request.getParameter("url"); request.getRequestDispatcher(url).forward(request, response);