Servlet 过滤器Filter判断用户是否登陆(jsp页面)
来源:互联网 发布:mac乐谱制作软件 编辑:程序博客网 时间:2024/06/05 22:44
过滤器Servlet类:
package servlet;import java.io.IOException;//import java.io.PrintWriter;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;//import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginFilter implements Filter { private static final String LOGON_URI = "LOGON_URI"; private static final String REGISTER_URI = "REGISTER_URI"; private String logon_page; private String register_page; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; resp.setContentType("text/html;"); resp.setCharacterEncoding("utf-8"); HttpSession session = req.getSession(); // PrintWriter out = resp.getWriter(); // 得到用户请求的URI String request_uri = req.getRequestURI(); // 得到web应用程序的上下文路径 String ctxPath = req.getContextPath(); // 去除上下文路径,得到剩余部分的路径 String uri = request_uri.substring(ctxPath.length()); // 判断用户访问的是否是登录页面 if (uri.equals(logon_page) || uri.equals(register_page)) { chain.doFilter(request, response); return; } else { // 如果访问的不是登录页面,则判断用户是否已经登录 if (null != session.getAttribute("curUser") && "" != session.getAttribute("curUser")){ chain.doFilter(request, response); return; } else { String msg = "您未登录!"; String url = "Errorer"; req.setAttribute("err", msg); RequestDispatcher dis = req.getRequestDispatcher(url); dis.forward(req, resp); } //out.println("<script language=/"javaScript/">" // + "parent.location.href='" +//ctxPath + logon_page + "'" // + "</script>"); // return; // } } } public void init(FilterConfig config) throws ServletException { // TODO Auto-generated method stub // 从部署描述符中获取登录页面和首页的URI logon_page = config.getInitParameter(LOGON_URI); register_page = config.getInitParameter(REGISTER_URI); // System.out.println(logon_page); if (null == logon_page || null == register_page) { throw new ServletException("没有找到登录页面或主页"); } }}修改Web核心配置文件:
注:保存后需要重启tomcat服务器
<filter> <filter-name>loginFilter</filter-name> <filter-class>servlet.LoginFilter</filter-class> <init-param> <param-name>LOGON_URI</param-name> <param-value>/login.jsp</param-value> </init-param> <init-param> <param-name>REGISTER_URI</param-name> <param-value>/register.jsp</param-value> </init-param> </filter><filter-mapping><filter-name>charseterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>Errorer错误信息处理类:
package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class Error */public class Errorer extends HttpServlet {private static final long serialVersionUID = 1L;protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String url="login.jsp"; try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet Error</title>"); out.println("</head>"); out.println("<body>"); out.println("<h2 align=center>" + request.getAttribute("err") + "</h2>"); response.setHeader("refresh", "2;url='login.jsp'"); response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("请登录!页面将在3秒后自动跳转,如果没有,请点击<a href='login.jsp'>回到登录页面</a>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); RequestDispatcher dis = request.getRequestDispatcher(url); dis.forward(request, response); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold>}
效果展示:
0 0
- Servlet 过滤器Filter判断用户是否登陆(jsp页面)
- 用过滤器Filter判断用户是否登陆
- 过滤器(filter)判断用户是否登录
- Servlet和JSP页面过滤器Filter介绍
- servlet和jsp页面过滤器Filter详解
- servlet和JSP过滤器Filter(转载)
- 使用过滤器Filter解决JSP+Servlet页面编码乱码
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- Servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- Jsp Servlet配置过滤器Filter
- Servlet用户登陆过滤器,编码校验过滤器
- Servlet过滤器(Filter)
- linux下的无线网卡配置
- UVa 10387 - Billiard
- java基础——“==”与equals方法的区别
- STL之容器适配器stack的实现框架
- nodejs的request用法
- Servlet 过滤器Filter判断用户是否登陆(jsp页面)
- [Perl系列二-实战] 1. Perl 读取代码的行数
- Android 学习笔记之开发环境搭建篇
- HLS草案(中文版)
- linux 二元比较操作符,比较变量或者比较数字
- 初始设计模式11——外观模式
- 肩周炎吃什么药好
- Android开源项目SlidingMenu深切解析
- APACHE 转HTTPS