临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给在家介绍一篇基于JavaWeb的电影网站的设计与实现。
电影网站自助购票服务平台针对广大影视观众和影视剧院的需求而设计,由于用户范围较大,就要求系统要有友好的用户界面。用户可以在 WEB 端查看电影的简介,了解大众点评。根据个人需求购票选择影院场次位置。
后端管理员监控整个网站数据和运转。为了考虑到网站信息安全性,所有进入系统的用户需要登录,如果没有账号,则需要先注册一个本网站的账号,注册完成后返回登录页面,输入自己的账号即可登录。之后可以查看个人订单信息、修改个人信息、查看电影介绍以及放映场次并进行选择购买,并选择场次和影院的座位并支付。
首页模块、游客登录注册、电影检索详情查看、影票购买选座以及影视作品的评价。
登录注册界面:
系统中用到了10张表,针对每个表都进行了设计,下面对部分核心表进行汇总罗列展示。
(1)用户信息表
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
if("findMovieById".equals(method)){
findMovieById(req,resp);
}else if("findAllMovies".equals(method)){
findAllMovies(req,resp);
}else if("findAllMoviesBack".equals(method)){
findAllMoviesBack(req,resp);
}else if("findMoviesByName".equals(method)){
findMoviesByName(req,resp);
}else if("findMoviesByType".equals(method)){
findMoviesByType(req,resp);
}else if("sortAllMovies".equals(method)){
sortAllMovies(req,resp);
}else if("deleteMovie".equals(method)){
deleteMovie(req,resp);
}else{
try {
Movie movie = new Movie();
//所有表单非文件类型的集合
Map<String,Object> param = new HashMap<String,Object>();
//创建一个解析器工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
//解析请求,将表单中每个输入项封装成一个FileItem对象
List<FileItem> fileItems = upload.parseRequest(req);
Boolean isFile =false;
for (FileItem fileItem : fileItems) {
//判断输入的类型是 普通输入项 还是文件
if (!fileItem.isFormField()) {
//上传的是文件,获得文件上传字段中的文件名
//注意IE或FireFox中获取的文件名是不一样的,IE中是绝对路径,FireFox中只是文件名
String fileName = fileItem.getName();
System.out.println(fileName);
//Substring是字符串截取,返回值是一个截取后的字符串
//lastIndexOf(".")是从右向左查,获取.之后的字符串
String ext = fileName.substring(fileName.lastIndexOf("."));
//UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法, UUID的唯一缺陷在于生成的结果串会比较长
String name = UUID.randomUUID()+ext;
//将FileItem对象中保存的主体内容保存到某个指定的文件中
String path =req.getRealPath("/file") + "/upload/head/" + name;
File file = new File(path);
String filePath = "/file/upload/head/" + name;
movie.setMovie_picture(filePath);
fileItem.write(file);
isFile = true;
}else{
param.put(fileItem.getFieldName(), fileItem.getString("utf-8"));//如果你页面编码是utf-8的
}
}
movie.setMovie_cn_name(param.get("movie_cn_name") == null?"":param.get("movie_cn_name").toString());
movie.setMovie_fg_name(param.get("movie_fg_name") == null?"":param.get("movie_fg_name").toString());
movie.setMovie_actor(param.get("movie_actor") == null?"":param.get("movie_actor").toString());
movie.setMovie_director(param.get("movie_director") == null?"":param.get("movie_director").toString());
movie.setMovie_detail(param.get("movie_detail") == null?"":param.get("movie_detail").toString());
movie.setMovie_duration(param.get("movie_duration") == null?"":param.get("movie_duration").toString());
movie.setMovie_type(param.get("movie_type") == null?"":param.get("movie_type").toString());
movie.setMovie_country(param.get("movie_country") == null?"":param.get("movie_country").toString());
String movie_releaseDate = param.get("movie_releaseDate") == null?"":param.get("movie_releaseDate").toString();
if(!"".equals(movie_releaseDate)){
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(movie_releaseDate);
movie.setReleaseDate(date);
}
resp.setContentType("text/json; charset=utf-8"); // 设置response的编码及格式
PrintWriter out = resp.getWriter();
Map<String,Object> map = new HashMap<>();
//新增电影
if("addMovie".equals(param.get("method").toString())){
movie.setMovie_state(1);
Integer rs = movieService.addMovie(movie);
if(rs > 0) {
map.put("code", 0);
map.put("msg", "添加成功~");
}else {
map.put("code", 200);
map.put("msg", "添加失败~");
}
}else{//更新电影
movie.setMovie_id(Long.valueOf(param.get("movie_id").toString()));
if(!isFile){
Movie oldMovie = this.movieService.findMovieById(movie.getMovie_id());
movie.setMovie_picture(oldMovie.getMovie_picture());
}
Integer rs = movieService.updateMovie(movie);
if(rs > 0) {
map.put("code", 0);
map.put("msg", "修改成功~");
}else {
map.put("code", 200);
map.put("msg", "修改失败~");
}
}
String resJSON = JSON.toJSONString(map);
out.print(resJSON); // 输出
} catch (Exception e) {
e.printStackTrace();
}
}
// 重定向
//resp.sendRedirect("product_list");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
private void findAllMoviesBack(HttpServletRequest req, HttpServletResponse resp) throws IOException{
Integer page = req.getParameter("page") == null?1:Integer.valueOf(req.getParameter("page"));
Integer limit = req.getParameter("limit") == null?10:Integer.valueOf(req.getParameter("limit"));
List<Movie> list = movieService.findAllMoviesPage(1,page,limit);
resp.setContentType("text/json; charset=utf-8"); // 设置response的编码及格式
PrintWriter out = resp.getWriter();
Map<String,Object> map = new HashMap<>();
map.put("code", 0);
map.put("count", movieService.findAllMovies(1).size());
map.put("data", list);
String resJSON = JSON.toJSONString(map);
out.print(resJSON); // 输出
}
private void findAllMovies(HttpServletRequest req, HttpServletResponse resp) throws IOException{
List<Movie> list = movieService.findAllMovies(1);
List<Movie> offList = movieService.sortMovieByScore();
String type[] = {"喜剧","动作","爱情","动画","科幻","惊悚","冒险","犯罪","悬疑"};
ArrayList<Object> typeArr = new ArrayList<Object>();
for(int i = 0;i < type.length;i++) {
List<Movie> movieList = this.movieService.findMoviesLikeType("",type[i],"","","");
float boxOffice = 0;
for(int j = 0; j < movieList.size();j++) {
boxOffice += movieList.get(j).getMovie_boxOffice();
}
JSONObject typeJson = new JSONObject();
typeJson.put(type[i], boxOffice);
typeArr.add(typeJson);
}
resp.setContentType("text/json; charset=utf-8"); // 设置response的编码及格式
PrintWriter out = resp.getWriter();
Map<String,Object> map = new HashMap<>();
map.put("code", 0);
map.put("count", list.size());
map.put("data", list);
map.put("sort", offList);
map.put("type", typeArr);
String resJSON = JSON.toJSONString(map);
out.print(resJSON); // 输出
}
系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.5版本以上版本数据库,创建数据库并执行脚本创建表;
在Eclipse中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件
1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:SSM
此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。
开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、CSS、SSM
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
微信扫下方二维码关注公众号,经常分享一些技术上的理解文章。