zoukankan      html  css  js  c++  java
  • 2020-12-14日报博客-周一

    1. 学到的东西:

    案例:图书管理系统的重新实现

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <title>管理员登录</title>
    
        <!-- 1. 导入CSS的全局样式 -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
        <script src="js/jquery-2.1.0.min.js"></script>
        <!-- 3. 导入bootstrap的js文件 -->
        <script src="js/bootstrap.min.js"></script>
        <script type="text/javascript">
            //切换验证码
            function refreshCode(){
                //1.获取验证码图片对象
                var vcode = document.getElementById("vcode");
    
                //2.设置其src属性,加时间戳
                vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
            }
        </script>
    </head>
    <body>
    <div class="container" style=" 400px;">
        <h3 style="text-align: center;">登录</h3>
        <form action="${pageContext.request.contextPath}/loginServlet" method="post">
            <div class="form-group">
                <label for="user">用户名:</label>
                <input type="text" name="username" class="form-control" id="user" placeholder="请输入用户名"/>
            </div>
    
            <div class="form-group">
                <label for="password">密码:</label>
                <input type="password" name="password" class="form-control" id="password" placeholder="请输入密码"/>
            </div>
    
            <div class="form-inline">
                <label for="vcode">验证码:</label>
                <input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style=" 120px;"/>
                <a href="javascript:refreshCode();">
                    <img src="${pageContext.request.contextPath}/checkCodeServlet" title="看不清点击刷新" id="vcode"/>
                </a>
            </div>
            <hr/>
            <div class="form-group" style="text-align: center;">
                <input class="btn btn btn-primary" type="submit" value="登录">
            </div>
        </form>
    
        <!-- 出错显示的信息框 -->
        <div class="alert alert-warning alert-dismissible" role="alert">
            <button type="button" class="close" data-dismiss="alert" >
                <span>&times;</span>
            </button>
            <strong>${login_msg}</strong>
        </div>
    </div>
    </body>
    </html>
    
    package servlet;
    
    import domain.User;
    import org.apache.commons.beanutils.BeanUtils;
    import service.UserService;
    import service.impl.UserServiceImpl;
    
    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 java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.util.Map;
    
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.设置编码
            request.setCharacterEncoding("utf-8");
    
            //2.获取数据
            //2.1获取用户填写验证码
            String verifycode = request.getParameter("verifycode");
    
            //3.验证码校验
            HttpSession session = request.getSession();
            String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
            session.removeAttribute("CHECKCODE_SERVER");//确保验证码一次性
            if (!checkcode_server.equalsIgnoreCase(verifycode)) {
                //验证码不正确
                //提示信息
                request.setAttribute("login_msg", "验证码错误!");
                //跳转登录页面
                request.getRequestDispatcher("/index.jsp").forward(request, response);
    
                return;
            }
    
            Map<String, String[]> map = request.getParameterMap();
            //4.封装User对象
            User user = new User();
            try {
                BeanUtils.populate(user, map);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
    
    
            //5.调用Service查询
            UserService service = new UserServiceImpl();
            User loginUser = service.login(user);
            //6.判断是否登录成功
            if (loginUser != null) {
                //登录成功
                //将用户存入session
                session.setAttribute("user", loginUser);
                //跳转页面
                System.out.println(user.getType());
                if (user.getUsername().equals("admin")){
                    response.sendRedirect(request.getContextPath() + "/admin_index.jsp");
                }else{
                    response.sendRedirect(request.getContextPath() + "/user_index.jsp");
                }
    
            } else {
                //登录失败
                //提示信息
                request.setAttribute("login_msg", "用户名或密码错误!");
                //跳转登录页面
                request.getRequestDispatcher("/index.jsp").forward(request, response);
    
            }
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    

    2. 遇到的问题:

    3. 明日计划:继续完成图书管理系统

  • 相关阅读:
    python 类C数组的两种形式:list -->内容可变, tuple --->内容不可变
    13、canvas操纵像素数据ImageData
    13、canvas操纵像素数据ImageData
    13、canvas操纵像素数据ImageData
    13、canvas操纵像素数据ImageData
    人工智能工程师学习路线
    人工智能工程师学习路线
    js数组排序和打乱
    js数组排序和打乱
    js数组排序和打乱
  • 原文地址:https://www.cnblogs.com/gongyunlong-blogs/p/14161562.html
Copyright © 2011-2022 走看看