Servlet 仅针对默认切换情况调用
Servlet is invoked only for the default switch case
这里,当 url 模式是“/Login/new”时,servlet 不会被调用,我通过打印到 console.It 来验证它仅适用于“/Login”的默认情况“
@WebServlet("/Login")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserDAO userDAO;
public void init()
{
userDAO = new UserDAO();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Servlet invoked !!");
String action = request.getServletPath();
System.out.println(action);
switch(action)
{
case "/new":
showNewForm(request,response);
break;
case "/insert":
insertUser(request, response);
break;
case "/update":
updateUser(request, response);
break;
case "/delete":
deleteUser(request, response);
break;
case "/edit":
showEditForm(request, response);
break;
case "/login":
RequestDispatcher dispatcher= request.getRequestDispatcher("/login.jsp");
dispatcher.forward(request, response);
default:
//listUser(request,response);
showLogin(request,response);
break;
}
“/Login”的输出:[
“/Login/new”的输出:
期望的输出是“/new”案例中的函数应该是called.What我错过了吗?
更新路径如下
@WebServlet("/Login/*")
,并尝试检查您是否正在检索 URL 路径的最后一部分以及后面的小写字母
String action = request.getRequestURI();
action = action.substring(action.lastIndexOf("/")).toLowerCase();
这里,当 url 模式是“/Login/new”时,servlet 不会被调用,我通过打印到 console.It 来验证它仅适用于“/Login”的默认情况“
@WebServlet("/Login")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserDAO userDAO;
public void init()
{
userDAO = new UserDAO();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Servlet invoked !!");
String action = request.getServletPath();
System.out.println(action);
switch(action)
{
case "/new":
showNewForm(request,response);
break;
case "/insert":
insertUser(request, response);
break;
case "/update":
updateUser(request, response);
break;
case "/delete":
deleteUser(request, response);
break;
case "/edit":
showEditForm(request, response);
break;
case "/login":
RequestDispatcher dispatcher= request.getRequestDispatcher("/login.jsp");
dispatcher.forward(request, response);
default:
//listUser(request,response);
showLogin(request,response);
break;
}
“/Login”的输出:[
“/Login/new”的输出:
期望的输出是“/new”案例中的函数应该是called.What我错过了吗?
更新路径如下
@WebServlet("/Login/*")
,并尝试检查您是否正在检索 URL 路径的最后一部分以及后面的小写字母
String action = request.getRequestURI();
action = action.substring(action.lastIndexOf("/")).toLowerCase();