经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » JSP » 查看文章
jsp实现登录验证的过滤器
来源:jb51  时间:2019/4/18 8:25:45  对本文有异议

本文实例为大家分享了jsp实现登录验证的过滤器,供大家参考,具体内容如下

1.新建一个Dynamic Web Project项目,里面新建1个filter文件、1个servlet文件和2个jsp文件,整体的框架如图所示:

2.LoginFilter.java里面的代码如下所示:

  1. package filter;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.Filter;
  5. import javax.servlet.FilterChain;
  6. import javax.servlet.FilterConfig;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.ServletRequest;
  9. import javax.servlet.ServletResponse;
  10. import javax.servlet.annotation.WebFilter;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import javax.servlet.http.HttpSession;
  14. @WebFilter(filterName = "loginFilter", urlPatterns = { "/*" })
  15. public class LoginFilter implements Filter {
  16. public void destroy() {
  17. }
  18. public void doFilter(ServletRequest request, ServletResponse response,
  19. FilterChain chain) throws IOException, ServletException {
  20. HttpServletRequest req = (HttpServletRequest) request;
  21. HttpServletResponse resp = (HttpServletResponse) response;
  22. HttpSession session = req.getSession(true);
  23. resp.setContentType("text/html;");
  24. resp.setCharacterEncoding("utf-8");
  25. PrintWriter out = resp.getWriter();
  26. String request_uri = req.getRequestURI();
  27. String ctxPath = req.getContextPath();
  28. String uri = request_uri.substring(ctxPath.length());
  29. if (uri.contains("login.jsp") || uri.contains("loginServlet")) {
  30. chain.doFilter(request, response);
  31. } else {
  32. if (session.getAttribute("user") != null) {
  33. chain.doFilter(request, response);
  34. } else {
  35. out.println("您没有登录,请先登录!3秒后回到登录页面。");
  36. resp.setHeader("refresh", "3;url=" + ctxPath + "/login.jsp");
  37. return;
  38. }
  39. }
  40. }
  41. public void init(FilterConfig fConfig) throws ServletException {
  42. }
  43. }

3.LoginServlet.java里面的代码如下所示:

  1. package servlet;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import javax.servlet.http.HttpSession;
  9. @WebServlet(name = "loginServlet", urlPatterns = { "/loginServlet" })
  10. public class LoginServlet extends HttpServlet {
  11. private static final long serialVersionUID = 1L;
  12. protected void doGet(HttpServletRequest request,
  13. HttpServletResponse response) throws ServletException, IOException {
  14. doPost(request, response);
  15. }
  16. protected void doPost(HttpServletRequest request,
  17. HttpServletResponse response) throws ServletException, IOException {
  18. String username = request.getParameter("name");
  19. String password = request.getParameter("pwd");
  20. if ("filter".equals(username) && "filter".equals(password)) {
  21. HttpSession session = request.getSession(true);
  22. session.setAttribute("user", username);
  23. response.sendRedirect("loginSuccess.jsp");
  24. } else {
  25. response.sendRedirect("login.jsp");
  26. }
  27. }
  28. }

4.login.jsp里面的代码如下所示:

  1. <%@page import="java.util.Date"%>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3. pageEncoding="UTF-8"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>example</title>
  9. </head>
  10. <body bgcolor="lightPink">
  11. <form action="loginServlet" method="post">
  12. <table>
  13. <tr>
  14. <td>用户名:</td>
  15. <td><input type="text" name="name" /></td>
  16. </tr>
  17. <tr>
  18. <td>密码:</td>
  19. <td><input type="password" name="pwd" />
  20. </tr>
  21. <tr>
  22. <td><input type="submit" value="提交" /></td>
  23. <td><input type="reset" value="重置" /></td>
  24. </tr>
  25. </table>
  26. </form>
  27. </body>
  28. </html>

5.loginSuccess.jsp里面的代码如下所示:

  1. <%@page import="java.util.Date"%>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3. pageEncoding="UTF-8"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>example</title>
  9. </head>
  10. <body>
  11. <%
  12. String username = (String) session.getAttribute("user");
  13. %>
  14. 恭喜<%=username%>登录成功!
  15. </body>
  16. </html>

6.在浏览器里面输入http://localhost:8080/Servlet/login.jsp运行之后得到的结果如下所示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号