【问题标题】:Servlets and JSPs: Adding parameters to a href that routes to a servlet [duplicate]Servlet 和 JSP:将参数添加到路由到 servlet 的 href [重复]
【发布时间】:2017-01-05 13:30:30
【问题描述】:

每个人。

我正在寻找一种将参数添加到直接链接到 servlet 的 url 的方法。也就是说,我正在创建的应用程序使用一个 Servlet 来引导人们通过它自己的应用程序。它会寻找一个名为 action 的参数,并据此决定用户要去哪里。

问题是我用来链接到仪表板页面的链接调用了一个 servlet,我在 href 本身中调用了 Router。我认为我可以使用以下代码添加一个操作参数并将其设置为仪表板:

<a href="Router?action=dashboard">Dashboard</a>

但是,这不起作用。我需要一种将参数添加到链接本身的方法,这样我就可以处理用户尝试访问的页面。

这是我正在使用的 JSP 和用于路由用户的 Servlet 的代码。

<div class="collapse navbar-collapse" id="app-navbar-collapse">
            <!-- Left Side Of Navbar -->
            <ul class="nav navbar-nav">
                <li><a href="index.jsp">Home</a></li>
                 <li><a href="Router?action=dashboard">Dashboard</a></li>
            </ul>

这里是 Servlet 代码:

String action = (String)request.getAttribute("action");

    User user = (User) request.getAttribute("user");

    String url = "home.jsp";

    boolean user_auth = user.getUserAuth();



    switch(action) {
        case "home":
         request.setAttribute("user", user);
         request.getRequestDispatcher(url).forward(request, response);
         break;
        case "dashboard":
            if(user.getUserAuth()) {
                url = "dashboard.jsp";

                out.println("You've been authed");
                //request.getRequestDispatcher(url).forward(request, response);
            } else {
                out.println("You're NOT authed.");
                //request.getRequestDispatcher(url).forward(request, response);
            }
            break;
        default: 
            request.getRequestDispatcher("404Error.jsp").forward(request, response);
    }

这是一个非常简单直接的应用程序,而且我刚开始学习时就符合这种情况。但我只想知道如何将参数直接添加到href中的url。

如果没有办法做到这一点,你能提供更好的解决方案吗?我应该使用单独的 Servlet 来处理这个请求吗?

提前致谢。

【问题讨论】:

  • 你遇到了什么异常?
  • getAttribute 或 getParameter ?
  • 使用 request.getParemeter("action");

标签: java jsp servlets


【解决方案1】:

在您的情况下使用request.getParameter("action");,您也可以使用表单和隐藏表单字段将一些静态值发送到servlet。

隐藏的表单域

<form action="./Router" method="post">
 <input type="hidden" name="action" value="dashboard" />
<button type="submit">Dashboard</button>
</form>

【讨论】:

  • 这很好,伙计们。谢谢。
  • 如果它适合你,那么你可以接受我的答案,方法是选择答案左侧的勾号符号下方的向上向下箭头。
【解决方案2】:

如果您在链接中设置参数,则不能在 Servlet 中使用 getAttribute()。您可能会收到 NullPointerException

你必须改用getParameter("action")

【讨论】:

    猜你喜欢
    • 2017-01-11
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多