如何在SpringMVC应用程序(动态web项目)的控制台中打印?

eoigrqb6  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(407)

我在eclipse中有一个动态web应用程序,它有一个普通的控制器、实体和一个dao类。
我使用hibernate从数据库中获取数据,然后在jsp页面中显示它。
但是当我尝试使用system.out.print()时;在controller类中,查看我的数据是否从数据库中提取,而不是在控制台中打印。
我错过什么了吗?
以下是一些课程。
控制器.java

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.luv2code.springdemo.dao.CustomerDAO;
import com.luv2code.springdemo.entity.Customer;

@Controller
@RequestMapping("/customer")
public class CustomerController {

    // need to inject the customer dao
    @Autowired
    private CustomerDAO customerDAO;

    @RequestMapping("/list")
    public String listCustomers(Model theModel) {

        // get customers from the dao
        List<Customer> theCustomers = customerDAO.getCustomer();

     ***//This is the sysout which is not displaying in the consol***
        System.out.println(theCustomers.get(0).getFirstName());

        theModel.addAttribute("customers", theCustomers);

        return "list-customers";
    }

}

道类

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.luv2code.springdemo.entity.Customer;

@Repository
public class CustomerDAOImpl implements CustomerDAO {

    // need to inject the session factory
    @Autowired
    private SessionFactory sessionFactory;

    @Override
    @Transactional
    public List<Customer> getCustomer() {

        // get the current hibernate session
        Session currentSession = sessionFactory.getCurrentSession();

        // create a query
        Query<Customer> theQuery = 
                currentSession.createQuery("from Customer", Customer.class);

        // execute query and get result list
        List<Customer> customers = theQuery.getResultList();

        // return the results       
        return customers;
    }

}

实体类

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name ="customer")
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="first_name")
    private String firstName;

    @Column(name="last_name")
    private String lastName;

    @Column(name="email")
    private String email;

    public Customer() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Customer [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + "]";
    }

    public Customer(String firstName, String lastName, String email) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
    }

}
1hdlvixo

1hdlvixo1#

你想做的需要一个记录器。使用 java.util.Logger 类打印到控制台。可以使用初始化记录器示例 Logger logger = new Logger(getClass().toString()); 然后输出 logger.info("Hello, World!"); 编辑:解释为什么system.out不起作用。我不是100%确定,但我的直觉是,您看到的服务器上的日志窗口与
System.out PrintStream 对象指向。根据上面的文件 java.lang.System 在此处找到类:

"Typically this stream corresponds to display output or another output destination specified by the host environment or user."

上面说的是 System.out 对象打印到它被告知的目的地。 System.out 可以通过为其分配另一个目的地来指向其他目的地 PrintStream 使用 System.setOut(PrintStream) . 想办法弄到一个 PrintStream 指向您的服务器日志的对象需要稍微挖掘一下。
无论如何,我应该指出 System.out 在现实世界中很少使用,大多数现实世界应用程序使用记录器来显示输出。记录器将打印有关输出的周围上下文的元数据,例如输出所来自的类的完全限定名以及该类的确切方法。这使得调试和跟踪代码比使用 System.out .
此外,日志记录器还有可以根据严重性对输出进行分类的层。可以从打印警告或严重错误的日志语句中筛选只跟踪代码执行的日志语句。 System.out 只有错误级别和默认级别。这个 java.util.Logger 班级有一个 trace 级别,a debug 级别,a info 级别,和 warn 水平。每个级别都可以根据配置进行过滤,每个级别都向开发人员提供有关语句的元数据。一目了然,这句话是说了一些他们应该关心的事情,还是仅仅是对执行情况的一般性更新。
这是开始进入杂草有点,但一般采取的是,伐木工人是更好地配备了一个现实世界的应用程序比 System.out . 他们什么都做 System.out 能做的,再加上更多。顺便说一句,如果你的应用程序有一个服务器日志,这应该是一个提示,你应该迁移到使用记录器无论如何。希望这有帮助!

e1xvtsh3

e1xvtsh32#

代码没有问题。
//这是在consol system.out.println(the customers.get(0.getfirstname())中没有显示的sysout;
不过,请检查以下内容--
customers.get(0)-->这将从列表中获取第一个元素(customer)。
确保在firstname中为该客户实际提供了一些数据。空格也是一个字符串。您可能有一个名为“”的客户
i、 e签入数据库。

相关问题