Servlet之过滤器2

原创 2013年12月01日 23:04:53

login.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
     <form action="${pageContext.request.contextPath}/LoginServlet" method="post">
         <table border="1" align="center">
             <caption>用户登录</caption>
             <tr>
                 <th>用户名</th>
                 <td><input type="text" name="username"/></td>
             </tr>
             <tr>
                 <th>密码</th>
                 <td><input type="password" name="password"/></td>
             </tr>
             <tr>
                 <td colspan="2" align="center">
                     <input type="submit" value="提交"/>
                 </td>
             </tr>
         </table>
     </form>
  </body>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
     <form action="/day19/welcome.jsp" method="post">
         <table border="1" align="center">
             <caption><br>用户登录</caption>
             <tr>
                 <th>用户名</th>
                 <td><input type="text" name="username"/></td>
             </tr>
             <tr>
                 <th>密码</th>
                 <td><input type="password" name="password"/></td>
             </tr>
             <tr>
                 <th>角色</th>
                 <td>
                    <select name="role">
                        <option value="普通用户">普通用户</option>
                        <option value="管理员">管理员</option>
                    </select>
                 </td>
             </tr>
             <tr>
                 <td colspan="2" align="center">
                     <input type="submit" value="提交"/>
                 </td>
             </tr>
         </table>
     </form>
  </body>
</html>

</html>

FilterDemo6对敏感目录进行过虑

//对敏感目录进行认证
public class FilterDemo6 implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
        
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        
        //取得用户请求参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        //判段
        if(username!=null && password!=null){
            if(username.equals("jack") && password.equals("123")){
                //允许进入敏感资源
                chain.doFilter(request,response);
                
            }else{
                //转发到message.jsp页面
                request.setAttribute("message","用户名或密码不正确");
                request.getRequestDispatcher("/message.jsp").forward(request,response);
            }
        }else{
            //转发到message.jsp页面
            request.setAttribute("message","必须填入用户名和密码");
            request.getRequestDispatcher("/message.jsp").forward(request,response);
        }
    }
    public void destroy() {
    }
}

根据用户角色显示(管理员显示下载链接,普通用户显示下载字符串,不能进行下载)

login2.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
     <form action="/day19/welcome.jsp" method="post">
         <table border="1" align="center">
             <caption><br>用户登录</caption>
             <tr>
                 <th>用户名</th>
                 <td><input type="text" name="username"/></td>
             </tr>
             <tr>
                 <th>密码</th>
                 <td><input type="password" name="password"/></td>
             </tr>
             <tr>
                 <th>角色</th>
                 <td>
                    <select name="role">
                        <option value="普通用户">普通用户</option>
                        <option value="管理员">管理员</option>
                    </select>
                 </td>
             </tr>
             <tr>
                 <td colspan="2" align="center">
                     <input type="submit" value="提交"/>
                 </td>
             </tr>
         </table>
     </form>
  </body>
</html>

//对敏感目录进行认证[课堂练习1]
public class FilterDemo7 implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
        
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        
        //设置请求体编码方式
        request.setCharacterEncoding("UTF-8");
        
        //取得用户请求参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String role = request.getParameter("role");
        
        //判段
        if(username!=null && password!=null && role!=null && username.trim().length()>0 && password.trim().length()>0 && role.trim().length()>0){
            if("普通用户".equals(role)){
                request.setAttribute("message","欢迎普通用户<font color='blue'>"+username+"</font>登录");
                request.setAttribute("flag","user");
            }else if("管理员".equals(role)){
                request.setAttribute("message","欢迎管理员<font color='red'>"+username+"</font>登录");    
                request.setAttribute("flag","admin");
            }
            chain.doFilter(request,response);
        }
    }
    public void destroy() {
    }
}

welcome2.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
    ${message}<br/>
    <c:choose>
        <c:when test="${requestScope.flag=='admin'}">
            <a href="#">下载</a>
        </c:when>
        <c:otherwise>
            下载
        </c:otherwise>
    </c:choose>
  </body>
</html>
自动登录分析:


自动登录filter过滤器

/对敏感页面或目录进行认证
public class AutoLoginFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        //取得浏览器的Cookie
        Cookie[] cookies = request.getCookies();
        Cookie userCookie = null;
        if(cookies!=null){
            for(Cookie c : cookies){
                if(c.getName().equals("usernameAndPassword")){
                    userCookie = c;
                    break;
                }
            }
            //找到对应的Cookie
            if(userCookie!=null){
                String usernameAndPassword = userCookie.getValue();
                String[] both = usernameAndPassword.split("_");
                String username = both[0];
                String password = both[1];
                if(username.equals("jack") && password.equals("123")){
                    request.getSession().setAttribute("username",username);
                }
            }
        }
        //发行资源
        chain.doFilter(request,response);
    }    
        
    public void destroy() {
    }
}



Servlet之过滤器

1,Filter的生命周期 和我们编写的Servlet程序一样,Filter的创建和销毁由WEB服务器负责。 web 应用程序启动时,web 服务器将创建Filter的实例对象,并调用其init方法,...
  • azhegps
  • azhegps
  • 2015年12月23日 23:38
  • 183

Servlet之过滤器详解

1、过滤器简介       servlet API中最重要的一个功能就是能够为servlet和JSP页面定义过滤器。过滤器提供了某些早期服务器所支持的非标准“servlet链接”的一种功能强大且标准的...
  • u010445297
  • u010445297
  • 2017年03月11日 22:34
  • 408

Servlet之过滤器

过滤器的作用过滤器能够动态的访问和拦截请求头和响应头,我们可以进行检查和修改。 - 过滤器本身并不生成请求和响应对象,只是提供过滤功能。 - 过滤器能够在Servlet被调用之前检查Request...
  • onTheRoadToMine
  • onTheRoadToMine
  • 2017年04月01日 13:56
  • 137

【复习】servlet之过滤器

servlet的过滤器
  • JohnDeng520
  • JohnDeng520
  • 2016年06月15日 21:37
  • 339

Java Servlet之过滤器

Java Servlet之过滤器
  • caizhong_1989
  • caizhong_1989
  • 2017年05月11日 14:31
  • 64

Servlet之过滤器详解

Servlet分为三种:标准的Servlet----MVC中控制器 、过滤Servlet(过滤器)、监听Servlet(监听器)。 这篇博客将结合实例来讲解过滤Servlet(过滤器)。 Servle...
  • weixin_36380516
  • weixin_36380516
  • 2017年04月27日 22:02
  • 1104

Servlet之过滤器总结--Filter

前言                           我们知道实际开发中我们可能有这种需要:对于某个网站来说需要限制一些ip对该网站的访                      问。例如教育...
  • kiritor
  • kiritor
  • 2013年06月15日 09:03
  • 4401

Servlet之过滤器Filter详解

一、过滤器的基本工作原理 1、过滤器的基本工作原理  过滤器的基本工作原理如图4-8示。 2、过滤器的特点  过滤器具备有以下特点:  (1)它是声明式的  (2)它是动态的 (3)它是模块化的...
  • u010870518
  • u010870518
  • 2014年09月03日 10:30
  • 1803

Servlet之过滤器Filter详解

一、过滤器的基本工作原理 1、过滤器的基本工作原理 过滤器的基本工作原理如图4-8示。 2、过滤器的特点 过滤器具备有以下特点: (1)它是声明式的 (2)它是动态的 ...
  • cyh518598
  • cyh518598
  • 2014年09月03日 15:49
  • 262

JQuery之过滤器

过滤器的作用,主要是通过特定的约束条件,来更加精确的晒选出目标DOM元素对象;过滤器的基本语法类似于CSS中伪类语使用:号开头...
  • kai22222
  • kai22222
  • 2017年04月06日 17:26
  • 328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Servlet之过滤器2
举报原因:
原因补充:

(最多只允许输入30个字)