【问题标题】:Change response based on query string in java servlet基于java servlet中的查询字符串更改响应
【发布时间】:2016-02-28 08:46:44
【问题描述】:

我在发送基于query string 的差异响应时遇到了一些问题,我有 2 个字符串假设与查询名称 serviceType 中的单个参数匹配:

private static String restartQuery = "restarts";
private static String dbStatusQuery = "dbStatus";

而我的doGet 函数需要相应地发送响应:

public void doGet(HttpServletRequest request,
                            HttpServletResponse response)
                    throws ServletException, IOException{
    String requestType = request.getParameter(serviceType);
    // Set response content type
          response.setContentType("text/html");    
    if(requestType.equals(restartQuery)){
        //handle response for restartQuery
        PrintWriter out = response.getWriter();
        out.println("response for restart ....");
    }else if (requestType.equals(dbStatusQuery)){
        //handle response for dbStatusQuery
        PrintWriter out = response.getWriter();
        out.println("response for db ....");
        }
  }

问题是我得到了相同的响应(重新启动...),我从前端检查了查询字符串 - system.println(requestType) 并且每个请求都不同,我可以更改什么以使其工作?如果需要更多代码,请在下方评论。

【问题讨论】:

  • 不,它们被定义为静态的。
  • 它们应该按预期工作,我在这里看不到任何逻辑错误。您仍然可以通过将 equals 语句还原为 restartQuery.equals(requestType) 和 dbStatusQuery.equals(requestType) 来试试运气
  • 现在推荐使用球衣是否为时已晚?
  • 检查参数值是否在requestType值中有空格?
  • 我在字符串中添加了 final 并且它起作用了,我不知道为什么......

标签: java servlets query-string


【解决方案1】:

我在这里添加了基于 cmets 的 2 件事:

1- 在我的定义中添加了常量:

private static final String restartQuery = "restarts";
private static final String dbStatusQuery = "dbStatus";

2- 从前端检查空格,只需使用简单的prefix 检查。

感谢所有的帮助者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2013-08-09
    • 1970-01-01
    • 2018-05-13
    • 2018-08-18
    相关资源
    最近更新 更多