【问题标题】:How to display data of objects in JSPJSP中如何显示对象的数据
【发布时间】:2014-11-07 21:55:52
【问题描述】:

我已通过注册表将一些用户详细信息存储到数据库(休眠和弹簧)中。我想在单独的 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();

}

【问题讨论】:

  • 问题是……
  • 我是新手。我需要以不同的方式保存对象吗?我需要在另一个页面中显示存储在对象中的数据。应该怎么做?
  • 您不需要以不同的方式保存对象,您可以在互联网上找到许多针对此要求的示例,您尝试过吗?

标签: java spring hibernate jsp


【解决方案1】:

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

【讨论】:

  • 一旦我检索到所有用户,我应该将这些信息存储在一个单独的模型对象中吗?一旦用户注册,我将使用模型对象“用户”来存储详细信息。
  • 你可以使用User,数据应该存储在一个列表中。请参阅@Luiggi Mendoza 的答案,它有完整的信息
【解决方案2】:

您应该获取要在 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);
    }
}

然后,在 userList.jsp 中:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>User List</title>
</head>
<body>
    List of users:
    <br />
    <table>
        <c:forEach items="${userList}" var="user">
            <tr>
                <td>${user.userName}</user>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

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

更多信息:

【讨论】:

  • 非常感谢!!我会试试这个。也谢谢@chaitanya
  • 嗨,Luiggi,它成功了。您能否解释一下 map.addAttribute("userList", userList); 的工作或使用?是执行过程中的临时存储吗?以前,我在返回时使用了 3 个参数,但在你提到的那个中只有 2 个。如果我这样返回,它在视图页面中将如何工作?
  • @B.K 在这里介绍:Passing data to jsp:include via c:set。另外,我设置为请求属性的是List。您可以设置任意数量的变量。但是如果数据已经存储在一个对象中,那么存储对象而不是单独存储数据。其余的请阅读How to avoid Java Code in JSP-Files?
猜你喜欢
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2022-07-27
  • 2020-11-12
  • 1970-01-01
  • 2020-10-14
  • 2016-05-31
  • 1970-01-01
相关资源
最近更新 更多