如何在servlet中识别出呼叫来自href链接点击?

时间:2013-12-13 21:23:39

标签: java jsp servlets

我有一个JSP页面,其中有一个如下所示的超链接:

<p class='posDash1'>
    <input type="hidden" name="export" value="export_csv">
    <a href="/admin/" name ="export"><img class="csvFile"  src="/images/excel_logo.gif"/>&nbsp;Export.csv</a>
</p>

现在,如果我点击这个超链接,我需要在servlet中调用我的一个方法。所以在href中,我提供了我的servlet名称。这里的一切都运行正常,这意味着无论何时我点击这个href,我都可以调用我的servlet现在我不知道如何在servlet中识别这个调用来自href链接点击。

所以我添加了一个输入隐藏值,我从中想到,我将能够识别出此调用是来自href点击链接,但不知何故它不起作用:

public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {

    Response rr = null;

    // but this always come as null
    String export = req.getParameter(export);

    if(export.equals("export_csv)) {

        // do something here
    }

    // some code
}

每次导出变量值都为null时,我无法识别此调用是否来自href链接点击。有没有办法克服这个问题?

3 个答案:

答案 0 :(得分:5)

<input>元素仅在与<form>一起使用时才会被序列化并发送。您可以将查询字符串添加到href值。

<a href="/admin?export=export_csv" name ="export">

答案 1 :(得分:2)

隐藏值仅适用于表单提交:

<form action='/admin/' method='post'>
  <input type="hidden" name="export" value="export_csv" />
  <input type='submit' value='Export' />
</form>

如果你想要一个链接:

<a href="/admin/?export=export_csv">Export</a>

两者都将在servlet中以相同的方式读取。

 request.getParameter("export");

答案 2 :(得分:0)

这让我的工作

    writer.printf(" <p class=history>%n");
    writer.printf("<input type=\"hidden\" name=\"history\" value=\"showHistory\">%n");
    writer.printf("<a href=\"http://localhost:8080/\"> %n");
    writer.printf("\t<a href=\"http://localhost:8080/?history=\"> <h5>Search History</h5>%n");
    writer.printf("</p>%n");

然后我用它来查看它是否被点击,它会让我知道。

    if(req.getParameter("history") != null)
    {
        System.out.println("you clicked history! = "+ req.getParameter("history").toString());
    }