文章目录

  • 主要功能
  • 存在缺点
  • 主要视图
  • mysql
    • movie(不建议这样建)
    • user(不建议这样建)
  • jsp
    • addMovie.jsp
    • index.jsp
    • login.jsp
    • register.jsp
    • showMovies.jsp
    • updateMovie.jsp
    • head.jsp
    • head2.jsp
  • Dao
    • MovieDao.java
    • MovieDaoImpl.java
  • dbutils
    • DBHelper.java
  • entity
    • MovieBean.java
    • UserBean.java
  • filter
    • EncodingFilter.java
    • LoginFilter.java
  • Listener
    • LoginSessionListener.java
  • servlets
    • CurdServlet.java
    • LoginSerlet.java
  • 下载整个项目的链接

主要功能

作业整体采用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;elsereturn 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;}//通过电影名字查是否存在已经有的namepublic 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();//存放用户对应sessionIdprivate Map<String,String> loginUserSession=new HashMap<String,String>();//存放sessionId对应的sessionprivate 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>中找到与之对应得sessionIdpublic String getSessionIdByUsername(String username) {return loginUserSession.get(username);}//通过传进来得SessionId获取session(即获得了与用户相对应得session)public HttpSession getSessionBySessionId(String sessionId) {return loginSession.get(sessionId);}//存放用户——sessionIdpublic void setSessionIdByUserName(String username,String sessionId) {loginUserSession.put(username, sessionId);}//存放SessionId-sessionpublic 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=requif(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();//获取sessionHttpSession session=hsbe.getSession();//通过session获取到sessionIdString sessionId=session.getId();System.out.println(sessionId);//通过登录名获取到sessionIdString 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="%";elsemessage="%"+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")){  //updateString 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. 1000套HTML5期末大作业——电影我不是药神响应式页面带轮播(4页)

    HTML实例网页代码, 本实例适合于初学HTML的同学.该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代 ...

  2. C语言期末大作业-学生成绩管理系统(完整源码+设计报告)

    C语言-学生成绩管理系统 一.学生成绩管理系统源码(完整) 二.程序设计报告 1.课程设计目的 2.课程设计任务与要求: 4.课程设计成果(运行截图) 5.课程设计心得 一.学生成绩管理系统源码(完整 ...

  3. 安卓期末大作业——图书信息管理系统

    前言 随着信息技术的高速发展,科技逐渐走进各行各业,帮助人们快速.便利地完成一些工作.BMS系统是基于Android移动设备的应用软件,该系统能够帮助用户在家里通过手机查看相应图书馆的馆藏情况,而不用 ...

  4. HTML期末作业课程设计期末大作业——电影网页制作

    HTML实例网页代码, 本实例适合于初学HTML的同学.该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代 ...

  5. web前端期末大作业 ——电影主题介绍 你好,李焕英 ——html+css+javascript网页设计实例

    HTML实例网页代码, 本实例适合于初学HTML的同学.该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代 ...

  6. Java Swing 期末大作业-----图书借阅管理系统

    文章目录 项目:图书借阅系统 子项目:需求分析 第一模块:图书信息管理 第二模块:读者信息管理 第三模块:类型信息管理 第四模块:借阅信息管理 第五模块:用户信息管理 子项目:数据库设计 子项目:图书 ...

  7. HTML期末学生大作业-电影网站html+css+javascript

    HTML网页制作期末大作业-电影网站html+css+javascript 9个页面适用学生作业 课程设计在线电影影网.期末作业电影网.毕业设计在线电影网 10个JS效果 部分电影网页页面  ​​​​ ...

  8. HTML5期末大作业:电商网站设计——仿淘宝电商网站管理系统21页(含毕业设计论文7500字) HTML+CSS+JavaScript

    HTML5期末大作业:电商网站设计--仿淘宝电商网站管理系统21页(含毕业设计论文7500字) HTML+CSS+JavaScript 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. ...

  9. HTML5期末大作业:电影网站设计——指环王:护戒使者(13页) HTML+CSS+JavaScript

    HTML5期末大作业:电影网站设计--指环王:护戒使者(13页) HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品 大学生毕设网页设计 ...

最新文章

  1. SQL server2000数据库备份和还原语句
  2. Sqoop2入门之导入关系型数据库数据到HDFS上(sqoop2-1.99.4版本)
  3. 立体栅格地图_更新丨智图栅格数据—彩色版地图,智臻智美,带来更好的业务体验...
  4. 国内厂商对鸿蒙系统的态度,鸿蒙系统4月上线,国内手机厂商态度很关键!小米、中兴出乎意料...
  5. mysql ubuntu 17.04_1、mysql 5.7 ubuntu17.04
  6. 数据科学和人工智能技术笔记 九、模型验证
  7. php导入excel文件 视频,PHP导入Excel文件
  8. [转载] 十种方式拼接Python字符串
  9. 你为什么用微信,不用 QQ ?
  10. U盘插入电脑无反应,坏了?不存在的
  11. hashcode()和equals()的区别
  12. 利用并查集+贪心解决 Hdu1232
  13. 年入百万的表弟给我上一课:互联网思维该怎么接地气
  14. 《算法图解》之狄克斯特拉算法
  15. EIGRP sutb
  16. 基于JAVA疫情防控期间网上教学管理计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  17. 图像的三种分形维数的计算方法
  18. 《SEM长尾搜索营销策略解密》一一1.4 潜藏在海平线下的长尾世界
  19. 有免费且好用的云服务器推荐?
  20. UDP传输rtp数据包丢帧

热门文章

  1. 国有企业股权激励案例分析
  2. 如何在PowerPoint中使用演讲者注释
  3. 泊松圆盘采样(Poisson Disk Sampling)代码实现
  4. 第三节:论文代码统计-学习笔记
  5. 华为防火墙,配置双链路接入和IP-LINK,即线路互备模式的配置
  6. 【Unity3D】模仿制作“神庙逃亡”吃金币后金币飞出屏幕效果
  7. [附源码]SSM计算机毕业设计运动器材网上销售系统JAVA
  8. Qt学习之路之菜单打开网页
  9. 阿里Java三面:分布式延时任务方案解析,万字长文一篇点通你
  10. 荣耀X20SE和华为nova8se参数对比哪个好 荣耀X20SE和华为nova8se的区别