Anchor将值发送到Mapped Servlet - 传递参数

时间:2013-03-10 22:23:18

标签: html forms servlets parameter-passing

我有一个包含多种类别书籍的菜单。

当我点击菜单项时,我想让servlet查询数据库并返回结果。

我不想重复使用代码,所以只使用一个servlet会很好,但不知何故,servlet会识别菜单中的哪个链接被点击并执行相应的操作。

通过提交表单是唯一的方法吗?

此外,我应该提一下,尽管做了可怕的练习,我将针对结果瞄准不同的框架。

2 个答案:

答案 0 :(得分:0)

不,您不需要提交表单。使用查询字符串通过链接传递参数:

<a href="/books?category=novels">Novels</a>
<a href="/books?category=sf">Science Fiction</a>
...    

答案 1 :(得分:0)

这篇文章可能很旧。但这是我的答案。
您可以在jsp页面中创建这样的链接。

 <a href="${pageContext.request.contextPath}/new">Add New Book</a>

 <a href="${pageContext.request.contextPath}/list">List All Books</a>

然后像这样打电话给你的控制器。

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String action = request.getServletContext().getContextPath()+request.getServletPath();

        try {
            switch (action) {
            case "/new":
                showNewForm(request, response);
                break;
            case "/insert":
                insertBook(request, response);
                break;
            case "/delete":
                deleteBook(request, response);
                break;
            case "/edit":
                showEditForm(request, response);
                break;
            case "/update":
                updateBook(request, response);
                break;
            default:
                listBook(request, response);
                break;
            }
        } catch (SQLException ex) {
            throw new ServletException(ex);
        }
    }

这适用于作为启动页面保留的servlet。
您可以根据servlet的href更新url pattern属性。