目 录
目 录 I
摘 要 III
Abstract IV
1 绪 论 1
1.1 研究目的 1
1.2 发展概况 1
1.3 开发工具的选择 2
2 系统分析 6
2.1 主要功能 6
2.2 方案论证 6
2.2.1 设计原理 6
2.2.2 方案选择 6
2.3 基本思路 7
2.3.1 网站UI的思路 7
2.3.2 获取资源的思路 7
2.3.3 权限控制思路 7
2.4 主要问题 7
2.5 网站要求 8
3 系统设计 9
3.1 概要设计 9
3.2 详细设计 10
3.2.1 版面设计 10
3.2.2 功能设计 11
4 系统实现 12
4.1 创建系统外观界面 12
4.2 获取图片功能的实现 12
4.3 根据条件排序和筛选功能的实现 12
4.4 基于注解的权限认证 14
4.5 根据权限来展示界面 16
4.6 定时更新正在热映电影 18
4.7 前后端认证 19
5 系统运行 22
结束语 27
致谢 28
参考文献 29
2 系统分析
2.1 主要功能
1.一共有两个角色:评论人和管理员
2.评论人可以在网站中进行账号注册
3.评论人可以对电影进行简短评论、打分
4.管理员上传电影的画报、各类简介信息
5.网站根据某种规则自动统计、计算每部电影的分数情况
6.网站自动生成电影的排行榜
7.网站可以根据电影的年份或分数情况对电影进行自动排序
2.2 方案论证
2.2.1 设计原理
1.网站界面:在界面上不追求奢华或者繁杂的功能,只追求两个字:“简洁”,通过干净的首页、功能、观看页面,让观看者体会到舒适的观看环境。
2.功能实现:通过判断登陆权限,以不同的身份登陆到网站,分为网站管理员以及会员。管理员拥有对节目单表的增删改查等操作,并且对网站内电影有简单的处理功能,意在对网站进行管理与维护;会员则区别于游客,登陆会员之后,可以对电影进行影评或与管理员交流等操作。
3.内容多样:通过管理员对信息的掌握程度以及采集速度的保证,每天进行更新内容的操作,并且通过挑选分类,精心的编排到各个模块。最好是用爬虫自动采集信息。
2.2.2 方案选择
1.资源来源:电影的信息一定要有稳定的来源,需要考察豆瓣电影API。
2.爬取策略:由于电影资源需要定期更新,需要设定爬虫的爬取策略。
3.自动化处理:对爬虫爬来的数据要进行自动化分类、处理,方便展示在页面上。
4.评分规则制定:因为电影需要根据评分排序,需要制定一个评分规则。
5.角色界定:系统需要根据用户不同的角色(访客、普通用户、管理员)来展示不同的界面。
6.电影分类:需要根据电影年份、类别等分类。
2.3 基本思路
2.3.1 网站UI的思路
UI,对于设计者来说,可以算是最简单的地方;但对于用户一个良好的用户界面非常重要,普通用户根本不会关心你的界面时怎么实现的,他所关心的是UI是否美丽、大方、好看。如果一个网站的UI不好看,本文转载自http://www.biyezuopin.vip/onews.asp?id=14551可能用户根本没有用下去的心思了。本网站使用Bootstrap作为UI框架,简单优美。
2.3.2 获取资源的思路
通过豆瓣电影API https://developers.douban.com/wiki/?title=movie_v2 ,制定合适的抓取策略,获得所需要的资源。
2.3.3 权限控制思路
网站分为管理员和前台用户,必须得根据权限来展示不同的界面和功能。可以利用Java注解来实现。注解可以看成是一个接口,注解实例就是一个实现了该接口的动态代理类。注解大多是用做对某个类、方法、字段进行说明,标识的。以便在程序运行期间我们通 过反射获得该字段或方法的注解的实例,来决定该做些什么处理或不该进行什么处理。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84package me.veryyoung.movie.web; import me.veryyoung.movie.entity.User; import me.veryyoung.movie.security.AdminRequired; import me.veryyoung.movie.security.FreeAccess; import me.veryyoung.movie.security.LoginRequired; import me.veryyoung.movie.utils.ContextUtils; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; /** * Created by veryyoung on 2015/4/28. */ public class AuthenticationFilter extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HandlerMethod method = (HandlerMethod) handler; FreeAccess freeAccess = method.getMethodAnnotation(FreeAccess.class); if (freeAccess != null) { return true; } boolean adminRequired = AnnotationUtils.findAnnotation(method.getBean().getClass(), AdminRequired.class) != null || method.getMethodAnnotation(AdminRequired.class) != null; boolean loginRequired = AnnotationUtils.findAnnotation(method.getBean().getClass(), LoginRequired.class) != null || method.getMethodAnnotation(LoginRequired.class) != null || adminRequired; if (loginRequired && !checkLogin(request)) { String url = request.getRequestURI(); String queryString = request.getQueryString(); if (StringUtils.isNotEmpty(queryString)) { url = url + "?" + queryString; } url = new String(Base64.encodeBase64(url.getBytes())); url = URLEncoder.encode(url); //如果是ajax请求响应头会有,x-requested-with if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { response.setHeader("sessionStatus", "timeout");//在响应头设置session状态 return false; } response.setStatus(401); String redirectUrl = "/login?redirect=" + url; response.sendRedirect(redirectUrl); return false; } if (adminRequired && !checkAdmin(request)) { response.setStatus(403); response.sendRedirect("/403"); return false; } return true; } public boolean checkLogin(HttpServletRequest request) { return ContextUtils.getSessionUtils(request).getUser() != null; } public boolean checkAdmin(HttpServletRequest request) { User user = ContextUtils.getSessionUtils(request).getUser(); if (user == null) { return false; } else { return user.isAdmin(); } } }
最后
以上就是炙热老师最近收集整理的关于基于SSM和Boostrap实现的电影评论网站设计的全部内容,更多相关基于SSM和Boostrap实现内容请搜索靠谱客的其他文章。
发表评论 取消回复