gpt4 book ai didi

javaweb设计中filter粗粒度权限控制代码示例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章javaweb设计中filter粗粒度权限控制代码示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1 说明 。

我们给出三个页面:index.jsp、user.jsp、admin.jsp.

index.jsp:谁都可以访问,没有限制; 。

user.jsp:只有登录用户才能访问; 。

admin.jsp:只有管理员才能访问.

2 分析 。

设计User类:username、password、grade,其中grade表示用户等级,1表示普通用户,2表示管理员用户.

当用户登录成功后,把user保存到session中.

创建LoginFilter,它有两种过滤方式:

如果访问的是user.jsp,查看session中是否存在user; 如果访问的是admin.jsp,查看session中是否存在user,并且user的grade等于2.

3 代码 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<? xml version = "1.0" encoding = "UTF-8" ?>
< web-app version = "2.5"
  xmlns = "http://java.sun.com/xml/ns/javaee"
  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
< servlet >
  < servlet-name >LoginServlet</ servlet-name >
  < servlet-class >com.cug.web.servlet.LoginServlet</ servlet-class >
</ servlet >
< servlet-mapping >
  < servlet-name >LoginServlet</ servlet-name >
  < url-pattern >/LoginServlet</ url-pattern >
</ servlet-mapping >
< welcome-file-list >
  < welcome-file >index.jsp</ welcome-file >
</ welcome-file-list >
< filter >
  < filter-name >UserFilter</ filter-name >
  < filter-class >com.cug.filter.UserFilter</ filter-class >
</ filter >
< filter-mapping >
  < filter-name >UserFilter</ filter-name >
  < url-pattern >/user/*</ url-pattern >
</ filter-mapping >
< filter >
  < filter-name >AdminFilter</ filter-name >
  < filter-class >com.cug.filter.AdminFilter</ filter-class >
</ filter >
< filter-mapping >
  < filter-name >AdminFilter</ filter-name >
  < url-pattern >/admin/*</ url-pattern >
</ filter-mapping >
</ web-app >

LoginServlet.java 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.cug.web.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cug.domain.User;
import com.cug.web.service.UserService;
public class LoginServlet extends HttpServlet{
     @Override
      protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
         req.setCharacterEncoding( "utf-8" );
         resp.setContentType( "text/html;charset=utf-8" );
         String username = req.getParameter( "username" );
         String password = req.getParameter( "password" );
         User user = UserService.login(username, password);
         if (user == null ){
             req.setAttribute( "msg" , "用户名或者密码错误" );
             req.getRequestDispatcher( "/login.jsp" ).forward(req, resp);
         } else {
             req.getSession().setAttribute( "user" , user);
             req.getRequestDispatcher( "index.jsp" ).forward(req,resp);
         }
     }
}

UserService 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.cug.web.service;
import java.util.HashMap;
import java.util.Map;
import com.cug.domain.User;
public class UserService {
     private static Map<String, User> users = new HashMap<String, User>();
     static {
         users.put( "zhu" , new User( "zhu" , "123" , 2 ));
         users.put( "xiao" , new User( "xiao" , "123" , 1 ));
     }
     public static User login(String username, String password){
         User user = users.get(username);
         if (user == null )
            return null ;
         if (!user.getPassword().equals(password))
            return null ;
         return user;
     }
}

AdminFilter 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.cug.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.cug.domain.User;
public class AdminFilter implements Filter{
     @Override
      public void destroy() {
     }
     @Override
      public void doFilter(ServletRequest req, ServletResponse resp,
        FilterChain chain) throws IOException, ServletException {
         req.setCharacterEncoding( "utf-8" );
         resp.setContentType( "text/html;charset=utf-8" );
         HttpServletRequest request = (HttpServletRequest)req;
         User user = (User)request.getSession().getAttribute( "user" );
         if (user == null ){
             resp.getWriter().print( "用户还没有登陆" );
             request.getRequestDispatcher( "/login.jsp" ).forward(req, resp);
         }
         if (user.getGrade() < 2 ){
             resp.getWriter().print( "您的等级不够" );
             return ;
         }
         chain.doFilter(req, resp);
     }
     @Override
      public void init(FilterConfig arg0) throws ServletException {
     }
}

UserFilter 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.cug.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.cug.domain.User;
public class UserFilter implements Filter{
     @Override
      public void destroy() {
     }
     @Override
      public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
         request.setCharacterEncoding( "utf-8" );
         response.setContentType( "text/html;charset=utf-8" );
         HttpServletRequest httpReq = (HttpServletRequest)request;
         User user = (User)httpReq.getSession().getAttribute( "user" );
         if (user == null ){
             request.getRequestDispatcher( "/login.jsp" ).forward(request, response);
         }
         chain.doFilter(request, response);
     }
     @Override
      public void init(FilterConfig filterConfig) throws ServletException {
     }
}

User 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.cug.domain;
public class User {
     private String username;
     private String password;
     private int grade;
     public User() {
         super ();
     }
     public User(String username, String password, int grade) {
         super ();
         this .username = username;
         this .password = password;
         this .grade = grade;
     }
     public String getUsername() {
         return username;
     }
     public void setUsername(String username) {
         this .username = username;
     }
     public String getPassword() {
         return password;
     }
     public void setPassword(String password) {
         this .password = password;
     }
     public int getGrade() {
         return grade;
     }
     public void setGrade( int grade) {
         this .grade = grade;
     }
     @Override
      public String toString() {
         return "User [username=" + username + ", password=" + password
             + ", grade=" + grade + "]" ;
     }
}

html 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
  < head >
  < base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
  < title >My JSP 'admin.jsp' starting page</ title >
  < meta http-equiv = "pragma" content = "no-cache" >
  < meta http-equiv = "cache-control" content = "no-cache" >
  < meta http-equiv = "expires" content = "0"
  < meta http-equiv = "keywords" content = "keyword1,keyword2,keyword3" >
  < meta http-equiv = "description" content = "This is my page" >
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
  -->
  </ head >
  < body >
  < h1 >admin.jsp</ h1 >
  < h3 >${user.username }</ h3 >
  < a href="<c:url value = '/index.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</ a >< br />
  < a href="<c:url value = '/user/user.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >用户页</ a >< br />
  < a href="<c:url value = '/admin/admin.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >系统管理员</ a >< br />
  </ body >
</ html >

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
  < head >
  < base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
  < title >My JSP 'user.jsp' starting page</ title >
  < meta http-equiv = "pragma" content = "no-cache" >
  < meta http-equiv = "cache-control" content = "no-cache" >
  < meta http-equiv = "expires" content = "0"
  < meta http-equiv = "keywords" content = "keyword1,keyword2,keyword3" >
  < meta http-equiv = "description" content = "This is my page" >
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
  -->
  </ head >
  < body >
  < h1 >user.jsp</ h1 >
  < h3 >${user.username }</ h3 >
  < a href="<c:url value = '/index.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</ a >< br >
  < a href="<c:url value = '/user/user.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >用户登陆界面</ a >< br >
  < a href="<c:url value = '/admin/admin.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >管理员登陆界面</ a >< br >
  </ body >
</ html >

用户登录 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
  < head >
  < base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
  < title >My JSP 'login.jsp' starting page</ title >
  < meta http-equiv = "pragma" content = "no-cache" >
  < meta http-equiv = "cache-control" content = "no-cache" >
  < meta http-equiv = "expires" content = "0"
  < meta http-equiv = "keywords" content = "keyword1,keyword2,keyword3" >
  < meta http-equiv = "description" content = "This is my page" >
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
  -->
  </ head >
  < body >
  ${msg }
  < form action="<c:url value = '/LoginServlet' />" method="post">
   用户名:< input type = "text" name = "username" />< br />
   密码:< input type = "password" name = "password" />< br />
   < input type = "submit" value = "登陆" />
  </ form >
  </ body >
</ html >

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
  < head >
  < base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
  < title >My JSP 'index.jsp' starting page</ title >
  < meta http-equiv = "pragma" content = "no-cache" >
  < meta http-equiv = "cache-control" content = "no-cache" >
  < meta http-equiv = "expires" content = "0"
  < meta http-equiv = "keywords" content = "keyword1,keyword2,keyword3" >
  < meta http-equiv = "description" content = "This is my page" >
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
  -->
  </ head >
  < body >
  < h1 >index.jsp</ h1 >
  < h3 >${user.username }</ h3 >
  < a href="<c:url value = '/index.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</ a >< br >
  < a href="<c:url value = '/user/user.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >用户登陆界面</ a >< br >
  < a href="<c:url value = '/admin/admin.jsp' />" rel="external nofollow" rel="external nofollow" rel="external nofollow" >管理员登陆界面</ a >< br >
  </ body >
</ html >

  。

总结 。

以上就是本文关于javaweb设计中filter粗粒度权限控制代码示例的全部内容,希望对大家有所帮助,如有不足之处,欢迎留言指正。感谢大家对本站的支持! 。

原文链接:http://blog.csdn.net/bluzelee2011/article/details/42784479 。

最后此篇关于javaweb设计中filter粗粒度权限控制代码示例的文章就讲到这里了,如果你想了解更多关于javaweb设计中filter粗粒度权限控制代码示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com