【问题标题】:How to know which servlet will handle a "submit" query from a JSP?如何知道哪个 servlet 将处理来自 JSP 的“提交”查询?
【发布时间】:2018-04-23 00:18:26
【问题描述】:

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

在我的情况下,我想要 2 个 servlet 和 5 个 JSP,一个 servlet 很好,它正在初始化与 MySQL 数据库的连接以及重定向到各种 JSP,另一个 Servlet 是对应于的 ServletAdmin一个 JSPAdmin 页面,与其他 servlet 相比,具有更多关于数据库访问的权限。

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

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

我真的不明白我在这里做什么,我之前搜索过我的问题并遇到了那个解决方案,所以我尝试从中做出一些事情,但我宁愿问可以肯定。

每个 JSP 和每个 Servlet 当前都位于它们各自文件夹的根目录中

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

【问题讨论】:

  • 您可以使用不同的起始 URL,例如 @WebServlet("/admin/*") 用于管理内容,@WebServlet("/user/*") 用于其余部分,让所有请求 URL 以管理员或用户开头。 (虽然老实说我从来没有使用过注释)

标签: jsp servlets request submit


【解决方案1】:

无论您在表单内的操作字段中提供什么类,该 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") 

【讨论】:

  • 哦,好吧,我想我明白了,所以我放在
    some HTML code
    中的 servlet 的名称将是处理请求的那个那个JSP
【解决方案2】:

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

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

在您的 JSP 表单中:

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

祝你好运:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多