Java 如何在JSP中显示对象的数据

Java 如何在JSP中显示对象的数据,java,spring,hibernate,jsp,Java,Spring,Hibernate,Jsp,我通过注册表将一些用户详细信息存储到db(hibernate和spring)中。我想在一个单独的JSP页面中显示所有用户的详细信息。有人能告诉我怎么做吗 下面是我的控制器代码 @Controller public class RegisterController { @Autowired private UserDao userDao; @RequestMapping(value = "/registerForm.htm", method = RequestMetho

我通过注册表将一些用户详细信息存储到db(hibernate和spring)中。我想在一个单独的JSP页面中显示所有用户的详细信息。有人能告诉我怎么做吗

下面是我的控制器代码

@Controller
public class RegisterController {

    @Autowired
    private UserDao userDao;

    @RequestMapping(value = "/registerForm.htm", method = RequestMethod.GET)
    public ModelAndView registerPage(ModelMap map) {
        User user = new User();
        map.addAttribute(user);
        return new ModelAndView("registerForm", "command", user);

    }

    @RequestMapping(value = "/registerProcess.htm", method = RequestMethod.POST)
    public ModelAndView registerUser(@ModelAttribute("user") User user, Model model) {

        model.addAttribute("userName", user.getUserName());
        model.addAttribute("password", user.getPassword());
        model.addAttribute("emailId", user.getEmailId());
        System.out.println("user is " + user);
        System.out.println("userdao is" + userDao);
        userDao.saveUser(user);
        return new ModelAndView("registerProcess", "user", user);

    }

}
userdao中的代码

public void saveUser(User user) {

    Session session=getSessionFactory().openSession();
    Transaction tx;
    tx=session.beginTransaction();

    session.persist(user);
    tx.commit();

}

编写另一个方法来获取所有用户,然后将检索到的用户列表存储在模型对象中,然后在JSP中使用JSTL forEach标记来显示用户,您可以使用此链接查看如何使用JSTL forEach循环在JSP上显示数据:

您应该获得要在get请求中向用户显示的元素。这包括以下步骤:

  • 具有适当的URL映射和视图以处理GET
  • 获取将预处理URL的方法中的数据
  • 将要显示给用户的数据存储为请求属性
  • 转发到视图(JSP)
  • 在视图中,显示来自请求属性的数据
这是一个基于当前代码并假设存在某些方法的非常简单的示例:

@Controller
public class RegisterController {

    @Autowired
    private UserDao userDao;

    @RequestMapping(value="/registerForm.htm",method=RequestMethod.GET)
    public ModelAndView registerPage(ModelMap map){
        User user=new User();
         map.addAttribute(user);
        return new ModelAndView("registerForm","command",user); 
    }

    @RequestMapping(value="/registerProcess.htm",method=RequestMethod.POST)
    public ModelAndView registerUser(@ModelAttribute("user") User user,Model model){
        model.addAttribute("userName", user.getUserName());
        model.addAttribute("password", user.getPassword());
        model.addAttribute("emailId",user.getEmailId());
        System.out.println("user is "+user);
        System.out.println("userdao is"+userDao);
        userDao.saveUser(user);
        return new ModelAndView("registerProcess","user",user);
    }

    //this is the new method with proper mapping
    @RequestMapping(value="/userList.htm", method=RequestMethod.GET)
    public ModelAndView registerPage(ModelMap map) {
        //this method should retrieve the data for all users
        List<User> userList = userDao.getAllUsers();
        map.addAttribute("userList", userList);
        return new ModelAndView("userList", map);
    }
}
@控制器
公共类注册控制器{
@自动连线
私有UserDao UserDao;
@RequestMapping(value=“/registerForm.htm”,method=RequestMethod.GET)
公共模型和视图注册表页(模型地图){
用户=新用户();
map.addAttribute(用户);
返回新的ModelAndView(“registerForm”、“command”、user);
}
@RequestMapping(value=“/registerProcess.htm”,method=RequestMethod.POST)
公共模型和视图注册器(@modeldattribute(“用户”)用户,模型模型){
model.addAttribute(“userName”,user.getUserName());
model.addAttribute(“password”,user.getPassword());
model.addAttribute(“emailId”,user.getEmailId());
System.out.println(“用户为”+用户);
System.out.println(“userdao是”+userdao);
userDao.saveUser(用户);
返回新的ModelAndView(“registerProcess”、“user”、user);
}
//这是具有适当映射的新方法
@RequestMapping(value=“/userList.htm”,method=RequestMethod.GET)
公共模型和视图注册表页(模型地图){
//此方法应检索所有用户的数据
List userList=userDao.getAllUsers();
addAttribute(“userList”,userList);
返回新的ModelAndView(“用户列表”,映射);
}
}
然后,在userList.jsp中:


用户列表
用户名单:

${user.userName}
请注意,这是一个关于如何执行此操作的非常基本的示例。代码可以大大改进

更多信息:


问题是……我对这方面还不熟悉。我是否需要以不同的方式保存对象?我需要在另一个页面中显示存储在对象中的数据。应该怎么做?您不需要以不同的方式保存对象,您可以在internet上找到许多符合此要求的示例,您尝试过吗?一旦我检索到所有用户,我应该将这些信息存储在单独的模型对象中吗?我正在使用一个模型对象“User”来存储用户注册后的详细信息。您可以使用User,数据应该存储在列表中。请看@Luiggi Mendoza答案,它有完整的信息,非常感谢!!。我试试这个。谢谢@chaitanya alsoHi Luiggi,成功了。你能解释一下map.addAttribute(“userList”,userList)的工作原理或使用方法吗;?它是执行期间的临时存储吗?之前,在返回时,我使用了3个参数,但在您提到的参数中只有2个。如果我像这样返回,它将如何在查看页面中工作?@B.K此处介绍:。另外,我设置为request属性的是
列表
。您可以设置所需的任意多个变量。但如果数据已经存储在对象中,则存储该对象,而不是单独存储数据。其余的请阅读