如何知道从哪个jsp页面调用servlet

时间:2016-09-27 07:46:19

标签: java jsp servlets

我正在使用jsp页面和servlet进行项目。

在我的servlet中,我需要确定哪个jsp页面正在处理请求。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

识别请求来自的表单的最简单方法是添加包含表单标识符的隐藏字段。但这是一个非常罕见的要求:如果你发布到相同的URL,通常意味着帖子的起源无关紧要。如果重要(为什么?),差异应该在发布的数据中(因此是隐藏字段的提议),或者您应该发布到不同的URL。 Servlet不是那么昂贵,你需要限制它们的数量。

答案 1 :(得分:1)

我找到了解决方案。

我为提交按钮设置了一个名称。

<input type="submit" name="button" value="button1">

然后在servlet中我用

检查
String r = request.getParameter("button");

这样做我知道请求来自哪里

答案 2 :(得分:1)

对于你的servlet,我想你正在使用doGet / doPost处理请求和返回响应,然后在你的jsp请求中,你总是可以添加一个隐藏的输入字段,让你的servlet知道你来自哪个jsp如下:

在你的jsp中:

添加新的隐藏输入文本字段:

  <input type="hidden" name="jspname" value="jspname" />

在你的Servlet中:

为doGet使用getparameter方法或者为doGet使用getQueryString():

在doPost中:

String jspname = request.getParameter("jspname");

通过使用jspname String,您可以轻松找到它正在使用的jsp。

答案 3 :(得分:0)

使用hidden input是其他答案的解决方案。但是你可以在没有hidden input的情况下做到这一点。

    String referer = new URI(request.getHeader("referer")).getPath();

referer字符串为您提供完整的URI。另外,要获取jsp页面名称,您可以使用java code

    String[] uriNames = referer.split("/");
    String jspPageName = uriNames[uriNames.length-1];

同样使用regex,您可以获得jsp页面名称。

    Pattern pattern = Pattern.compile("(\\w+)(\\.)(jsp)");
    Matcher matcher = pattern.matcher(mydata);
    String jspPageName = "";
    while(matcher.find()) {
         jspPageName = matcher.group();
    }