java - 如果字符串为空,则 Servlet doGet 不起作用

标签 java jsp servlets

我正在使用 Servlet 和 JSP 执行以下逻辑 但是,如果我传递带有值的订单,并取消注释 Servlet 中的行,它就可以工作,但如果订单为空,则不会发生任何事情,并且异常会生成“空”消息,尽管很简单。 像下面这样的代码正在工作,但是如果我取消注释这些行,如果 order 为空,它就会停止。希望我在这里说清楚了,如果没有,请告诉我。

<td class="headerindex"><a href="ListCode?order=code_ready_date">Code ready date:</a></td>

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        Connection connection = DbUtil.getConnection();


         try {
            Statement statement = connection.createStatement();

            String query = "";
            String order = "";

            order = request.getParameter("order");

            System.out.println("Order is: "+order);

            //if (order.equals("code_ready_date")) {
                //query = "SELECT * FROM codes WHERE prod_deploy_state IN ('LIVE')";
            //}
            //else if (order != null) {
                //query = "SELECT * FROM codes WHERE prod_deploy_state IN ('LIVE','Dormant','...')";
            //}

            query = "SELECT * FROM codes WHERE prod_deploy_state IN ('LIVE','Dormant','...')";          

            System.out.println("Query is: "+query);

            ResultSet rs = statement.executeQuery(query);
            List<Code> codes = new ArrayList<Code>();
            while (rs.next()) {
                Code code = new Code();
                code.setEpic_project(rs.getString("epic_project"));
                code.setReleases(rs.getString("releases"));
                code.setJira_tickets(rs.getString("jira_tickets"));
                code.setApplications(rs.getString("applications"));
                code.setComponents(rs.getString("components"));
                code.setCode_ready_date(rs.getString("code_ready_date"));
                code.setRtb_code_deploy(rs.getString("rtb_code_deploy"));
                code.setOrt_code_deploy(rs.getString("ort_code_deploy"));
                code.setProd_code_deploy(rs.getString("prod_code_deploy"));
                code.setProd_deploy_state(rs.getString("prod_deploy_state"));
                code.setProd_launch_date(rs.getString("prod_launch_date"));
                code.setDependencies(rs.getString("dependencies"));
                code.setId(rs.getString("id"));
                codes.add(code);
            }
            request.setAttribute("code", codes);
            RequestDispatcher disp = request.getRequestDispatcher("ListCodes.jsp");
            disp.forward(request, response);

            rs.close();
            statement.close();
        } catch (Exception e) {
            System.out.println("Exception is: " + e.getMessage());
        }
    }

最佳答案

当您尝试对空引用调用 equals 方法时,会出现空指针异常。当引用为 null 时,就没有对象可以调用 equals 方法。所以你需要先检查是否为空。请尝试以下操作:

if (order == null) {
  query = "SELECT * FROM codes WHERE prod_deploy_state IN ('LIVE','Dormant','...')";
}else if (order.equals("code_ready_date")) {
  query = "SELECT * FROM codes WHERE prod_deploy_state IN ('LIVE')";
} else {
  query = "SELECT * FROM codes WHERE prod_deploy_state IN ('LIVE','Dormant','...')";
}

关于java - 如果字符串为空,则 Servlet doGet 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29616186/

相关文章:

java - 在spring boot中显示jsp页面时,它与jsp头文件一起显示

java web 应用程序 - 将内容添加到 servlet 上下文监听器的 web.xml 后无法查看 jsp 文件

servlets - servlet 映射 url 模式中/和/* 之间的区别

java - Java中十进制和​​十六进制之间的转换

Java GUI JScrollBar 如何设置长度?

java - 玻璃鱼错误

java - 尝试获取 JSON 对象时,jsp 中的参数为 null

java - 将请求参数从action方法发送到jsp

java.lang.ClassNotFoundException : org. apache.derby.jdbc.EmbeddedDriver 错误

java - Hibernate Criteria 和 DetachedCriteria 连接属性或字段