激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - javaweb設計中filter粗粒度權限控制代碼示例

javaweb設計中filter粗粒度權限控制代碼示例

2021-01-18 09:55bluzelee2011 Java教程

這篇文章主要介紹了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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一级在线免费观看 | 国产免费一区二区三区最新不卡 | 717影院理论午夜伦八戒秦先生 | 全黄裸片武则天艳史 | 久久精品日产高清版的功能介绍 | 伊人成人免费视频 | 在线免费日本 | www.69色| 久久久久中精品中文字幕19 | 免费网站看v片在线a | 欧洲精品久久 | 黄色日韩网站 | 精品亚洲夜色av98在线观看 | 九九热久久免费视频 | 在线看免费观看av | 久久精品av | 色播视频在线播放 | 天天操天天碰 | 国产91精品亚洲精品日韩已满 | 国产xxxx岁13xxxxhd | 日韩字幕在线观看 | 欧美日韩在线看片 | 在线看小早川怜子av | 国产精品视频一区二区三区四区五区 | 91 免费视频 | 色婷婷tv | 欧美亚洲国产一区二区三区 | 久久在线免费视频 | 国产成人自拍av | 一级黄色毛片a | 黄色的视频免费观看 | 精品久久久一二三区播放播放播放视频 | 国产美女爽到喷白浆的 | 久久91亚洲人成电影网站 | 欧美 国产 综合 | 天天色综合6 | 久色婷婷 | 国毛片| 成人国产精品色哟哟 | 国产精品99久久久久久久女警 | 操网|