A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

用自己的话将线路收藏跟取消收藏功能描述出来

15 个回复

倒序浏览
用自己的话将线路收藏跟取消收藏功能描述出来
线路收藏:查看线路详情的时候前端有个点击收藏功能组件,当点击收藏时候会异步请求查询用户是否登录,没有登录则跳转到登录界面。登录了发给ajax请求调用route/isFavorite方法判断用户是否收藏过该路线,收藏过则修改其样式,没有收藏过且登录了则点击收藏按钮调用前端addFavorite方法发送ajax请求调用route/addFavorite方法添加数据到数据库中,页面刷新显示收藏次数删除按钮的点击事件。

取消收藏
:当用户再点击一次或者点击取消收藏的时候传递收藏的线路rid到servlet中,判断用户是否登录,登录则调用方法delete删除其收藏的线路信息。
回复 使用道具 举报
用自己的话将线路收藏功能描述出来
答:
        线路收藏功能:
                前端:
                        查询是否被收藏:在页面加载进路线详情时,请求后台传递线路id(rid),获取线路是否被收藏,未收藏则按钮样式不变,已收藏则更改按钮样式,并置为不可更改;

                        添加收藏:为收藏按钮添加单击事件,当按钮点击时判断用法是否已登录,未登录则跳转至登录界面进行登录操作;已登录则传递路线id(rid)进行数据添加,并刷新页面;


                后台:
                        查询是否被收藏:
                                servlet层:获取路线id(rid)和用户数据,判断用户是否已登录,未登录则将uid置为0,已登录则将uid置为用户id;调用service层方法,传递rid和uid,查询路线是否被收藏;
                                service层:调用dao层方法,传递uid和rid,获取数据,如果数据不为null则说明路线已被收藏,反之则位被收藏;
                                dao层:根据rid和uid 定义条件查询语句进行数据库查询,将查询的数据返回给调用者;

                        添加收藏:
                                servlet层:获取路线id(rid)和用户数据,判断用户是否已登录,未登录则进行return使页面不发生改变,已登录则将uid置为用户id;调用service层方法,传递rid和uid,进行数据添加;
                                service层:调用dao层方法,传递uid和rid,进行数据添加;
                                dao层:定义添加语句,将路线id、用户id和收藏时间添加到数据库中;
回复 使用道具 举报
用自己的话将线路详情展示和线路收藏功能描述出来
线路详情展示
①在route_list.html页面的查看详情绑定点击事件,绑定对应路线的rid跳转到route_detail.html页面
②route_detail.html页面加载,就会发送异步请求,将rid传递给RouteServlet,RouteServlet再调用RouteServiceImpl中的findDetail(rid)方法,将返回的Route对象转换为json,发送给前端
③RouteServiceImpl中创建Route对象,并调用RouteDaoImpl中的findRoute(rid)方法,查询tab_route表路线的信息;调用RouteDaoImpl中的findRouteIm()方法根据findRoute()方法查询出的Route对象的rid,查询tab_route_img表中对应的路线图片;调用RouteDaoImpl中的findSeller()方法根据findRoute()方法查询出的Route对象的sid,查询tab_seller表中对应的商家,对route对象进行赋值,将Route对象返回给RouteServlet
④route_detail.html页面根据返回的json格式的Route对象,展示路线详情

线路收藏
判断是否收藏:
①在route_detail.html加载,会发生异步请求访问FavoriteServlet,FavoriteServlet获取前端传递rid和获取session域中的user对象,判断user是否为空,不为空则获取用户的uid,并调用FavoriteServiceImpl中的isFavorite(rid,uid)方法,给前端页面返回一个布尔值,是否收藏
②FavoriteServiceImpl中调用FavoriteDaoImpl的isFavorite(rid,uid)方法,查询tab_favorite表,并返回一个Favorite对象,根据这个Favorite对象是否为空给FavoriteServlet返回一个布尔值
③route_detail.html根据这个布尔进行判断是否收藏,进行设置是否收藏显示的样式
点击收藏:
①在收藏按键绑定一个点击事件,点击触发会从UserServlet中获取user对象,route_detail.html页面根据返回的user对象是否为空,如果不为空则访问FavoriteServlet传递rid进行收藏,如果为空则跳转到登录页面让用户去登录
②FavoriteServlet获取前端传递rid和获取session域中的user对象,判断user是否为空,不为空则获取用户的uid,并调用FavoriteServiceImpl中的addFavorite(rid,uid)方法进行添加收藏
③FavoriteServiceImpl中调用FavoriteDaoImpl的addFavorite(rid,uid)方法,在tab_favorite表插入一条收藏记录
回复 使用道具 举报
用自己的话将线路收藏跟取消收藏功能描述出来

查询线路是否被收藏:
客户端:页面加载完发送异步请求,根据响应结果修改点击按钮的属性
服务器端:请求发送到RouteServlet,获取线路rid和用户uid,查询是否收藏,返回boolean值

点击收藏按钮进行收藏或取消收藏:
客户端:收藏按钮绑定单击事件,先判断用户是否有登入,没有跳转至登入页面。如果有登入,跳转到RouteServlet,完成后刷新页面
服务器端:RouteServlet中,获取线路rid和用户uid,调用FavoriteService中的方法,FavoriteService中定义一个方法,
先调用isFavorite方法,判断用户是否收藏线路,如果用户没有收藏线路,创建一个addFavorite方法,去dao实现方法添加收藏。如果用户已经收藏用户,创建一个delFavorite方法,去dao实现方法删除收藏。
回复 使用道具 举报
线路详情展示
(1)在route_list.html页面的查看详情绑定点击事件,绑定对应路线的rid跳转到route_detail.html页面
(2)route_detail.html页面加载,就会发送异步请求,将rid传递给RouteServlet,RouteServlet再调用RouteServiceImpl中的findDetail(rid)方法,将返回的Route对象转换为json,发送给前端

(3)RouteServiceImpl中创建Route对象,并调用RouteDaoImpl中的findRoute(rid)方法,查询tab_route表路线的信息;调用RouteDaoImpl中的findRouteIm()方法根据findRoute()方法查询出的Route对象的rid,查询tab_route_img表中对应的路线图片;调用RouteDaoImpl中的findSeller()方法根据findRoute()方法查询出的Route对象的sid,查询tab_seller表中对应的商家,对route对象进行赋值,将Route对象返回给RouteServlet
(4)route_detail.html页面根据返回的json格式的Route对象,展示路线详情

线路收藏
判断是否收藏:
(1)在route_detail.html加载,会发生异步请求访问FavoriteServlet,FavoriteServlet获取前端传递rid和获取session域中的user对象,判断user是否为空,不为空则获取用户的uid,并调用FavoriteServiceImpl中的isFavorite(rid,uid)方法,给前端页面返回一个布尔值,是否收藏
(2)FavoriteServiceImpl中调用FavoriteDaoImpl的isFavorite(rid,uid)方法,查询tab_favorite表,并返回一个Favorite对象,根据这个Favorite对象是否为空给FavoriteServlet返回一个布尔值

(3)route_detail.html根据这个布尔进行判断是否收藏,进行设置是否收藏显示的样式(默认样式是未收藏)
点击收藏:
(1)在收藏按键绑定一个点击事件,点击触发会从UserServlet中获取user对象,route_detail.html页面根据返回的user对象是否为空,如果不为空则访问FavoriteServlet传递rid进行收藏,如果为空则跳转到登录页面让用户去登录
(2)FavoriteServlet获取前端传递rid和获取session域中的user对象,判断user是否为空,不为空则获取用户的uid,并调用FavoriteServiceImpl中的addFavorite(rid,uid)方法进行添加收藏
(3)FavoriteServiceImpl中调用FavoriteDaoImpl的addFavorite(rid,uid)方法,在tab_favorite表插入一条收藏记录
回复 使用道具 举报
用自己的话将线路收藏跟取消收藏功能描述出来

线路收藏:route_detail.html页面请求routeServlet  ->  routeServlet获取rid以及session域中的uid  ->  写中间表tab_favorite

取消收藏:route_detail.html页面点击取消收藏按钮请求routeServlet  ->  routeServlet获取rid以及session域中的uid  ->  删除tab_favorite表中rid和uid对应的记录


回复 使用道具 举报
吴越 中级黑马 2019-5-22 20:02:34
8#
线路收藏:给“点击收藏”按钮绑定单击事件,点击“收藏”按钮后,首先判断用户是否登录,若未登录,则跳转到登录页面;若已登录,则携带rid参数通过异步请求跳转到RouteServlet中调用addFavorite方法并刷新。RouteServlet中将参数传递到FavoriteService中,通过调用FavoriteDao中的add方法,向数据库的tab_favorite表中添加一条rid和uid;
取消收藏:对“点击收藏”按钮绑定异步请求,向RouteServlet发送rid,通过调用RouteServlet中的isFavorite方法,判断当前页面是否已经被收藏,并返回一个boolean。若为true,代表已经收藏,将此按钮的样式改为“already”,修改文字为“取消收藏”,并修改单击事件为对应的删除方法。
回复 使用道具 举报
用自己的话将线路收藏跟取消收藏功能描述出来
查看线路是否被收藏:
1.前端:在route_detail.html获得当前线路的rid,异步请求servlet。请求路径route/isFavorite,参数传递rid,将来返回boolean的json。
2.三层架构:servlet层获得rid参数,再从session域中获得user键对应的user对象。判断user是否为空,如果为空uid赋值为0,不为空,则将user对象中的uid属性的值赋值给
uid。将两个参数传递到service层对应的方法。service层将rid转换为Integer类型,将两个参数传入dao层。dao层通过这两个参数到tab_favorite表中查询,结果封装为
Favorite对象返回service层。service层判断Favorite对象是否为空,为空说明该线路没有被该用户收藏,返回false。如果不为空,说明该线路已经被该用户收藏,返回
true。servlet层直接将boolean返回值转换为json返回给前端。
3.前端:如果返回true说明该用户已经收藏该线路,设置点击收藏超链接样式为灰色,弃用。返回false不做处理。

添加线路收藏:
1.前端:给点击收藏按钮添加一个单击事件,function内异步请求usersevlet/findOne,function内获得user对象,判断user是否为空。如果不为空说明登录了,异步请求route/addFavorite
。为空则跳转登录页面。
2.三层架构:servlet层获得参数rid,再从session域中获得user键对应的user对象。判断user是否为空,如果为空直接return结束方法。不为空,则将user对象中的uid属性的值赋值给
uid。将两个参数传递到service层对应的方法。service层调用dao层添加数据方法,将数据插入tab_favorite表。三层架构对应的三个类都没有返回值。
3.前端:异步请求route/addFavorite的function内将route_detail.html页面刷新一下。

查询一条线路被收藏次数:
1.改写route/findOen三层架构。在service层增加一个步骤,调用dao层统计tab_favorite表中一条线路被收藏次数的方法,传入rid参数,返回一个int数据。设置route对象的count属性,将route
传到servlet层,再响应给前端。route_detail.html给显示收藏次数那个标签设置动态效果。
回复 使用道具 举报
用自己的话将线路收藏跟取消收藏功能描述出来
查看线路是否被收藏:
1.前端:在route_detail.html获得当前线路的rid,异步请求servlet。请求路径route/isFavorite,参数传递rid,将来返回boolean的json。
2.三层架构:servlet层获得rid参数,再从session域中获得user键对应的user对象。判断user是否为空,如果为空uid赋值为0,不为空,则将user对象中的uid属性的值赋值给
uid。将两个参数传递到service层对应的方法。service层将rid转换为Integer类型,将两个参数传入dao层。dao层通过这两个参数到tab_favorite表中查询,结果封装为
Favorite对象返回service层。service层判断Favorite对象是否为空,为空说明该线路没有被该用户收藏,返回false。如果不为空,说明该线路已经被该用户收藏,返回
true。servlet层直接将boolean返回值转换为json返回给前端。
3.前端:如果返回true说明该用户已经收藏该线路,设置点击收藏超链接样式为灰色,弃用。返回false不做处理。

添加线路收藏:
1.前端:给点击收藏按钮添加一个单击事件,function内异步请求usersevlet/findOne,function内获得user对象,判断user是否为空。如果不为空说明登录了,异步请求route/addFavorite
。为空则跳转登录页面。
2.三层架构:servlet层获得参数rid,再从session域中获得user键对应的user对象。判断user是否为空,如果为空直接return结束方法。不为空,则将user对象中的uid属性的值赋值给
uid。将两个参数传递到service层对应的方法。service层调用dao层添加数据方法,将数据插入tab_favorite表。三层架构对应的三个类都没有返回值。
3.前端:异步请求route/addFavorite的function内将route_detail.html页面刷新一下。

查询一条线路被收藏次数:
1.改写route/findOen三层架构。在service层增加一个步骤,调用dao层统计tab_favorite表中一条线路被收藏次数的方法,传入rid参数,返回一个int数据。设置route对象的count属性,将route
传到servlet层,再响应给前端。route_detail.html给显示收藏次数那个标签设置动态效果。
回复 使用道具 举报
用自己的话将线路收藏跟取消收藏功能描述出来
线路收藏:
查看线路详情的时候前端有个点击收藏功能组件,当点击收藏时候会异步请求查询用户是否登录,没有登录则跳转到登录界面。登录了发给ajax请求调用route/isFavorite方法判断用户是否收藏过该路线,收藏过则修改其样式,没有收藏过且登录了则点击收藏按钮调用前端addFavorite方法发送ajax请求调用route/addFavorite方法添加数据到数据库中,页面刷新显示收藏次数删除按钮的点击事件。

取消收藏:
当用户再点击一次或者点击取消收藏的时候传递收藏的线路rid到servlet中,判断用户是否登录,登录则调用方法delete删除其收藏的线路信息
回复 使用道具 举报
陈鹏涛

用自己的话将线路收藏跟取消收藏功能描述出来
线路收藏:查看线路详情的时候前端有个点击收藏功能组件,当点击收藏时候会异步请求查询用户是否登录,没有登录则跳转到登录界面。登录了发给ajax请求调用route/isFavorite方法判断用户是否收藏过该路线,收藏过则修改其样式,没有收藏过且登录了则点击收藏按钮调用前端addFavorite方法发送ajax请求调用route/addFavorite方法添加数据到数据库中,页面刷新显示收藏次数删除按钮的点击事件。

取消收藏:当用户再点击一次或者点击取消收藏的时候传递收藏的线路rid到servlet中,判断用户是否登录,登录则调用方法delete删除其收藏的线路信息。
回复 使用道具 举报
线路详情展示
1.在route_list.html页面的查看详情绑定点击事件,绑定对应路线的rid跳转到route_detail.html页面
2.route_detail.html页面加载,就会发送异步请求,将rid传递给RouteServlet,RouteServlet再调用RouteServiceImpl中的findDetail(rid)方法,将返回的Route对象转换为json,发送给前端
3.RouteServiceImpl中创建Route对象,并调用RouteDaoImpl中的findRoute(rid)方法,查询tab_route表路线的信息;调用RouteDaoImpl中的findRouteIm()方法根据findRoute()方法查询出的Route对象的rid,查询tab_route_img表中对应的路线图片;调用RouteDaoImpl中的findSeller()方法根据findRoute()方法查询出的Route对象的sid,查询tab_seller表中对应的商家,对route对象进行赋值,将Route对象返回给RouteServlet
4.route_detail.html页面根据返回的json格式的Route对象,展示路线详情
回复 使用道具 举报
陈开明:

                                路线收藏
前端页面:
○1在 route_detail.html页面加载完成后,获取rid参数。
○2利用异步请求ajax技术,将参数rid发送给服务器,服务器返回用户是否收藏了此条路线。
○3如果用户收藏了该路线,则将该页面上的“点击收藏”按钮设置为不可点击,样式也置灰。若用户没有收藏,则不处理。
后端处理:
○1servlet层:
1.        获取路线rid参数。
2.        获取当前登录的用户user对象。
3.        创建FavoriteService对象,调用isFavorite方法,返回boolean值。
4.        将返回的值封装为json对象,传递给浏览器。
○2service层:
1.        创建FavoriteDao对象,重写isFavorite方法。
2.        调用findByRidAndUid方法,返回用户是否收藏的boolean值
○3dao层:
1.        定义findByRidAndUid方法,通过查询数据库,判断用户是否收藏,返回Favorite对象。

○3dao层:
2.        定义两个方法,一个是findTotalCount,通过cid和rname查询这类的旅游线路总共有多少条。注意查询的条件可以是只有cid,或只有rname,或一个都没有。
3.        一个是pageQuery方法,返回这类全部路线的信息集合,查询条件同上,参数个数是不定的,所以需要创建一个可变参数列表,将参数添加进去再转回数组,将数组作为可变参数,传递给Query查询。


                                点击收藏
前端页面:
○1在“点击收藏”按钮上面,绑定单击事件。
○2在事件函数内部,先获取rid参数。
○3利用异步请求ajax技术,先发送请求给服务器端,判断用户是否登陆,用户如果没有登陆,则跳转到登陆页面,让用户先登陆。
○4如果用户已登陆,则再次发送ajax请求,传送rid参数,服务器返回数据后,页面刷新。
后端处理:
○1servlet层:
1.        获取前端传递的rid参数。
2.        判断用户是否登陆,如果已登陆,则调用favoriteService.addFavorite方法。
○2service层:
1.        创建FavoriteDao对象,重写addFavorite方法。
2.        调用favoriteDao.addFavorite方法。
○3dao层:
1.        创建FavoriteDaoImpl类,通过rid,uid增加收藏信息到数据库。








回复 使用道具 举报
用自己的话将线路收藏跟取消收藏功能描述出来
点击收藏:
(1)在收藏按键绑定一个点击事件,点击触发会从UserServlet中获取user对象,route_detail.html页面根据返回的user对象是否为空,如果不为空则访问FavoriteServlet传递rid进行收藏,如果为空则跳转到登录页面让用户去登录
(2)FavoriteServlet获取前端传递rid和获取session域中的user对象,判断user是否为空,不为空则获取用户的uid,并调用FavoriteServiceImpl中的addFavorite(rid,uid)方法进行添加收藏
(3)FavoriteServiceImpl中调用FavoriteDaoImpl的addFavorite(rid,uid)方法,在tab_favorite表插入一条收藏记录
取消收藏:
在取消收藏绑定单击事件,点击触发获取session域中的user对象,如果不为空,查询tab_favorite表中是否有收藏记录,有,在dao层删除收藏记录即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马