gpt4 book ai didi

JavaWeb实现自动登录功能

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

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

这篇CFSDN的博客文章JavaWeb实现自动登录功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例为大家分享了JavaWeb实现自动登录功能的具体代码,供大家参考,具体内容如下 。

自动登录是通过存储cookie值来实现的.

工程目录如下:

JavaWeb实现自动登录功能

login.jsp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page language="java" contentType="text/html; charset=utf-8"
     pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< title >登录</ title >
</ head >
< body >
     < form action = "login" method = "post" >
         用户名:< input name = "username" type = "text" >< br >
         密码:< input name = "password" type = "password" >
         < input type = "checkbox" name = "autoLogin" value = "autoLogin" >自动登录
         < input type = "submit" value = "提交" >
     </ form >
</ body >
</ html >

success.jsp(主要用于测试是否储存成功)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=utf-8"
     pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< title >Insert title here</ title >
</ head >
< body >
     ${sessionScope.username }< br >
     ${sessionScope.password }
</ body >
</ html >

LoginServlet(用于登录逻辑处理)

?
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package servletLogin;
 
import java.io.IOException;
import java.net.URLEncoder;
 
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
 
public class LoginServlet extends HttpServlet {
     private static final long serialVersionUID = 1L;
    
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         doPost(request,response);
     }
 
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         request.setCharacterEncoding( "utf-8" );
         String username = request.getParameter( "username" );
         String password = request.getParameter( "password" );
        
         HttpSession session = request.getSession();
         //登录成功,(在这应该是和数据库的值对比)
         if (username.equals( "alan呵呵" ) && password.equals( "123" )){
            
             String autoLogin = request.getParameter( "autoLogin" );
 
             if (autoLogin!= null ){
 
                 //编码是为了在cookie中存储汉字
                 String usernameCode = URLEncoder.encode(username, "utf-8" );
                
                 Cookie usernameCookie = new Cookie( "username" ,usernameCode);
                 Cookie passwordCookie = new Cookie( "password" ,password);
                 //设置持久化时间
                 usernameCookie.setMaxAge( 60 * 60 );
                 passwordCookie.setMaxAge( 60 * 60 );
                 //设置cookie携带路径
                 usernameCookie.setPath(request.getContextPath());
                 passwordCookie.setPath(request.getContextPath());
                 //发送cookie
                 response.addCookie(usernameCookie);
                 response.addCookie(passwordCookie);
             }
            
             session.setAttribute( "username" , username);
             session.setAttribute( "password" , password);
             response.sendRedirect( "success.jsp" );
         } else {
             request.getRequestDispatcher( "login.jsp" ).forward(request, response);
         }
     }
}

LoginFilter(用于自动登录的拦截器)

?
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package filter;
 
import java.io.IOException;
import java.net.URLDecoder;
 
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.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
 
 
public class LoginFilter implements Filter {
 
     public void doFilter(ServletRequest request, ServletResponse response,
             FilterChain chain) throws IOException, ServletException {
 
         HttpServletRequest req = (HttpServletRequest) request;
         HttpSession session = req.getSession();
 
         // 获得cookie中用户名和密码 进行登录的操作
         // 定义cookie_username
         String cookie_username = null ;
         // 定义cookie_password
         String cookie_password = null ;
         // 获得cookie
         Cookie[] cookies = req.getCookies();
         if (cookies != null ) {
             for (Cookie cookie : cookies) {
                 // 获得名字是cookie_username和cookie_password
                 if ( "username" .equals(cookie.getName())) {
                     cookie_username = cookie.getValue();
                     // 对cookie中的值解码
                     cookie_username = URLDecoder.decode(cookie_username,
                             "UTF-8" );
                 }
                 if ( "password" .equals(cookie.getName())) {
                     cookie_password = cookie.getValue();
                 }
             }
         }
        
         if (cookie_username != null && cookie_password != null ){
             if (cookie_username.equals( "alan呵呵" ) && cookie_password.equals( "123" )){
                 session.setAttribute( "username" , cookie_username);
                 session.setAttribute( "password" , cookie_password);
             }
         }
         chain.doFilter(request, response);
     }
     public void destroy() {
     }
     public void init(FilterConfig fConfig) throws ServletException {
     }
}

web.xml配置文件:

?
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
<? xml version = "1.0" encoding = "UTF-8" ?>
< web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id = "WebApp_ID"
version = "2.5" >
   < display-name >WEB24</ display-name >
 
 
   <!-- 自动登录的filter -->
  < filter >
       < filter-name >AutoLoginFilter</ filter-name >
       < filter-class >filter.LoginFilter</ filter-class >
   </ filter >
   < filter-mapping >
       < filter-name >AutoLoginFilter</ filter-name >
       < url-pattern >/*</ url-pattern >
   </ filter-mapping >
 
 
   < welcome-file-list >
     < welcome-file >login.jsp</ welcome-file >
   </ welcome-file-list >
 
   < servlet >
     < servlet-name >LoginServlet</ servlet-name >
     < servlet-class >servletLogin.LoginServlet</ servlet-class >
   </ servlet >
   < servlet-mapping >
     < servlet-name >LoginServlet</ servlet-name >
     < url-pattern >/login</ url-pattern >
   </ servlet-mapping >
 
 
</ web-app >

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

原文链接:https://blog.csdn.net/Alan_TW/article/details/80535844 。

最后此篇关于JavaWeb实现自动登录功能的文章就讲到这里了,如果你想了解更多关于JavaWeb实现自动登录功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

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