多个请求调用一个Servlet

被调用的 Servlet 类的代码:

/**
 * Servlet implementation class testServlet
 */
@WebServlet("*.do")
public class testServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
//            String method=request.getParameter("method");
//            System.out.println(method);
            String methodName=request.getServletPath();
            methodName=methodName.substring(1).substring(0, methodName.length()-4);//这里本来应该减3的,但是我电脑就是要减4  我也很莫名。
            System.out.println(">>"+methodName);
            
            try{
            Method method=getClass().getDeclaredMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
            method.invoke(this, request,response);
            }catch(Exception e){
//                e.printStackTrace();
                response.sendRedirect("error.jsp");                
            }
    }
    
    private void query(HttpServletRequest request, HttpServletResponse response){
        System.out.println("query");
    }
    private void delete(HttpServletRequest request, HttpServletResponse response){
        System.out.println("delete");
    }
    
}

jsp 或 html 的表单请求

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

        <a href="query.do">查询</a>
        <br><br>
        
        <a href="delete.do">删除</a>
        <br><br>        
        
        <a href="update.do">修改</a>
        <br><br>        

</body>
</html>


根据反射,对应的链接会直接调用对应的方法。

你可能感兴趣的:(多个请求调用一个Servlet)