Java Servlet如果station don';不需要{}括号吗?

Java Servlet如果station don';不需要{}括号吗?,java,jsp,servlets,Java,Jsp,Servlets,我是一个初学者,正在阅读Murach的Javaservlet和JSP。。。通过这些例子。在这个Ch11简单购物车的例子中有点卡住了。 我想在这里发布整个代码,但它真的太长了 我已将完整代码放在我的dropbox链接上: 问题: CartServlet.java if(quantity > 0) cart.addItem(lineItem); else if(quantity == 0) cart.removeItem(lineItem); session.setA

我是一个初学者,正在阅读Murach的Javaservlet和JSP。。。通过这些例子。在这个Ch11简单购物车的例子中有点卡住了。
我想在这里发布整个代码,但它真的太长了

我已将完整代码放在我的dropbox链接上:

问题:

  • CartServlet.java

    if(quantity > 0)
        cart.addItem(lineItem);
    else if(quantity == 0)
        cart.removeItem(lineItem);
    
        session.setAttribute("cart", cart);
        String url = "/cart.jsp";
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
    
        dispatcher.forward(request, response);
    

    这可能是个愚蠢的问题。我注意到servlet If语句不需要{}?为什么会这样?我的意思是,常规的java if语句都需要{},那么为什么servlet会有所不同呢

  • cart.java

    public void addItem(LineItem item)
    {
    String code = item.getProduct().getCode();
    int quantity = item.getQuantity();
    for (int i = 0; i < items.size(); i++)
    {
        LineItem lineItem = items.get(i);
        if (lineItem.getProduct().getCode().equals(code))
        {
            lineItem.setQuantity(quantity);
            return;
        }
    }
    items.add(item);
    }
    
    public void addItem(行项目)
    {
    字符串代码=item.getProduct().getCode();
    int数量=item.getQuantity();
    对于(int i=0;i
  • 我不能理解的是
    item.getProduct().getCode()。我不确定这个输出会是什么

  • 如果在if中不使用任何{},它将执行它后面的第一条语句。如果使用{},它将执行带有{}的all语句
  • 比如说

    假设
    条件
    为真

    if(condition)
       sttmnt1;   // it will execute this only
    sttmnt2; // this is out of if block
    
    在以下情况下,将执行两个sttmnt

    if(condition){
       sttmnt1; 
       sttmnt2; 
    }
    
    在你的例子中

    if(quantity > 0)
        cart.addItem(lineItem);
    else if(quantity == 0)
        cart.removeItem(lineItem);
    
    在if和elseif条件中,只有一条语句。所以没有必要使用{}

  • 了解什么是
    item.getProduct().getCode()
    将返回,检查
    LineItem
    类的getProduct方法中返回的类对象。在返回的对象的类类型检查中,whet是
    getCode()
  • 如果在if中不使用任何{},它将执行它后面的第一条语句。如果使用{},它将执行带有{}的all语句
  • 比如说

    假设
    条件
    为真

    if(condition)
       sttmnt1;   // it will execute this only
    sttmnt2; // this is out of if block
    
    在以下情况下,将执行两个sttmnt

    if(condition){
       sttmnt1; 
       sttmnt2; 
    }
    
    在你的例子中

    if(quantity > 0)
        cart.addItem(lineItem);
    else if(quantity == 0)
        cart.removeItem(lineItem);
    
    在if和elseif条件中,只有一条语句。所以没有必要使用{}

  • 了解什么是
    item.getProduct().getCode()
    将返回,检查
    LineItem
    类的getProduct方法中返回的类对象。在返回的对象的类类型检查中,whet是
    getCode()
  • java中按块读取的if-else子句(和所有其他控制结构)

    所以如果你把

    if(x>2)
    System.out.println("a");  ==> this is the next block
    System.out.println("b");
    
    if(x<2)
    {        ==> this is the next block
    System.out.println("a");
    System.out.println("b");
    }
    
    另一个例子

    if(x>2)
     for(int i=0;i<100;i++)  --> next block of if
           for(int j=0;j<200;j++){  --> next block of first for
               if(x>0)
                 Sysout("a");  --> next block of if
                else
                 Sysout("b"); --> next block of else
           }
    
    产品类别

    public class Product{
    
    private String code;
    
    public String getCode(){
     return code;
    }
    
    }
    
    java中按块读取的if-else子句(和所有其他控制结构)

    所以如果你把

    if(x>2)
    System.out.println("a");  ==> this is the next block
    System.out.println("b");
    
    if(x<2)
    {        ==> this is the next block
    System.out.println("a");
    System.out.println("b");
    }
    
    另一个例子

    if(x>2)
     for(int i=0;i<100;i++)  --> next block of if
           for(int j=0;j<200;j++){  --> next block of first for
               if(x>0)
                 Sysout("a");  --> next block of if
                else
                 Sysout("b"); --> next block of else
           }
    
    产品类别

    public class Product{
    
    private String code;
    
    public String getCode(){
     return code;
    }
    
    }
    
  • Servlet Java代码只是普通的Java代码。不带括号的
    if
    在常规Java中的工作方式相同

  • 您的
    LineItem
    类有一个方法
    getProduct
    ,其返回值是一个具有
    getCode
    方法的对象。此代码段所做的是将
    items
    中所有条目的
    getProduct().getCode()
    的值与给定条目的值进行比较。如果其中任何一个匹配,函数将中断并返回。因此,简而言之,此方法确保
    getProduct().getCode()
    集合中只有不同的
    items

  • Servlet Java代码只是普通的Java代码。不带括号的
    if
    在常规Java中的工作方式相同

  • 您的
    LineItem
    类有一个方法
    getProduct
    ,其返回值是一个具有
    getCode
    方法的对象。此代码段所做的是将
    items
    中所有条目的
    getProduct().getCode()
    的值与给定条目的值进行比较。如果其中任何一个匹配,函数将中断并返回。因此,简而言之,此方法确保
    getProduct().getCode()
    集合中只有不同的
    items


  • 您需要了解的是,
    {}
    使多个语句显示为一个块

    有点像语句分组

    因此,当您只有一条语句时,并不真正需要
    {}
    ,但是当您有多条语句时,
    {}
    是有用的


    但是,即使对于单行语句,我也一直使用括号,因为对我来说它看起来很漂亮:-)

    您需要理解的是,
    {}
    使多个语句显示为一个块

    有点像语句分组

    因此,当您只有一条语句时,并不真正需要
    {}
    ,但是当您有多条语句时,
    {}
    是有用的


    然而,即使对于一行语句,我也一直使用括号,因为对我来说,它看起来很漂亮:-)

    如果语句对于所有语句都是相同的。
    没有单独的(JavaServletIF语句)

    如果只有一条语句要执行(当[If,else-If,else,while,for])满足时,我们就不需要使用{}(但不推荐使用,会出现可读性问题)

    例:

        if(condition) 
       System.out.println("hai"); 
    
    同样地

       int i=1;
      while(i++!=10){
      System.out.println("hai"); 
         }
    

           int i=1;
      while(i++!=10)
      System.out.println("hai"); 
    

    在Java中,只有switch语句需要{},即使它只有一个case语句

    ,如果语句对所有语句都相同。
    没有单独的(JavaServletIF语句)

    如果只有一条语句要执行(当[If,else-If,else,while,for])满足时,我们就不需要使用{}(但不推荐使用,会出现可读性问题)

    例:

        if(condition) 
       System.out.println("hai"); 
    
    同样地

       int i=1;
      while(i++!=10){
      System.out.println("hai"); 
         }
    

           int i=1;
      while(i++!=10)
      System.out.println("hai"); 
    
    在Java中,仅switch语句需要{},即使它有单case语句,Servlet也是Java代码,适用于核心Java的规则也适用于Servlet。 {}用于将多个语句组合到单个块中。 前

    在上面的示例中,只有当条件的计算结果为true时,才会执行语句1。语句2不属于
    if
    语句的一部分