基于javaweb+mysql的jsp+servlet电影票售票管理系统(java+jsp+servlet+javabean+mysql)

基于javaweb+mysql的jsp+servlet电影票售票管理系统(java+jsp+servlet+javabean+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

后台:管理用户、影片、排片、影厅、订单、影评等

前台:注册登录、查看排片、详情,选座、购票等

后台

前台

技术框架

JSP Servlet MySQL C3P0 DBUtil Tomcat JavaScript CSS

基于javaweb+mysql的JSP+Servlet电影票售票管理系统(java+jsp+servlet+javabean+mysql)

            }
        }

        @Override
        public String[] getParameterValues(String name) {
            return getParameterMap().get(name);
        }
    }
}

/**
 * 功能: 订单管理
 */
@WebServlet(urlPatterns = {"/admin/orders", "/admin/orders/delete", "/admin/orders/update"})
public class OrderMgrServlet extends BaseServlet {
    private static final long serialVersionUID = 8025712767156179960L;
    private OrderService orderService = BaseFactory.getService(OrderService.class);
    private UserService userService = BaseFactory.getService(UserService.class);

    @Override
    protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String servletPath = req.getServletPath();
        if (servletPath.contains("delete")) {
            doDel(req, resp);
        } else if (servletPath.contains("update")) {
            doUpdate(req, resp);
        } else {
            String keyword = req.getParameter("keyword");
            if (keyword == null) {
                forwardToOrdersJsp(fillFields(orderService.queryAll()), req, resp);
            } else {
                forwardToOrdersJsp(fillFields(Collections.singletonList(orderService.query(keyword))), req, resp);

/**
 * 功能: 抽取出的一些用到的方法
 */

public class Utils {
    /**
     * 将提交的参数值赋值给对象
     */
    public static void populateToBean(Object bean, Map<String, ?> params) {
        try {
            populateBean(bean, params);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void populateBean(Object bean, Map<String, ?> params) throws Exception {
        Field[] fields = bean.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            Object obj = params.get(field.getName());
            String[] value = null;
            if (obj instanceof String) {
                value = new String[]{(String) obj};
            } else if (obj instanceof String[]) {
                value = (String[]) obj;
            }
            if (value != null ) {
public class LoginServlet extends BaseServlet {
    private static final long serialVersionUID = 8264050085226713309L;
    private UserService service = BaseFactory.getService(UserService.class);

    @Override
    protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //带了登录界面的上级url的话,回到这个url,否则转到主页
        String from = req.getParameter("from");
        if (from != null) {
            req.setAttribute("from", from);
        }
        if (username == null || password == null) {
            req.getRequestDispatcher("/login.jsp").forward(req, resp);
        } else {
            try {
                User user = service.valicateUser(username, password);
                //检查验证码是否正确
                String valicateCode = req.getParameter("valicateCode");
                HttpSession session = req.getSession();
                String sessionValicateCode = (String) session.getAttribute("valicateCode");
                if (valicateCode == null || !valicateCode.equalsIgnoreCase(sessionValicateCode)) {
                   throw new MyException("验证码不正确");
                }
                req.getSession().setAttribute("user", user);
                req.getSession().setMaxInactiveInterval(7200);
                if (from == null) {
                    resp.sendRedirect(req.getContextPath() + "/");
                } else {
                    resp.sendRedirect(req.getContextPath() + from);
                }                
            } catch (MyException e) {
                req.setAttribute("msg", e.getMessage());
                Utils.fillAttr(req, "username", username);
                Utils.fillAttr(req, "password", password);
                req.getRequestDispatcher("/login.jsp").forward(req, resp);
            }
        }
    }
}
    
    public static Ticket getTicket(Order order) {
        PlanService planService = BaseFactory.getService(PlanService.class);
        Plan plan = planService.query(String.valueOf(order.plan_id));
        if (plan != null) {
            MoviceService moviceService = BaseFactory.getService(MoviceService.class);
            Movie movie = moviceService.queryByName(plan.movie_name);
            HallService hallService = BaseFactory.getService(HallService.class);
            Hall hall = hallService.queryByName(plan.hall_name);
            if (movie != null && hall != null) {
                Ticket ticket = new Ticket();
                ticket.orderId = order.id;
                ticket.buyTime = DateUtils.formatDate(order.create_time, "yyyy-MM-dd HH:mm");
                ticket.movieName = plan.movie_name;
                ticket.picName = movie.pic_name;
                ticket.hallName = plan.hall_name;
                ticket.playTime = DateUtils.formatDate(plan.play_time, "yyyy-MM-dd HH:mm");
                ticket.endTime = DateUtils.formatDate(plan.play_time + movie.duration * 60000, "HH:mm");
                ticket.language = movie.language;
                ticket.hallType = hall.type;
                ticket.seats = new ArrayList<>();
                String[] ss = order.seat.split("\\|");
                for (String s : ss) {
                    if (s.matches("\\d+_\\d+")) {
                        String[] split = s.split("_");
                        ticket.seats.add(split[0] + "排" + split[1] + "座");
                    }
                }
                ticket.ticketCount = ticket.seats.size();
                ticket.price = String.format("%.2f", plan.price);
                ticket.totalPrice = String.format("%.2f", order.amount);
                //根据当前时间对比放映时间,判断订单状态
                long currentTime = System.currentTimeMillis();
                if (currentTime < plan.play_time) {
                    ticket.state = "待放映";
                } else if (currentTime > plan.play_time && currentTime < plan.play_time + movie.duration * 60000) {
                    ticket.state = "正在放映";
                } else {
                    ticket.state = "已放映";
                }
                return ticket;                
public class GenerateOrderServlet extends BaseServlet {
    private static final long serialVersionUID = -989924899669241621L;
    private HallService hallService = BaseFactory.getService(HallService.class);
    private PlanService planService = BaseFactory.getService(PlanService.class);
    private UserService userService = BaseFactory.getService(UserService.class);

    @Override
    protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String session = req.getParameter("session");
        if (session != null) {
            //查询排片
            String[] ss = session.split("_");
            Plan plan = planService.query(ss[0], ss[1], ss[2]);
            if (plan != null) {
                //查询影厅
                Hall hall = hallService.queryByName(plan.hall_name);
                if (hall != null) {
                    User user = (User) req.getSession().getAttribute("user");
                    //看数据库是否还有用户信息,可能被删除了
                    if (userService.query(String.valueOf(user.id)) == null) {
                        resp.sendRedirect(req.getContextPath() + "/logout");
                        return;
                    }
                    Order order = new Order();
                    order.movie_name = plan.movie_name;
                    order.plan_id = plan.id;
                    order.user_id = user.id;
                    Map<String, String[]> map = req.getParameterMap();
                    int count = 0;
                    try {
                        StringBuilder sb = new StringBuilder();
                        for (Map.Entry<String, String[]> entry : map.entrySet()) {
                            String key = entry.getKey();
                            String[] value = entry.getValue();
                            if (key.matches("\\d+_\\d+") && "1".equals(value[0])) {
                                //查询这个座位是否正确
                                String[] rc = key.split("_");
                                if (hall.rows >= Integer.valueOf(rc[0]) && hall.columns >= Integer.valueOf(rc[1])) {  
                                    if (count == 0) {
                                        sb.append("|");
                                    }                 
                                    sb.append(key);
                                    sb.append("|");
                                    count++;
                                } else {
                                    throw new MyException("选座失败,座位号与实际不符,请重新选座。");
                                }
                            }
                        }
                        if (sb.length() == 0) {
                            throw new MyException("请选择座位。");
                        }
            Utils.fillAttr(req, map, "protagonist");
            Utils.fillAttr(req, map, "region");
            Utils.fillAttr(req, map, "language");
            Utils.fillAttr(req, map, "type");
            Utils.fillAttr(req, map, "duration");
            Utils.fillAttr(req, map, "synopsis");
            if (add) {
                req.setAttribute("add", true);
            } else {
                req.setAttribute("add", false);                
                Utils.fillAttr(req, map, "id");
            }            
            req.getRequestDispatcher("/admin/add_update_movie.jsp").forward(req, resp);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    private void forwardToMoviesJsp(List<Movie> list, HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (list != null) {
            req.setAttribute("movies", list);
        }
        req.setAttribute("chkItem", 2);
        req.getRequestDispatcher("/admin/movies.jsp").forward(req, resp);
    }
}

/**
 * 功能: 抽取出的一些用到的方法
 */

public class Utils {
            doAddMovie(req, resp);
        } else if (servletPath.contains("update")) {
            doUpdateMovie(req, resp);
        } else if (servletPath.contains("delete")) {
            doDel(req, resp);
        } else {
            //如果关键字不为空,搜索返回,否则返回全部
            String keyword = req.getParameter("keyword");
            if (Utils.isEmpty(keyword)) {
                forwardToMoviesJsp(service.queryAll(), req, resp);
            } else {
                req.setAttribute("keyword", keyword);
                forwardToMoviesJsp(service.queryMoviesByKeyword(keyword), req, resp);
            }
        }
    }

    private void doDel(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String movieName = req.getParameter("movie");
        if (movieName != null) {
            Movie movie = service.deleteByName(movieName);
            //删除成功的话,把原图片一起删除
            if (movie != null) {
                new File(getServletContext().getRealPath(GetImageServlet.IMG_SERVLET_DIR), movie.pic_name).delete();
            }
        }
        forwardToMoviesJsp(service.queryAll(), req, resp);
    }

    private void doUpdateMovie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        
        String movieName = req.getParameter("movie");
        if (movieName != null) {
            //查询到则返回,没有则返回影片管理
            Movie movie = service.queryByName(movieName);
            if (movie == null) {
                forwardToMoviesJsp(service.queryAll(), req, resp);
            } else {
                Utils.fillAttr(req, movie);
                req.setAttribute("add", false);
                req.getRequestDispatcher("/admin/add_update_movie.jsp").forward(req, resp);
            }
        } else {
            addOrUpdateMovie(false, req, resp);
        }
    }

    private void doAddMovie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (!ServletFileUpload.isMultipartContent(req)) {
            req.setAttribute("add", true);
            req.getRequestDispatcher("/admin/add_update_movie.jsp").forward(req, resp);
        }
    }

    private void doDel(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String movieName = req.getParameter("movie");
        if (movieName != null) {
            Movie movie = service.deleteByName(movieName);
            //删除成功的话,把原图片一起删除
            if (movie != null) {
                new File(getServletContext().getRealPath(GetImageServlet.IMG_SERVLET_DIR), movie.pic_name).delete();
            }
        }
        forwardToMoviesJsp(service.queryAll(), req, resp);
    }

    private void doUpdateMovie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        
        String movieName = req.getParameter("movie");
        if (movieName != null) {
            //查询到则返回,没有则返回影片管理
            Movie movie = service.queryByName(movieName);
            if (movie == null) {
                forwardToMoviesJsp(service.queryAll(), req, resp);
            } else {
                Utils.fillAttr(req, movie);
                req.setAttribute("add", false);
                req.getRequestDispatcher("/admin/add_update_movie.jsp").forward(req, resp);
            }
        } else {
            addOrUpdateMovie(false, req, resp);
        }
    }

    private void doAddMovie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (!ServletFileUpload.isMultipartContent(req)) {
            req.setAttribute("add", true);
            req.getRequestDispatcher("/admin/add_update_movie.jsp").forward(req, resp);
        } else {
            addOrUpdateMovie(true, req, resp);            
        }
    }

    private void addOrUpdateMovie(boolean add, HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //用来存参数
        Map<String, String> map = new HashMap<>();
    public static boolean isPasswordValid(String password) {
        //为空或长度不符
        if (password == null || password.length() < 6 || password.length() > 30) {
            return false;
        }
        Pattern pattern = Pattern.compile("\\s");
        Matcher matcher = pattern.matcher(password);
        //如果包含空白字符
        if (matcher.find()) {
            return false;
        }
        //只包含一种字符
        return !password.matches("\\d+") && !password.matches("[a-z]+") && !password.matches("[A-Z]+") && !password.matches("\\W+");
    }

    public static void fillAttr(HttpServletRequest req, Map<String, ?> map, String key) {
        Object value = map.get(key);
        String s = null;
        if (value instanceof String) {
            s = (String) value;
        } else if (value instanceof String[]) {
            s = ((String[]) value)[0];
        }
        if (s != null) {
            req.setAttribute(key, s);
        }
    }
    
    public static void fillAttr(HttpServletRequest req, String key, String value) {
        if (value != null) {
            req.setAttribute(key, value);
        }
    }
    
    public static void fillAttr(HttpServletRequest req, Object bean) {
        try {
            Field[] fields = bean.getClass().getDeclaredFields();
            for (Field field : fields) {
                field.setAccessible(true);
                Object value = field.get(bean);
                if (value != null) {
                    req.setAttribute(field.getName(), value);
                }
            }
            } else {
                evaluate(req, resp, movieName, movie, user);
            }
        }
    }

    private void evaluate(HttpServletRequest req, HttpServletResponse resp, String movieName, Movie movie, User user) throws IOException {
        Evaluate evaluate = new Evaluate();
        evaluate.movie_name = movieName;
        evaluate.username = user.username;
        evaluate.nickname = user.nickname;
        evaluate.content = req.getParameter("evaluate_content").trim();
        evaluate.time = System.currentTimeMillis();
        evaluateService.add(evaluate);
        req.getSession().setAttribute("lookMovie", movie.name);
        resp.sendRedirect(req.getContextPath() + "/movie/detail");
    }
}

/**
 * 功能: 排片管理
 */
@WebServlet(urlPatterns = {"/admin/plans", "/admin/plans/add", "/admin/plans/cancel"})
public class PlanMgrServlet extends BaseServlet {
    private static final long serialVersionUID = -6874708411049815744L;
    private PlanService planService = BaseFactory.getService(PlanService.class);
    protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String session = req.getParameter("session");
        if (session == null) {
            resp.sendRedirect(req.getContextPath() + "/");
        } else {
            String[] ss = session.split("_");
            Plan plan = planService.query(ss[0], ss[1], ss[2]);
            if (plan != null) {
                Hall hall = hallService.queryByName(plan.hall_name);
                if (hall != null) {
                    List<List<Seat>> rowSeats = new ArrayList<>();
                    for (int i = 1; i <= hall.rows; i++) {
                        List<Seat> seats = new ArrayList<>();
                        for (int j = 1; j <= hall.columns; j++) {
                            Seat seat = new Seat();
                            seat.seat = i + "_" + j;
                            seat.sold = orderService.isSeatSold(String.valueOf(plan.id), seat.seat);
                            seats.add(seat);
                        }
                        rowSeats.add(seats);
                    }
                    req.setAttribute("price", plan.price);
                    req.setAttribute("session", session);
                    req.setAttribute("seats", rowSeats);
                    req.setAttribute("title", String.format("%s(%s %s)", plan.movie_name, hall.type, DateUtils.formatDate(plan.play_time, "yyyy-MM-dd HH:mm")));
                    req.getRequestDispatcher("/seat.jsp").forward(req, resp);
                } else {
                    resp.sendRedirect(req.getContextPath() + "/");
                }
            } else {
                resp.sendRedirect(req.getContextPath() + "/");
            }
        }
    }
}


/**
 * 功能: 排片管理
 */
@WebServlet(urlPatterns = {"/admin/plans", "/admin/plans/add", "/admin/plans/cancel"})
public class PlanMgrServlet extends BaseServlet {
    private static final long serialVersionUID = -6874708411049815744L;
    private PlanService planService = BaseFactory.getService(PlanService.class);
    private HallService hallService = BaseFactory.getService(HallService.class);
    private MoviceService moviceService = BaseFactory.getService(MoviceService.class);

    @Override
    protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String servletPath = req.getServletPath();
        if (servletPath.contains("cancel")) {//取消排片
            doDel(req, resp);
        } else if (servletPath.contains("add")) {//执行添加
            doAdd(req, resp);
        } else {
            String keyword = req.getParameter("keyword");
            if (Utils.isEmpty(keyword)) {
                backListToPlansJsp(planService.queryAll(), req, resp);
            } else {
                req.setAttribute("keyword", keyword);
                backListToPlansJsp(planService.queryPlansByKeyword(keyword), req, resp);
            }            
        }
    }

    private void doDel(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String planInfo = req.getParameter("plan");
        if (planInfo != null) {
            //从数据库删除
            String[] ss = planInfo.split("_");
            planService.delete(ss[0], ss[1], ss[2]);
        }
        resp.sendRedirect(req.getContextPath() + "/admin/plans");
    }

    private void doAdd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String movieName = req.getParameter("movie");
    protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        forwardToOrderJsp(req, resp);
    }

    private List<Ticket> getTicketList(String userId) {
        List<Ticket> list = new ArrayList<>();
        List<Order> orders = orderService.queryUserOrders(userId);
        if (orders != null) {
            for (Order order : orders) {
                Ticket ticket = getTicket(order);
                if (ticket != null) {
                    list.add(ticket);
                }
            }            
        }
        return list;
    }
    
    public static Ticket getTicket(Order order) {
        PlanService planService = BaseFactory.getService(PlanService.class);
        Plan plan = planService.query(String.valueOf(order.plan_id));
        if (plan != null) {
            MoviceService moviceService = BaseFactory.getService(MoviceService.class);
            Movie movie = moviceService.queryByName(plan.movie_name);
            HallService hallService = BaseFactory.getService(HallService.class);
            Hall hall = hallService.queryByName(plan.hall_name);
            if (movie != null && hall != null) {
                Ticket ticket = new Ticket();
                ticket.orderId = order.id;
                ticket.buyTime = DateUtils.formatDate(order.create_time, "yyyy-MM-dd HH:mm");
                ticket.movieName = plan.movie_name;
                ticket.picName = movie.pic_name;
                ticket.hallName = plan.hall_name;
                ticket.playTime = DateUtils.formatDate(plan.play_time, "yyyy-MM-dd HH:mm");
                ticket.endTime = DateUtils.formatDate(plan.play_time + movie.duration * 60000, "HH:mm");
                ticket.language = movie.language;
                ticket.hallType = hall.type;
                ticket.seats = new ArrayList<>();
                String[] ss = order.seat.split("\\|");
                for (String s : ss) {
                    if (s.matches("\\d+_\\d+")) {
                        String[] split = s.split("_");
                        ticket.seats.add(split[0] + "排" + split[1] + "座");

/**
 * 功能: 抽取出的一些用到的方法
 */

public class Utils {
    /**
     * 将提交的参数值赋值给对象
     */
    public static void populateToBean(Object bean, Map<String, ?> params) {
        try {
            populateBean(bean, params);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void populateBean(Object bean, Map<String, ?> params) throws Exception {
        Field[] fields = bean.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            Object obj = params.get(field.getName());
            String[] value = null;
            if (obj instanceof String) {
                value = new String[]{(String) obj};
            } else if (obj instanceof String[]) {
                value = (String[]) obj;
            }
            if (value != null ) {
                Class<?> clazz = field.getType();
                if (clazz == String.class) {
                    field.set(bean, value[0]);
                } else if (clazz == String[].class) {
                    field.set(bean, value);
                } else if (!isEmpty(value[0])) {
                    if (List.class.isAssignableFrom(clazz)) {
                        field.set(bean, new ArrayList<>(Arrays.asList(value)));
                    } else if (clazz == int.class || clazz == Integer.class) {
                        field.set(bean, Integer.valueOf(value[0]));
                    } else if (clazz == long.class || clazz == Long.class) {
                        field.set(bean, Long.valueOf(value[0]));
                    } else if (clazz == short.class || clazz == Short.class) {
                        field.set(bean, Short.valueOf(value[0]));
                    } else if (clazz == float.class || clazz == Float.class) {
                        field.set(bean, Float.valueOf(value[0]));
                    } else if (clazz == double.class || clazz == Double.class) {
                        field.set(bean, Double.valueOf(value[0]));
                    } 
                }
            }
    @Override
    public void init(FilterConfig config) throws ServletException {
        encoding = config.getServletContext().getInitParameter("encoding");
        if (encoding == null) {
            encoding = "utf-8";
        }
    }

    class MyHttpServletRequest extends HttpServletRequestWrapper {

        private HttpServletRequest request;
        private boolean isEncoded = false;

        MyHttpServletRequest(HttpServletRequest request) {
            super(request);
            this.request = request;
        }

        @Override
        public String getParameter(String name) {
            String[] values = getParameterMap().get(name);
            return values == null ? null : values[0];
        }

        @Override
        public Map<String, String[]> getParameterMap() {
            try {
                if ("POST".equalsIgnoreCase((request.getMethod()))) {
                    request.setCharacterEncoding(encoding);
                    return request.getParameterMap();
                } else if ("GET".equalsIgnoreCase(request.getMethod())) {
                    if (!isEncoded) {
                        Map<String, String[]> map = request.getParameterMap();
                        for (Map.Entry<String, String[]> me : map.entrySet()) {
                            String[] values = me.getValue();
                            for (int i = 0; i < values.length; i++) {
                                values[i] = URLDecoder.decode(values[i], encoding);
                            }
                        }
                        isEncoded = true;
                        return map;
                    } else {
                        return request.getParameterMap();
                    }
                } else {
                    return request.getParameterMap();
                }
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }

    private Random ran = new Random();

    private int getRan(int begin, int end) {
        return ran.nextInt(end - begin) + begin;
    }

    private int getRan(int bound) {
        return ran.nextInt(bound);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

/**
 * 功能: 用户登录
 */
@WebServlet(urlPatterns = "/login")
public class LoginServlet extends BaseServlet {
    private static final long serialVersionUID = 8264050085226713309L;
    private UserService service = BaseFactory.getService(UserService.class);

    @Override
    protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //带了登录界面的上级url的话,回到这个url,否则转到主页
        String from = req.getParameter("from");
        if (from != null) {
            req.setAttribute("from", from);
        }
        if (username == null || password == null) {
            req.getRequestDispatcher("/login.jsp").forward(req, resp);
                //如果修改了图片,把原来的图片删除
                Movie m = service.updateMovie(movie);
                //修改失败删除图片
                if (m == null) {
                    if (fileName != null) {
                        new File(uploadPath, fileName).delete();
                    }
                } else if (fileName != null && !fileName.equals(m.pic_name)) {
                    new File(uploadPath, m.pic_name).delete();    
                }
            }
            resp.sendRedirect(req.getContextPath() + "/admin/movies");
        } catch (MyException e) {
            req.setAttribute("msg", e.getMessage());
            //将原来填写的返回
            Utils.fillAttr(req, map, "name");
            Utils.fillAttr(req, map, "director");
            Utils.fillAttr(req, map, "protagonist");
            Utils.fillAttr(req, map, "region");
            Utils.fillAttr(req, map, "language");
            Utils.fillAttr(req, map, "type");
            Utils.fillAttr(req, map, "duration");
            Utils.fillAttr(req, map, "synopsis");
            if (add) {
                req.setAttribute("add", true);
            } else {
                req.setAttribute("add", false);                
                Utils.fillAttr(req, map, "id");
            }            
            req.getRequestDispatcher("/admin/add_update_movie.jsp").forward(req, resp);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    private void forwardToMoviesJsp(List<Movie> list, HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (list != null) {
            req.setAttribute("movies", list);
        }
        req.setAttribute("chkItem", 2);

/**
 * 描述: 写影评
 */
@WebServlet(urlPatterns = "/evaluate")
public class WriteEvaluateServlet extends BaseServlet {
    private static final long serialVersionUID = -3514964050010797273L;
    private EvaluateService evaluateService = BaseFactory.getService(EvaluateService.class);
    private MoviceService moviceService = BaseFactory.getService(MoviceService.class);
    private ReplyService replyService = BaseFactory.getService(ReplyService.class);

    @Override
    protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String movieName = req.getParameter("movie");
        if (movieName == null) {
            resp.sendRedirect(req.getContextPath() + "/");
        } else {
            Movie movie = moviceService.queryByName(movieName);
            String evaId = req.getParameter("eva_id");
            User user = (User) req.getSession().getAttribute("user");
            if (movie == null || evaId == null) {
                resp.sendRedirect(req.getContextPath() + "/");
            } else if (!evaId.isEmpty()) {
                //检查提交的是否相符
                Evaluate eva = evaluateService.query(evaId);
                if (eva != null) {
                    String content = req.getParameter("evaluate_content");
                    //截取回复内容里的昵称
                    Pattern pattern = Pattern.compile("\\[回复\\].+\\[/回复\\]");
                    Matcher matcher = pattern.matcher(content);
                    if (matcher.find()) {
                        String temp = matcher.group();
                        String nick = temp.replace("[回复]", "")
                                .replace("[/回复]", "");
                        if (eva.nickname.equals(nick)) {
                            Reply reply = new Reply();
                            reply.username = user.username;
                            reply.nickname = user.nickname;
                            reply.evaluate_id = Integer.valueOf(evaId);
                            reply.time = System.currentTimeMillis();
                            reply.content = content.substring(temp.length()).trim();
                            replyService.add(reply);
                            req.getSession().setAttribute("lookMovie", movie.name);

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值