如何知道哪个 servlet 将处理来自 JSP 的 "submit" 查询?

How to know which servlet will handle a "submit" query from a JSP?

我对使用 Servlet、JSP 等编写 Web 应用程序还比较陌生。

在我的例子中,我想要 2 个 servlet 和 5 个 JSPs,一个 servlet 就可以了,它正在初始化与 MySQL 数据库的连接以及重定向到各种 JSPs 和另一个 Servlet 是对应于 JSPAdmin 页面的 ServletAdmin,比其他 servlet 具有更多关于数据库访问的权限。

现在我希望 ServletAdmin 只处理来自 JSPAdmin 页面的请求,但我不知道它是如何工作的,我是否必须使用 @WebServlet 注释为我的 servlet 设置参数?我已经为第一个这样做了:

@WebServlet(
       name = "ServletConnection",
       displayName = "Connection handling Servlet",    
       urlPatterns = {"/JSPConnection", "/JSPInit","/JSPCaddie","/JSPPay"}
)

我不太明白我在做什么,我之前搜索过我的问题并遇到了那个解决方案,所以我试图从中得到一些东西,但是我宁愿问清楚。

每个 JSP 和每个 Servlet 当前都在各自文件夹的根目录中

我的 JSP 的命名分别在 urlPatterns 和我上面的段落中引用,我的 Servlet 也是如此。

无论 class 您在表单内的操作字段中输入什么,该 servlet 都会处理提交请求。 action 和 urlpatterns 的值应该匹配。这就是您的请求如何知道哪个 servlet 将处理您的请求。

如果您不使用表单,href 值应与 urlpatterns 匹配。

<form method="POST" action='UserController' name="frmAddUser">
        User ID : <input type="text" readonly="readonly" name="userid"
            value="<c:out value="${user.userid}" />" /> <br /> 
         <input type="submit" value="Submit" />
  </form>

  <a href="UserController">Click Here </a>  

注解:

@WebServlet(name = "Servlet", description = "This is a servlet with annotations", urlPatterns = "/UserController") 

最好的办法就是不要太复杂,也不要把servlet 淹没在大量不同的逻辑中。如果你有一个servlet逻辑适合不止一个jsp,没关系。用它。为该 servlet 分配一个 URL 值,并在您喜欢的任何页面上使用它。

@WebServlet(name = "MyServlet", urlPatterns={"/whatever"})

在您的 JSP 表单中:

<form action="whatever" method="POST">

祝你好运:)