精华内容
下载资源
问答
  • web期末大作业论文

    2019-01-09 14:46:53
    web期末大作业,文档形式,内附详细代码和结果显示。移动WEB端开发
  • web期末大作业,网页
  • web期末大作业,网页设计及网页制作
  • web期末大作业,网页设计及网页制作
  • web期末大作业,网页制作,网页设计
  • web期末大作业,网页设计及网页制作
  • web期末大作业,网页制作及网页设计
  • web期末大作业网页设计
  • web期末大作业,网页设计,网页制作
  • web期末大作业,网页设计,网页制作
  • web期末大作业,网页设计
  • web期末大作业,网页设计,网页制作
  • web期末大作业,网页设计及网页制作
  • 啊啊啊啊啊啊这web期末大作业太折磨人了
  • 可以借鉴或直接使用
  • Web前端开发技术期末大作业,有些地方需要改动请自行修改
  • 内有程序源码,数据库,实验报告内有程序源码,适合JAVA WEB,数据库,多媒体大作业
  • 大一上金老师的前端开发技术做的大作业就是阴阳师主题了,大三的WEB开发还是阴阳师主题,真是不忘初心呢(虽然已经把阴阳师卸掉了) 开发环境 Eclipse jee 2019-12+Tomcat 9.0+MySQL 文件目录 看着很多,其实...


    拖了好久终于想起来把WEB的期末作业传上来,系统里面的所有图片素材都来自于阴阳师官网
    大一上金老师的前端开发技术做的大作业就是阴阳师主题了,大三的WEB开发还是阴阳师主题,真是不忘初心呢(虽然已经把阴阳师卸掉了)


    开发环境

    Eclipse jee 2019-12+Tomcat 9.0+MySQL
    其中JDK为1.8.0_241版本

    文件目录

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    看着很多,其实名字读起来很通顺的那些就是角色的名字,不占地儿。

    数据库

    先来讲讲数据库好了。总共有5个表。
    y_character就是放角色的一些信息,比如说拼音、稀有度、觉醒前的照片(后来发现觉醒前的照片可以直接用拼音+.png来引用,所以这个等于白写)等等;
    在这里插入图片描述
    y_news放新闻的标题、新闻的摘要和新闻的发布时间。
    在这里插入图片描述
    y_product是购物商城里的一些商品,包括商品的名字、价格和评论。
    在这里插入图片描述
    y_user这是用户登陆注册的用户名、密码、性别和生日等等。
    在这里插入图片描述
    y_mycart本来是想写购物车功能的,但是没时间写555.
    在这里插入图片描述

    网页展示

    在浏览器地址栏输入localhost:8080/yys/Index进入网页。
    首先是一个轮播图,有四张图片轮流播的这种效果,左下角是一个看板娘(因为可爱所以加进来的),金老师还说之前在博客上查资料就是这个小玩意挡着字了哈哈哈哈哈哈。
    在这里插入图片描述
    然后就是四个功能的入口了,日文翻译不标准的话也不要骂我是机翻的:>
    这四张图片倒是我自己设计的,但是素材依来自阴阳师官网(阴阳师不要告我拜托拜托)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    对了右边的茨球点击一下是可以返回顶部的。
    先来注册一下好啦。
    在这里插入图片描述
    这个是注册页面
    在这里插入图片描述

    如果验证码错误的话是会显示验证码错误的
    在这里插入图片描述
    注册成功后就会显示成功注册了。
    在这里插入图片描述
    点击去登录就跳转到登录页面。
    在这里插入图片描述
    登录成功之后就会跳转到首页,其中导航栏会显示用户名。
    在这里插入图片描述
    然后来看看抽卡部分。
    在这里插入图片描述
    点击抽卡之后,会出来一个旋转的魔法阵
    在这里插入图片描述
    就会跳转到随机的式神页面上
    在这里插入图片描述
    再抽一张
    在这里插入图片描述
    再抽一张
    在这里插入图片描述

    点击就可以跳转到详细的式神介绍页面。
    点击导航栏上的式神录就跳转到式神录的页面上。
    在这里插入图片描述
    总共十个式神,其中3个SSR,4个SR,3个R,稀有度的出率大大提升。
    点击一个不知火。
    在这里插入图片描述
    点击一下觉醒或者皮肤按钮就有不同的立绘。
    在这里插入图片描述下面是不知火的传记或者情报啥的。
    在这里插入图片描述
    可以看看可爱的山兔的多种皮肤。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    山兔的传记!
    在这里插入图片描述

    山兔的情报。
    在这里插入图片描述

    然后是商城。令人遗憾的是没做购物车的功能。
    在这里插入图片描述
    然后是新闻资讯。
    在这里插入图片描述
    然后就是一条联名的资讯。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    项目说明书

    详细功能说明

    在这里插入图片描述

    2.1.1. 注册子模块

    1. 用户进入阴阳师游戏系统后需要进行注册才能访问其他子模块;
    2. 在注册子模块中,用户需要输入用户ID、用户密码、用户生日、用户性别等基本信息;
    3. 在信息填写完毕后需要进行验证码验证;
    4. 当验证错误时,系统会提示是用户名或密码不合法还是验证码错误;
    5. 用户注册成功后跳转到注册成功页面提示进行下一步操作。

    2.1.2. 登录子模块

    1. 用户在登录子模块上需要输入用户ID和用户密码进行登录;
    2. 系统会结合验证码来提高安全系数;
    3. 当验证错误时,系统会提示是用户名或密码错误或者验证码错误;
    4. 用户登录后,跳转到首页,并且导航条中显示用户的ID名称。

    2.1.3. 抽卡子模块

    1. 用户可以点击抽卡页面上的抽卡按钮,此时会产生一个随机数,并和数据库y_character中的式神名称、式神拼音、式神等级等属性一起存储到会话中。
    2. 在属性存储到会话的过程中,会有一个魔法阵转动的等待效果;
    3. 魔法阵转动结束后会跳转到抽卡结果页面,而这个页面会读取会话中的属性用来引用式神图片、式神等级和文字。
    4. 页面会有一个按钮可以跳转到对应式神的介绍页面,让玩家对抽到的式神有更多的了解。

    2.1.4. 式神录子模块

    1. 在式神录模块中,会先显示式神的头像和名字;
    2. 用户点击式神的链接后会跳转到相应的式神介绍页面,在这个页面里有式神的在初始、觉醒、皮肤三个时期的不同状态图片,还有式神的传记文字,以及式神的战斗参数供玩家参考;

    2.1.5. 商城子模块

    1. 商城子模块一个有六种周边产品的界面,用户可以查看产品的信息,因为没有做完整个购买流程就不详细介绍了。

    2.1.6. 资讯子模块

    1. 在资讯子模块,用户可以看到阴阳师游戏系统的第一手消息,如系统更新、庆典活动等;
    2. 资讯子模块的列表采用了<c:forEach>标签,节省了复制相同页面并修改的时间。

    设计环境

    Eclipse jee 2019-12,photoshop,MySQL,Navicat Premium,Chrome,Visio,Tomcat 9.0, HelloFont等

    数据库设计

    数据库名称: yys
    本数据库共5张表,如下所示
    y_user:用户信息表
    y_character:式神信息表
    y_product:周边产品信息表
    y_mycart:购物车信息表
    y_news:新闻资讯信息表
    具体表结构及说明如下:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    使用的前端框架

    bootstrap v4,jquery v3

    JSP页面的说明

    在这里插入图片描述
    在这里插入图片描述

    心得体会

    这次大作业做的很艰难,一边是因为上课的时候没听太懂,对了想给老师提个建议,老师下次可以一边讲课一边开一下钉钉直播,如果课上没跟上的话还可以课下看看视频补回去,这样能更好理解。还有一个问题就是因为eclipse实在是太难用了,真的好奇怪,img文件夹里放的图片越多eclipse就越容易闪退,闪退就占了好长的时间。还有一个方面是Servlet有时候不能把别的复制一下再修改,不然不能往后台发送消息,我卡在这个地方很久,实在没办法才新建一个Servlet自己写,这样才能发送消息,下次应该试试IDEA。再就是我发现ajax的post方法下不能执行目标Servlet下的转发操作,后来就想到把数据传进session里进行共享,再用另一个servlet进行获取和转发。看起来很简单,但是卡我卡了很久,写的也很烦躁,不过还好坚持下去,用eclipse真的磨练意志。
    还有很多的时间花在了设计图片上,有些图片是我从阴阳师官网上扒下来,自己去做图片,虽然没有什么艺术细胞但是还是在设计上花了好多时间,感觉还挺充实的。


    github指路

    指路:https://github.com/skeptical5/yys/tree/master
    另外如果项目导入eclipse报错的话,可以参考一下@DistressRroke _chen的博客,之前导入老师的代码报错也用这个方法解决了,指路:https://blog.csdn.net/cms18374672699/article/details/83045754


    WEB大作业大概就是这样,感谢马哥在元旦开始就督促我写WEB,拖延症确实需要一个严厉的陪读嘎嘎嘎嘎,答完辩之后就去西湖玩了圈,那边真的好好玩哦。然后第二天去了趟灵隐寺嘿嘿。

    展开全文
  • 主要功能 作业整体采用MVC模式。 在登录模块中,使用过滤器和监听器对用户得登录进行监听和过滤,不允许用户进行二次登录。难点在于对用户得session进行处理,在用户进行二次登录后,利用登录名查询是否已经有过...

    主要功能

    作业整体采用MVC模式。

    在登录模块中,使用过滤器和监听器对用户得登录进行监听和过滤,不允许用户进行二次登录。难点在于对用户得session进行处理,在用户进行二次登录后,利用登录名查询是否已经有过session,此时将session失效。用户登录时,使用session添加用户名,此时监听器开始工作,根据事件监听器,首先获得是哪个在进行添加,如果是添加的用户名,就获取seesionID,以及用户登录名。然后利用UserBean中得map先是通过用户名查询sessionId,再利用sessionId查询session1。如果session1为空的话,表示用户没有登陆过,将seesion的相关信息存储起来;若已经登录,将后来登录的session直接失效,此时监听器完成工作。在服务器中判断该session是否为空,为空则传传递参数给过滤器,利用过滤器拦截住请求,返回到登录页面。

    在登出时也必须及时得将map中的session清空,以免在退出登录后,该用户再次进行登录时出现错误。

    在增删改查得功能模块中,将4个请求需要写在同一个servlet中,在请求发送给servlet时,传一个标志参数,在servlet里面进行判断,进行相应的操作。

    在整个项目中,使用过滤器对整个项目得编码方式设置为UTF-8。

    在更改电影的信息时,需要传递修改电影的id给服务器,再由服务器查询该电影得信息,并传递给更改得jsp页面,显示在输入框中。同时,用户在修改电影信息时,当新名字和旧名字相同,可以直接进行修改。当输入得名字和以前得名字不相同时,会通过新名字查询数据库中是否已经存在该名字得电影信息。如果不存在,可以直接进行修改操作;如果存在,会修改除电影名之外的信息,并且返回到修改页面。

    在添加电影信息名时,也不能出现已有得电影信息。先对输入得电影名进行查询,若存在则提示不能查询,并且跳到添加页面,否则可以插入电影信息。

    在访问授权页面时,未登录不可进行访问,使用过滤器获取是否登录得参数,没有登录,重定向到登录页面。账号信息不存在点击注册后进行登录。

    在访问数据时使用连接池,每当对数据库访问时,通过连接对象进行访问,并且关闭数据库。

    删除数据提示。

    能进行模糊查询。

    存在缺点

    数据库中的所有得属性得类型都是使用得char类型,与实际的不相符,在进行增删改查时也不能进行自增自己操作。在用户注册中对于用户得id没有进行识别。将用户的id设置为int并且能够自增。

    系统的功能还比较少,只能进行增删改查。登录,注册,登出

    界面简单。

    主要视图

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    mysql

    movie(不建议这样建)

    数据库这样建立不太好,建议自己建立个别的

    DROP TABLE IF EXISTS `movie`;
    CREATE TABLE `movie` (
      `ID` char(100) CHARACTER SET utf8 NOT NULL,
      `name` char(100) CHARACTER SET utf8 NOT NULL,
      `performer` char(100) CHARACTER SET utf8 DEFAULT NULL,
      `year` char(100) CHARACTER SET utf8 DEFAULT NULL,
      `type` char(100) CHARACTER SET utf8 DEFAULT NULL,
      `score` char(100) CHARACTER SET utf8 DEFAULT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    user(不建议这样建)

    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `username` char(100) NOT NULL,
      `password` char(100) NOT NULL,
      PRIMARY KEY (`username`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    jsp

    addMovie.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>添加新电影</title>
    <jsp:include page="head2.jsp"></jsp:include>
    <%String flag=(String)request.getAttribute("flagadd"); %>
    <script type="text/javascript">
    var flag=<%=flag %>;
    if("1"==flag)
    	{
    	alert("该电影名已被占用");
    	}
    </script>
    </head>
    <body>
    <center>
    <a href="showMovies.jsp" style="float: right">返回首页</a>
    <form action="CurdServlet" method="post">
    	&nbsp&nbsp&nbsp&nbsp请输入电影ID<input type="text" name="id"><br><br>
    	请输入电影名称:<input type="text" name="name" style="margin-right:60px"><br><br>
    	请输入电影主演:<input type="text" name="performer" style="margin-right:60px"><br><br>
    	&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    	请输入年份:<input type="text" name="year" style="margin-right:60px"><br><br>
    	请输入电影类型:<input type="text" name="type" style="margin-right:60px"><br><br>
    	请输入电影评分:<input type="text" name="score" style="margin-right:60px"><br><br>
    	<input type="hidden" name="flag" value="add">
    	<input type="hidden" name="flag1" value="add2">
    	<input type="submit" value="添加">
    </form>
    </center>
    </body>
    </html>
    

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <% 
    String flag=(String)request.getParameter("flagLogin");
    %>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>登录</title>
    <jsp:include page="head.jsp"></jsp:include>
    <%--当flag=1表示已经登录或未登录 --%>
    <script type="text/javascript">
    var flag='<%=flag %>';
    if("1"==flag)
    	{
    	alert("未登录或异地登录");
    	}
    </script>
    <title>登录</title>
    </head>
    <body>
    <center>
    <form action="login" method="post" >
    用户名:<input type="text" name="username">
    <br><br>
    &nbsp&nbsp&nbsp
    密码:<input type="password" name="password"><br><br>
    <input type="hidden" name="Loginflag" value="login">
    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <input type="submit" value="登录" >
    </form>
    <br><br>
    <a href="login?Loginflag=register&Loginflag1=register1" style="margin-left:50px">点此注册</a>
    </center>
    <% 
    String name=request.getParameter("username");
    //将登录名字放到session里面
    session.setAttribute("loginUser", name);
    %>
    </body>
    </html>
    

    login.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%--获取到输入的值,重定向到LoginServlet.jsp --%>
    <%
    String name=request.getParameter("username");
    //将登录名字放到session里面
    session.setAttribute("loginUser", name);
    //response.sendRedirect(request.getContextPath()+"/LoginServlet");
    request.getRequestDispatcher(request.getContextPath()+"LoginServlet").forward(request,response);
    System.out.println("lohinjsp");
    %>
    </body>
    </html>
    

    register.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>注册</title>
    <%String flagLog=(String)session.getAttribute("flagLog");%>
    <script type="text/javascript">
        var flag='<%=flagLog %>';
        if("1"==flag)
        	{
        	alert("该用户名已被占用");
        	}
    </script>
    </head>
    <body>
    <jsp:include page="head2.jsp"></jsp:include>
    <%
    %>
    <center>
    <form action="login" method="post" >
    请输入用户名:<input type="text" name="username"><br><br>
    &nbsp&nbsp请输入密码:<input type="password" name="password"><br><br>
    <input type="hidden" name="Loginflag1" value="register2">
    <input type="hidden" name="Loginflag" value="register">
    <input type="submit" value="注册">
    </form>
    <br><br>
    <a href="index.jsp" style="margin-left:10px" >点此登录</a>
    </center>
    </body>
    </html>
    

    showMovies.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="java.util.*,caztc.jk.Lj.entity.*"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>查询结果</title>
    <jsp:include page="head2.jsp"></jsp:include>
    </head>
    <body>
    <script type="text/javascript">
        function check() {
            if (confirm("确认要删除?"))
                return true;
             else
            return false;
        }
    </script>
    <center>
    <%--隐藏一个flag:1表示查询  放到一个sevlet上面 --%>
    <form action="CurdServlet" method="post">
    请输入需要查询的电影名:&nbsp&nbsp&nbsp&nbsp<input type="text" name="message">
    &nbsp&nbsp&nbsp&nbsp
    <input type="hidden" name="flag" value="select">
    <input type="submit" value="查询">
    </form>
    </center>
    <br><br>
    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <form action="CurdServlet" method="post" style="float:left;">
    <input type="hidden" name="flag" value="add">
    <input type="hidden" name="flag1" value="add1">
    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <input type="submit" value="点此添加新电影">
    </form>
    <form action="login" method="post" style="float:right;">
    <input type="submit" value="退出登录">
    <input type="hidden" name="Loginflag" value="logout">
    <input type="hidden" name="username" value=<%=session.getAttribute("username") %>>
    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    </form>
    <center>
    <% 
    	List<MovieBean> movies=(List<MovieBean>)request.getAttribute("movies");
    	if(movies!=null)
    	{
    %>
    <br>
    <table border=1 width=90%>
    	<tr align="center">
    		<td>电影编号</td>
    		<td>电影名</td>
    		<td>主演</td>
    		<td>类型</td>
    		<td>年份</td>
    		<td>评分</td>
    		<td>操作</td>
    	</tr>
    	<%
    	for(MovieBean m1:movies){
    	%>
    	<tr>
    		<td><%=m1.getID() %></td>
    		<td><%=m1.getName() %></td>
    		<td><%=m1.getPerformer() %></td>
    		<td><%=m1.getType() %></td>
    		<td><%=m1.getYear() %></td>
    		<td><%=m1.getScore() %></td>
    		<td>
    		<%--删除提示 --%>
    		<a onclick="return check()" href="CurdServlet?flag=del&id=<%=m1.getID() %>" method="post">delete</a>
    		<a href="CurdServlet?flag=update&id=<%=m1.getID() %>&flag1=update1" method="post">update</a>
    		</td>
    	</tr>
    	<%
    	}
    }
    %>
    </table>
    </center>
    </body>
    </html>
    

    updateMovie.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="caztc.jk.Lj.entity.MovieBean"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>编辑信息</title>
    <jsp:include page="head2.jsp"></jsp:include>
    </head>
    <body>
    <%String flag=(String)request.getAttribute("flagUpdate"); %>
    <script type="text/javascript">
    var flag='<%=flag %>';
    if("1"==flag)
    	{
    	alert("该电影名已被占用");
    	}
    </script>
    <% 
    MovieBean movie=(MovieBean)session.getAttribute("movies");
    %>
    <center>
    <a href="showMovies.jsp" style="float: right">返回首页</a>
    <form action="CurdServlet" method="post" >
    	<input type="hidden" name="id" value=<%=movie.getID() %>>
    	&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    	&nbsp&nbsp&nbsp&nbsp请输入电影名称:<input type="text" name="newname" value=<%=movie.getName()%>><br><br>
    	<input type="hidden" name="oldname" value=<%=movie.getName() %>>
    	请输入电影主演:<input type="text" name="performer" value=<%=movie.getPerformer() %>><br><br>
    	&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    	请输入年份:<input type="text" name="year" value=<%=movie.getYear() %>><br><br>
    	请输入电影类型:<input type="text" name="type" value=<%=movie.getType() %>><br><br>
    	请输入电影评分:<input type="text" name="score" value=<%=movie.getScore() %>><br><br>
    	<input type="hidden" name="flag" value="update">
    	<input type="hidden" name="flag1" value="update2">
    	<input type="submit" value="更改">
    </form>
    </center>
    </body>
    </html>
    

    head.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>插入部分</title>
    </head>
    <body  bgcolor=pink>
    <center>
    <div class="div1">
    </div>
    <h1>欢迎登录电影影片系统</h1>
    
    <hr color=Aliceblue >
    </center>
    </body>
    </html>
    

    head2.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>插入部分</title>
    </head>
    <body  bgcolor=pink>
    
    <center>
    <div class="div1">
    <h1>欢迎使用电影影片管理系统</h1>
    </div>
    <hr color=Aliceblue >
    </center>
    </body>
    </html>
    

    Dao

    MovieDao.java

    package caztc.jk.Lj.Dao;
    import caztc.jk.Lj.entity.MovieBean;
    import caztc.jk.Lj.entity.UserBean;
    import java.util.*;
    public interface MovieDao {
    	//存储从数据库中获取的所有的电影信息
    	public List<MovieBean> listAllMovies(String message);
    	//通过传过来的删除相应得影片
    	public int deleteMovie(String id);
    	//添加影片
    	public int addMovie(MovieBean movieBean);
    	//更新影片信息
    	public int updateMovie(MovieBean movieBean);
    	//通过影片Id查找影片信息
    	public MovieBean selectMovieById(String id);
    	//通过影片名字查找该影片是否存在
    	public Boolean selectMovieByname(String name);
    	//检查账号密码是否正确
    	public boolean checkLogin(UserBean user);
    	//检查用户名是否已经存在
    	public boolean checkByUsername(String username);
    	//插入用户信息
    	public int addUser(UserBean user);
    }
    
    

    MovieDaoImpl.java

    package caztc.jk.Lj.Dao;
    import java.sql.*;
    import java.util.*;
    import caztc.jk.Lj.dbutils.DBHelper;
    import caztc.jk.Lj.entity.MovieBean;
    import caztc.jk.Lj.entity.UserBean;
    public class MovieDaoImpl implements MovieDao {
    	
    	//插入用户信息
    	public int addUser(UserBean user) {
    		Connection con=DBHelper.getConnection();
    		String sql="insert into user values(?,?)";
    		PreparedStatement ps;
    		try {
    			ps = con.prepareStatement(sql);
    			ps.setString(1,user.getUsername());
    			ps.setString(2,user.getPassword());
    			int n=ps.executeUpdate();
    			DBHelper.releseaConnection();
    			return n;
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		DBHelper.releseaConnection();
    		return 0;
    	}
    	//检查用户名是否已经存在
    	public boolean checkByUsername(String username) {
    		Connection con=DBHelper.getConnection();
    		String sql;
    		PreparedStatement ps;
    		sql="select * from user where username=?";
    			try {
    				//处理从数据库获取到得信息
    				ps = con.prepareStatement(sql);
    				ps.setString(1,username);
    				ResultSet rs=ps.executeQuery();	
    				//下一条有数据,用户名已经存在
    				while(rs.next())
    				{	DBHelper.releseaConnection();
    					return true;
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		DBHelper.releseaConnection();
    		return false;
    	}
    	//用户是否存在,密码是否正确
    	public boolean checkLogin(UserBean user) {
    		Connection con=DBHelper.getConnection();
    		String sql;
    		PreparedStatement ps;
    		sql="select * from user where username=? and password=?";
    		String username=user.getUsername();
    		String password=user.getPassword();
    			try {
    				//处理从数据库获取到得信息
    				ps = con.prepareStatement(sql);
    				ps.setString(1,username);
    				ps.setString(2,password);
    				ResultSet rs=ps.executeQuery();	
    				//下一条有数据,账号密码正确
    				while(rs.next())
    				{	DBHelper.releseaConnection();
    					return true;
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		DBHelper.releseaConnection();
    		return false;
    	}
    	//通过Id查询电影
    	public MovieBean selectMovieById(String id) {
    			Connection con=DBHelper.getConnection();
    			String sql;
    			PreparedStatement ps;
    			sql="select * from movie where ID=?";
    			MovieBean movie1=null;
    				try {
    					//处理从数据库获取到得信息
    					ps = con.prepareStatement(sql);
    					ps.setString(1,id);
    					ResultSet rs=ps.executeQuery();
    					//rs最先指向得是属性,下一条才是数据
    					rs.next();
    						movie1=new MovieBean();
    						movie1.setID(rs.getString("ID"));
    						movie1.setName(rs.getString("name"));
    						movie1.setPerformer(rs.getString("performer"));
    						movie1.setScore(rs.getString("score"));
    						movie1.setType(rs.getString("type"));
    						movie1.setYear(rs.getString("year"));
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    		DBHelper.releseaConnection();
    		return movie1;
    	}
    	//查询所有
    	public List<MovieBean> listAllMovies(String message) {
    		//建立一个电影列表
    		List<MovieBean> movies=new ArrayList<MovieBean>();
    		//获取连接对象
    		Connection con=DBHelper.getConnection();
    		//写sql语句
    		String sql;
    		PreparedStatement ps;
    		sql="select * from movie where name Like ?";
    		MovieBean movie1=null;
    		try {
    			//处理从数据库获取到得信息
    			ps = con.prepareStatement(sql);
    			ps.setString(1, message);
    			ResultSet rs=ps.executeQuery();
    			while(rs.next())
    			{ // System.out.println("**************************");
    				movie1=new MovieBean();
    				movie1.setID(rs.getString("ID"));
    				movie1.setName(rs.getString("name"));
    				movie1.setPerformer(rs.getString("performer"));
    				movie1.setScore(rs.getString("score"));
    				movie1.setType(rs.getString("type"));
    				movie1.setYear(rs.getString("year"));
    				movies.add(movie1);
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		DBHelper.releseaConnection();
    		return movies;
    	}
    	//删除
    	public int deleteMovie(String id) {
    		List<MovieBean> movies=new ArrayList<MovieBean>();
    				Connection con=DBHelper.getConnection();
    				String sql;
    				PreparedStatement ps;
    				sql="delete from movie where ID=?";
    				try {
    					//处理从数据库获取到得信息
    					ps = con.prepareStatement(sql);
    					ps.setString(1,id);
    					int n=ps.executeUpdate();
    					DBHelper.releseaConnection();
    					return n;
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    		DBHelper.releseaConnection();
    		return 0;
    	}
    	//添加
    	public int addMovie(MovieBean movieBean) {
    		Connection con=DBHelper.getConnection();
    		String sql="insert into movie values(?,?,?,?,?,?)";
    		PreparedStatement ps;
    		try {
    			ps = con.prepareStatement(sql);
    			ps.setString(1,movieBean.getID());
    			ps.setString(2, movieBean.getName());
    			ps.setString(3, movieBean.getPerformer());
    			ps.setString(4, movieBean.getYear());
    			ps.setString(5, movieBean.getType());
    			ps.setString(6, movieBean.getScore());
    			int n=ps.executeUpdate();
    			DBHelper.releseaConnection();
    			return n;
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		DBHelper.releseaConnection();
    		return 0;
    	}
    	//通过电影名字查是否存在已经有的name
    	public Boolean selectMovieByname(String newname) {
    		Connection con=DBHelper.getConnection();
    		String sql;
    		PreparedStatement ps;
    		sql="select * from movie where name=?";
    		MovieBean movie1=null;
    			try {
    				//处理从数据库获取到得信息
    				ps = con.prepareStatement(sql);
    				ps.setString(1,newname);
    				ResultSet rs=ps.executeQuery();
    				//rs最先指向得是属性,下一条才是数据,有数据返回true代表名字已经有了
    				while(rs.next())
    				{
    					DBHelper.releseaConnection();
    					return true;
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		DBHelper.releseaConnection();
    		return false;
    	}
    	//修改
    	public int updateMovie(MovieBean movieBean) {
    		Connection con=DBHelper.getConnection();
    		String sql="update movie set name=?,performer=?,year=?,type=?,score=? where ID=?";
    		PreparedStatement ps;
    		try {
    			ps = con.prepareStatement(sql);
    			ps.setString(1, movieBean.getName());
    			ps.setString(2, movieBean.getPerformer());
    			ps.setString(3, movieBean.getYear());
    			ps.setString(4, movieBean.getType());
    			ps.setString(5, movieBean.getScore());
    			ps.setString(6,movieBean.getID());
    			int n=ps.executeUpdate();
    			DBHelper.releseaConnection();
    			return n;
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		DBHelper.releseaConnection();
    		return 0;
    	}
    	
    }
    
    

    dbutils

    DBHelper.java

    package caztc.jk.Lj.dbutils;
    import java.sql.*;
    public class DBHelper {
    	//连接对象
    	private static Connection con=null;
    	//获取一个连接对象
    	public static Connection getConnection() {	
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			con= DriverManager.getConnection("jdbc:mysql://localhost:3306/javaweb?useUnicode=true&characterEncoding=UTF-8", "root", "123456");
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}	
    		return con;
    	}
    	//关闭数据库
    	public static void releseaConnection() {
    		try {
    			if(con!=null)
    				con.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    

    entity

    MovieBean.java

    package caztc.jk.Lj.entity;
    public class MovieBean {
    	private String iD;
    	private String name;
    	private String performer;
    	private String year;
    	private String type;
    	private String score;
    	public MovieBean(String iD, String name, String performer, String year, String type, String score) {
    		super();
    		this.iD = iD;
    		this.name = name;
    		this.performer = performer;
    		this.year = year;
    		this.type = type;
    		this.score = score;
    	}
    	public MovieBean() {
    	}
    	public String getID() {
    		return iD;
    	}
    	public void setID(String iD) {
    		this.iD = iD;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getPerformer() {
    		return performer;
    	}
    	public void setPerformer(String performer) {
    		this.performer = performer;
    	}
    	public String getYear() {
    		return year;
    	}
    	public void setYear(String year) {
    		this.year = year;
    	}
    	public String getType() {
    		return type;
    	}
    	public void setType(String type) {
    		this.type = type;
    	}
    	public String getScore() {
    		return score;
    	}
    	public void setScore(String score) {
    		this.score = score;
    	}
    	
    }
    
    

    UserBean.java

    package caztc.jk.Lj.entity;
    import java.util.HashMap;
    import java.util.Map;
    import javax.servlet.http.HttpSession;
    public class UserBean {
    	//用于存放登录的数据
    		private String username;
    		private String password;
    		private static UserBean instance=new UserBean();
    		//存放用户对应sessionId
    		private Map<String,String> loginUserSession=new HashMap<String,String>();
    		//存放sessionId对应的session
    		private Map<String,HttpSession> loginSession=new HashMap<String,HttpSession>();
    		public UserBean() {
    		}
    		public static UserBean getInstance() {
    			return instance;
    		}
    		public String getUsername() {
    			return username;
    		}
    		public void setUsername(String username) {
    			username = username;
    		}
    		public String getPassword() {
    			return password;
    		}
    		public void setPassword(String password) {
    			this.password = password;
    		}
    		public UserBean(String username, String password) {
    			super();
    			this.username = username;
    			this.password = password;
    		}
    		//通过传进来得username在Map<String,String>中找到与之对应得sessionId
    		public String getSessionIdByUsername(String username) {
    			return loginUserSession.get(username);
    		}
    		//通过传进来得SessionId获取session(即获得了与用户相对应得session)
    		public HttpSession getSessionBySessionId(String sessionId) {
    			return loginSession.get(sessionId);
    		}
    		//存放用户——sessionId
    		public void setSessionIdByUserName(String username,String sessionId) {
    			loginUserSession.put(username, sessionId);
    		}
    		//存放SessionId-session
    		public void setSessionBySessionId(String sessionId,HttpSession session) {
    			loginSession.put(sessionId,session);
    		}
    }
    
    
    

    filter

    EncodingFilter.java

    package caztc.jk.Lj.filter;
    
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class EncodingFilter implements Filter {
    	private FilterConfig config;
        public EncodingFilter() {
        }
    	public void destroy() {
    	}
    	public void doFilter(ServletRequest request, ServletResponse reponse, FilterChain chain)
    			throws IOException, ServletException {
    		request.setCharacterEncoding(config.getInitParameter("charSet"));
    		chain.doFilter(request, reponse);
    	}
    	public void init(FilterConfig config) throws ServletException {
    		this.config=config;
    	}
    
    }
    
    

    LoginFilter.java

    package caztc.jk.Lj.filter;
    
    import java.io.IOException;
    import javax.servlet.DispatcherType;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import caztc.jk.Lj.entity.UserBean;
    
    @WebFilter(dispatcherTypes = {DispatcherType.REQUEST }
    					, urlPatterns = { "/showMovies.jsp" })
    public class LoginFilter implements Filter {
        public LoginFilter() {
        }
    	public void destroy() {
    	}
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
    			throws IOException, ServletException {
    		System.out.println("过滤器工作");
    		HttpServletRequest hrequest=(HttpServletRequest)request;
    		HttpServletResponse hresponse=(HttpServletResponse)response;
    		//获得请求登录的名字,在login.jsp中已经放到了session里面
    		String loginUser=(String)hrequest.getSession().getAttribute("loginUser");
    		String sessionId=UserBean.getInstance().getSessionIdByUsername(loginUser);
    		HttpSession session=UserBean.getInstance().getSessionBySessionId(sessionId);
    		//如果登录得名字获得得是空,就说明没有登录,flag=1,重定向到登录页面
    		//HttpSession session=requ
    		if(loginUser==null||session==null) {
    		System.out.println("333");
    			//request.getRequestDispatcher("index.jsp?flagLogin=1");
    			hresponse.sendRedirect(hrequest.getContextPath()+"/index.jsp?flagLogin=1");
    		}else {
    			//有登陆
    			chain.doFilter(request,response);
    		}
    	}
    
    	public void init(FilterConfig fConfig) throws ServletException {
    		
    	}
    
    }
    
    

    Listener

    LoginSessionListener.java

    package caztc.jk.Lj.Listener;
    import javax.servlet.ServletRequest;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    import caztc.jk.Lj.entity.UserBean;
    @WebListener
    public class LoginSessionListener implements HttpSessionAttributeListener {
    	private static final String Login_User="loginUser";
        public LoginSessionListener() {
        }
        public void attributeAdded(HttpSessionBindingEvent hsbe) {
        	System.out.println("监听器工作");
    		//监听LoginUser这个属性是否有添加(login.jsp里面写的,监听这个)
    		//监听是监听得所有得属性值、获取添加得属性值
    		String attrName=hsbe.getName();
    		//如果获取到得属性值就是LoginUser那么就表示有用户登录
    		if(Login_User.equals(attrName)) {
    			System.out.println("jianting");
    			//获取登录名
    			String attrVal=(String)hsbe.getValue();
    			//获取session
    			HttpSession session=hsbe.getSession();
    			//通过session获取到sessionId
    			String sessionId=session.getId();
    			System.out.println(sessionId);
    			//通过登录名获取到sessionId
    			String sessionId2=UserBean.getInstance().getSessionIdByUsername(attrVal);
    			if(null==sessionId2) {
    				//未登录过
    				//没有登录得话,就把用户名——sessionId存进Map<Stirng,String>去
    				UserBean.getInstance().setSessionIdByUserName(attrVal, sessionId);
    				//sessionId-session存到Map<String,HttpSession>
    				UserBean.getInstance().setSessionBySessionId(sessionId, session);
    			}else {
    				//能够通过SessionId获取到session得话,表示登录过了
    				//清除该session
    				//System.out.println("重复登录");
    				//HttpSession session2=UserBean.getInstance().getSessionBySessionId(sessionId2);
    				//session2.invalidate();
    				//UserBean.getInstance().setSessionBySessionId(sessionId2,null);
    				session.invalidate();
    			}	
    		}
    	}
        public void attributeRemoved(HttpSessionBindingEvent arg0)  { 
            
        }
        public void attributeReplaced(HttpSessionBindingEvent arg0)  { 
            
        }
    	
    }
    
    

    servlets

    CurdServlet.java

    package caztc.jk.Lj.servlets;
    import java.io.IOException;
    import java.util.List;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import caztc.jk.Lj.Dao.MovieDao;
    import caztc.jk.Lj.Dao.MovieDaoImpl;
    import caztc.jk.Lj.entity.MovieBean;
    @WebServlet("/CurdServlet")
    public class CurdServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
        public CurdServlet() {
            super();
        }
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		doPost(request,response);
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		String flag=request.getParameter("flag");
    		MovieDao m1=new MovieDaoImpl();
    		String newname=request.getParameter("newname");
    		String oldname=request.getParameter("oldname");
    		String id=request.getParameter("id");
    		String performer=request.getParameter("performer");
    		String year=request.getParameter("year");
    		String type=request.getParameter("type");
    		String score=request.getParameter("score");
    		String name=request.getParameter("name");
    	//为select则是模糊查询
    	if(flag.equals("select"))
    	{
    		String message=request.getParameter("message");
    		if(message.equals(""))
    			message="%";
    		else
    			message="%"+message+"%";
    		//用Dao获取所有电影信息
    		List<MovieBean> movies=m1.listAllMovies(message);
    		request.setAttribute("movies", movies);
    		request.getRequestDispatcher("showMovies.jsp").forward(request, response);	
    	}
    	else if(flag.equals("del"))
    	{
    		//用Dao获取所有电影信息
    		int n=m1.deleteMovie(id);
    		if(n==1)
    			request.getRequestDispatcher("showMovies.jsp").forward(request, response);	
    	}
    	else if(flag.equals("update"))
    	{	//update
    		String flag1=request.getParameter("flag1");
    		if(!flag1.equals("update1"))
    		{
    			//填写表格之后
    			MovieBean movie2=new MovieBean(id,newname,performer,year,type,score);
    			if(newname.equals(oldname)) {
    				//不修改电影名字的情况下进行修改
    				int n=m1.updateMovie(movie2);
    				if(n==1)
    				{
    					request.getSession(true).setAttribute("movies", movie2);
    					request.getRequestDispatcher("showMovies.jsp").forward(request, response);	
    				}
    			}
    			else {
    				//不相等得情况下,判断数据库中是否已经有了这个名字
    				if(m1.selectMovieByname(newname))
    				{//改名字存在了
    					MovieBean movie3=new MovieBean(id,oldname,performer,year,type,score);
    					int n=m1.updateMovie(movie3);
    					if(n==1)
    					{
    						request.setAttribute("flagUpdate","1");
    						request.getSession(true).setAttribute("movies", movie3);
    						request.getRequestDispatcher("updateMovie.jsp").forward(request, response);	
    					}
    				}
    				else{
    					//不存在可以修改
    					int n=m1.updateMovie(movie2);
    					if(n==1)
    					{
    						request.getSession(true).setAttribute("movies", movie2);
    						request.getRequestDispatcher("showMovies.jsp").forward(request, response);	
    					}	
    				}
    				}
    			}
    		else {
    			//没填写过表格
    			MovieBean movie=m1.selectMovieById(id);
    			request.getSession(true).setAttribute("movies", movie);
    			request.getRequestDispatcher("updateMovie.jsp").forward(request, response);
    		}
    	}
    	else if(flag.equals("add"))
    	{	//flag1为add2表示已经填写了表单,add1则重定向到addMovie.jsp添加信息
    		String flag1=request.getParameter("flag1");
    		if(flag1.equals("add1")) {
    			//request.setAttribute("flagadd","2");
    			request.getRequestDispatcher("addMovie.jsp").forward(request, response);	
    		}
    		else {
    			MovieBean m4=new MovieBean(id,name,performer,year,type,score);
    			if(!m1.selectMovieByname(name)) {
    				MovieDao m2=new MovieDaoImpl();
    				int n=m2.addMovie(m4);
    				if(n==1)
    					request.getRequestDispatcher("showMovies.jsp").forward(request, response);	
    			}
    			else {
    				request.setAttribute("flagadd","1");
    				request.getRequestDispatcher("addMovie.jsp").forward(request, response);
    			}
    		}
    	}
    	}
    }
    
    

    LoginSerlet.java

    package caztc.jk.Lj.servlets;
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import caztc.jk.Lj.Dao.MovieDao;
    import caztc.jk.Lj.Dao.MovieDaoImpl;
    import caztc.jk.Lj.entity.UserBean;
    @WebServlet("/login")
    public class LoginSerlet extends HttpServlet {
    	
    	private static final long serialVersionUID = 1L;
        public LoginSerlet() {
            super();
        }
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		MovieDao m1=new MovieDaoImpl();
    		String flag=request.getParameter("Loginflag");
    		System.out.println(flag);
    		if(flag.equals("login")) {
    			String username=request.getParameter("username");
    			String password=request.getParameter("password");
    			UserBean user1=new UserBean(username,password);
    			
    			//账号密码是否正确
    			if(!username.equals("")) {
    				if(m1.checkLogin(user1))
    				{	request.getSession().setAttribute("loginUser", username);
    					request.getSession(true).setAttribute("username", username);
    					//request.getRequestDispatcher("showMovies.jsp").forward(request, response);
    					response.sendRedirect("showMovies.jsp");
    				}
    				else {
    					response.sendRedirect("index.jsp");
    				}
    			}
    			else {
    				response.sendRedirect("index.jsp");
    			}
    				
    		}
    		else if(flag.equals("logout"))
    		{	//System.out.println("登出1");
    			String username=request.getParameter("username");
    			String sessionId2=UserBean.getInstance().getSessionIdByUsername(username);
    			HttpSession usersession=UserBean.getInstance().getSessionBySessionId(sessionId2);
    			try{
    				usersession.invalidate();
    			}catch(Exception e){	
    			}
    			UserBean.getInstance().setSessionBySessionId(sessionId2, null);
    			UserBean.getInstance().setSessionIdByUserName(username, null);
    			response.sendRedirect("index.jsp");
    		}
    		else if(flag.equals("register")) {
    			//System.out.println("注册");
    			String Loginflag1=request.getParameter("Loginflag1");
    			if(Loginflag1.equals("register1")) {
    				//表示没有填写过表格
    				request.getRequestDispatcher("register.jsp").forward(request, response);
    			}
    			else if(Loginflag1.equals("register2")){
    				//填写表格,调用daoimpl插入用户数据
    				String username=request.getParameter("username");
    				String password=request.getParameter("password");
    				UserBean user2=new UserBean(username,password);
    				if(m1.checkByUsername(username))
    				{
    					//用户名已经存在
    					request.getSession(true).setAttribute("flagLog", "1");
    					request.getRequestDispatcher("register.jsp").forward(request, response);
    				}
    				else{
    					if(m1.addUser(user2)==1)
    						request.getRequestDispatcher("index.jsp").forward(request, response);
    				}
    			}
    		}
    	}
    }
    
    

    下载整个项目的链接

    下载链接

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 192
精华内容 76
关键字:

web期末大作业