点击新增用户之后,显示的并不是我新增的用户详情

点击新增用户之后,显示的并不是我新增的用户详情

点击新增用户之后,显示的并不是我新增的用户详情,而是其他的用户,但是看url的参数id确实是新增用户的id

http://img1.sycdn.imooc.com//climg/5d0845d50001797f19181029.jpg

http://img1.sycdn.imooc.com//climg/5d0846020001946419201022.jpg


如果从首页点击查看的话,则能正确显示

http://img1.sycdn.imooc.com//climg/5d08464e0001b87419201029.jpg


http://img1.sycdn.imooc.com//climg/5d0846870001586a19201029.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

5回答

同学你好,这里老师是携带用户id转发到了detail,如:

http://img1.sycdn.imooc.com//climg/5d08b1c30001ba5a07020088.jpg

然后通过detail找到UsersFindByIdServlet类,如:

http://img1.sycdn.imooc.com//climg/5d08b1f70001d6d610210802.jpg

在该类中,通过id调用findById查询出用户并转发到detail.jsp页面。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

好帮手慕阿满 2019-06-18 16:13:59

同学你好,问一下同学说的没有显示是什么意思,所有属性都为空吗?另外建议同学可以在调用addUser方法后,输出一下用户的id,如:

http://img1.sycdn.imooc.com//climg/5d089cdf0001244106050103.jpg

然后查看一下数据库中新增用户的id,查看是否一致。

如果不一致,建议同学检查一下UserDao中的addUser()方法是否如下所示:

http://img1.sycdn.imooc.com//climg/5d089d3400018a8306490401.jpg

祝:学习愉快~

  • 提问者 必思答 #1
    这个问题已经解决了,请老师看一下我在3个小时前的回复,感谢!
    2019-06-18 16:17:33
提问者 必思答 2019-06-18 12:31:32
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取要添加的用户数据
        String username = request.getParameter("username");
        String userpass = request.getParameter("userpass");
        String nickname = request.getParameter("nickname");
        String age = request.getParameter("age");
        String gender = request.getParameter("gender");
        String email = request.getParameter("email");
        String phone = request.getParameter("phone");
        
        // 根据用户数据创建一个用户对象
        Users user = new Users(username, userpass, nickname, Integer.parseInt(age), gender, phone,email, new Date(), new Date(), new Date(), 0);
    
        //将用户添加到数据库中
        user=usersDAO.addUser(user);
        
        //查看刚新增的用户数据
        request.getSession().setAttribute("user", user);
        request.getRequestDispatcher("detail.jsp").forward(request, response);

    }


doPost()这样写解决了,新增了request.getSession().setAttribute("user", user);
如果像老师在课程里写的那样,不是没有将user对象传给detail页面吗?为什么老师演示的能正确输出到页面呢?



protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   // 获取要添加的用户数据
   String username = req.getParameter("username");
   String userpass = req.getParameter("userpass");
   String nickname = req.getParameter("nickname");
   String age = req.getParameter("age");
   String gender = req.getParameter("gender");
   String email = req.getParameter("email");
   String phone = req.getParameter("phone");

   // 根据用户数据创建一个用户对象
   Users user = new Users(username, userpass, nickname, Integer.parseInt(age), gender, email, phone, new Date(), new Date(), new Date(), 0);

   // 将用户对象添加到数据库中
   user = usersDAO.addUser(user);

   // 查看刚新增的用户数据
   resp.sendRedirect("/detail?id=" + user.getId());
}

好帮手慕阿满 2019-06-18 11:19:35

同学你好,建议同学将重定向语句修改为如下:

resp.sendRedirect(req.getContextPath()+"/detail?id=" + user.getId());

使用eclipse时,访问路径中必须有项目名,req.getContextPath可以获取当前应用的名称。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 必思答 #1
    修改了,但是之前的问题依然存在,启动tomcat首次添加用户,跳转到详情页没有显示,返回首页后查看其中一个数据,然后再添加用户,跳转到详情页,有显示,但显示的不是刚添加的用户,而是其他用户,确定数据已经添加到数据库了。不知道我描述清楚没有
    2019-06-18 11:29:42
提问者 必思答 2019-06-18 10:29:53

在servlet中重定向语句我是这么写的,     

response.sendRedirect("detail.jsp?id=" + user.getId());

如果像老师写的那样resp.sendRedirect("/detail?id=" + user.getId());
会报404错误

还有我用的IDE是eclipse

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师