Loading

JAVAWEB学习-session-用session实现禁止用户非法访问页面

今天学习了JAVAWEB中session的有关知识,能够实现禁止用户非法访问页面.

session可以理解为一个表,每条数据有两个属性,String 和 Object ,即名称和内容

session 的作用是可以实现不同的页面保存共享同一个数据,在许多方面十分有用

如:购物网站的购物车

  保存登录用户的信息

  防止用户非法登录到某一个页面

  将数据存入一个session中给同一用户的不同页面使用

首先我们先实现一个防止用户非法登录的功能

看代码

首先是实现一个简单的登录界面

然后是判断登录是否成功的部分(为了方便先不连接数据库,密码为123就能登录成功)

import ...
@WebServlet("/LoginJudge")
public class LoginJudge extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=UTF-8");
        try {
            PrintWriter out = resp.getWriter();

            String na = req.getParameter("put_name");
            String pw = req.getParameter("put_password");
            if (pw.equals("123")){

                //获得session空间
                HttpSession hs = req.getSession(true);
                //修改session的存在时间为30秒
                hs.setMaxInactiveInterval(30);
                //设置session 名为pass 值为ok
                hs.setAttribute("pass","ok");

                resp.sendRedirect("User1?lg_name="+na);
            }else {
                out.println("error");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

然后是登录成功的界面

import ...;

@WebServlet("/User1")
public class User1 extends HttpServlet {

  

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        String name =req.getParameter("lg_name");
        //得到session
        HttpSession hs = req.getSession(true);
        String value = (String) hs.getAttribute("pass");
        //判断
        if (value==null){
            try {
                //非法登录
                resp.sendRedirect("Login");
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        try {

            String title1 = "登录完成 ";

            out.println("<!DOCTYPE html> \n" +
                        "<html>\n" +
                        "<head><title>" + title1 + "</title></head>\n" +
                        "<body bgcolor=\"#f0f0f0\">\n" +
                        "<h1 align=\"center\">" + title1 + "</h1>\n" +
                        "<h3 align=\"center\">" + "你的用户名是 " + name + "</h3>\n" +
                        "</body></html>"
            );
        }catch (Exception e){
            e.printStackTrace();
        }

    }

}

重点部分写了注释

我们如果强行把url 改为User1,会被强制返回到登录页面,实现了禁止非法访问的功能

 

posted @ 2023-02-28 20:27  冰稀饭Aurora  阅读(205)  评论(0编辑  收藏  举报