运用servlet+js防止用户未登录访问主要页面

在做网站主页的时候想起来可以通过主页的地址直接进入,跳过了登录界面,所以用了servlet和js实现了一个过滤器来处理这个漏洞

大概的模式就是先在servlet将表单的数据存到session中,然后在主页中写一个js来获取session里的数据,如果获取不到,就说明是非法登录,转到非法登录提示界面就行了。

下面是具体步骤。


一、使用可以先在servlet获取表单中用户的数据

 String username = req.getParameter("username");
 String password = req.getParameter("password");

二、将获取的数据存在session中

先创建HttpSession接口对象

HttpSession session =req.getSession();

存到session中

session.setAttribute("username",name);

三、在主页中写一个js来获取session里的数据

<script>
  function checkuser(){
    var user= <%=session.getAttribute("username")%>;
    if(user==null) {
      window.location.href="illegal.html"
    }
  }
</script>

这个js一定要在页面加载完成前就开始运行,所以一定要在<body>这里加

οnlοad="checkuser()"意思就是在body加载的时候执行上面的js
<body onload="checkuser()">

最后测试运行,如果是直接输入地址来访问主页,就会跳转404界面

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较常见的需求,以下是一个简单的示例代码,供参考: 1. 创建一个 User 类,用于存储用户信息。 ```java public class User { private String username; private String password; // 其他用户信息字段 // 构造方法、getter 和 setter 略 } ``` 2. 创建一个 UserDao 类,用于操作用户信息(如保存到数据库、查询等)。 ```java public class UserDao { public void save(User user) { // 将用户信息保存到数据库 } public User findByUsername(String username) { // 根据用户名查询用户信息 return null; } // 其他操作略 } ``` 3. 创建一个注册页面 register.jsp,包含一个表单,用户填写用户名、密码等信息。 ```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> <h1>用户注册</h1> <form action="register" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="注册"> </form> </body> </html> ``` 4. 创建一个 RegisterServlet 类,用于处理用户提交的注册信息。 ```java public class RegisterServlet extends HttpServlet { private UserDao userDao = new UserDao(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取用户提交的信息 String username = request.getParameter("username"); String password = request.getParameter("password"); // 创建 User 对象,并保存到数据库 User user = new User(username, password); userDao.save(user); // 注册成功,重定向到登录页面 response.sendRedirect("login.jsp"); } } ``` 5. 创建一个登录页面 login.jsp,包含一个表单,用户填写用户名、密码等信息。 ```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> <h1>用户登录</h1> <form action="login" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body> </html> ``` 6. 创建一个 LoginServlet 类,用于处理用户提交的登录信息。 ```java public class LoginServlet extends HttpServlet { private UserDao userDao = new UserDao(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取用户提交的信息 String username = request.getParameter("username"); String password = request.getParameter("password"); // 根据用户名查询用户信息 User user = userDao.findByUsername(username); // 验证用户信息 if (user != null && user.getPassword().equals(password)) { // 登录成功,将用户信息保存到 session 中 request.getSession().setAttribute("user", user); // 跳转到主页 response.sendRedirect("index.jsp"); } else { // 登录失败,跳转回登录页面,并显示错误信息 request.setAttribute("error", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } } } ``` 以上是一个简单的示例,实际应用中可能需要更多的验证和处理,也可以根据具体需求进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值