<small id="7ktuj"></small>
      <bdo id="7ktuj"></bdo>
        <mark id="7ktuj"></mark>

        <source id="7ktuj"></source>
        <small id="7ktuj"></small>

        ITPub博客

        首頁 > 應用開發 > Java > Java Servlet session實現登錄退出

        Java Servlet session實現登錄退出

        原創 Java 作者:蝴蝶飛啊飛 時間:2019-11-04 12:56:44 0 刪除 編輯

        UserDao.java 從數據庫中查詢用戶名與密碼

        // 登錄

        public User login(User user) throws SQLException {

        QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());

        String sql = "select * from user where username = ? and password = ?";

        return qr.query(sql, new BeanHandler<User>(User.class),user.getUsername(),user.getPassword());

        }

        UserService.java

        public User login(User user){

        try {

        return ud.login(user);

        } catch (SQLException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

        }

        return null;

        }

        UserServlet.java 實現登錄功能

        // 登錄

        public void login(HttpServletRequest request,

        HttpServletResponse response) throws IOException, IllegalAccessException, InvocationTargetException, ServletException{

        Map<String,String[]> map = request.getParameterMap();

        User user = new User();

        BeanUtils.populate(user,map);

        if (map.get("autoLogin")!=null){

        Cookie username = new Cookie("username", map.get("username")[0]);

        username.setMaxAge(60*60);

        Cookie password = new Cookie("password", map.get("password")[0]);

        password.setMaxAge(60*60);

        response.addCookie(username);

        response.addCookie(password);

        }

        user = us.login(user);

        if (user != null){

        request.getSession().setAttribute("user", user);

        response.sendRedirect("/ShopStore/default.jsp");

        }

        else{

        request.setAttribute("message", " 用戶或密碼錯誤! ");

        request.getRequestDispatcher("/login.jsp").forward(request, response);

        }

        }

        工具類:AutoLoginFilter.java 用來實現自動登錄

        package com.yinhe.web.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.Cookie;

        import javax.servlet.http.HttpServletRequest;

        import javax.servlet.http.HttpServletResponse;

        import com.yinhe.bean.User;

        import com.yinhe.service.UserService;

        public class AutoLoginFilter implements Filter{

        @Override

        public void doFilter(ServletRequest request, ServletResponse response,

        FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest)request;

        HttpServletResponse resp = (HttpServletResponse)response;

        // 是否已登錄

        if (req.getSession().getAttribute("user") == null){// 如果已登錄,則啥都不干

        // 判斷 cookie 中有沒有賬戶密碼

        Cookie[] cookies = req.getCookies();

        if (cookies != null){

        String username = "";

        String userpass = "";

        for (Cookie cookie : cookies) {

        if (cookie.getName().equals("username")){// 找到感興趣的 cookie

        username = cookie.getValue();

        }

        if (cookie.getName().equals("password")){// 找到感興趣的 cookie

        userpass = cookie.getValue();

        }

        }

        UserService us = new UserService();

        User user = new User();

        user.setUsername(username);

        user.setPassword(userpass);

        if (us.login(user) != null){

        req.getSession().setAttribute("user", user);

        }

        }

        }

        chain.doFilter(request, response);

        }

        @Override

        public void init(FilterConfig filterConfig) throws ServletException {

        // TODO Auto-generated method stub

        }

        @Override

        public void destroy() {

        // TODO Auto-generated method stub

        }

        }

        前臺:login.jsp 此單選框被選中下次訪問即為自動登錄

        <div>

        <label> <input type="checkbox" name="autoLogin" > 自動登錄

        </label>      <label> <input

        type="checkbox" > 記住用戶名

        </label>

        </div>

        <%@ page contentType="text/html;charset=UTF-8" language="java" %>

        <html>

        <head>

            <title> 系統首頁 </title>

            <style>

                #nav{

                    height: 88px;

                    padding: 5px 200px;

                    background-color: aquamarine;

                }

                #logo{

                    float: left;

                }

                #userinfo{

                    float: right;

                    height: 50px;

                    line-height: 80px;

                }

                #container{

                   background-color: aqua;

                    height: 800px;

                    margin: 2px 200px;

                    font-size: xx-large;

                    text-align: center;

                }

            </style>

        </head>

        <body>

        <div id="nav">

            <div id="logo">

            <img src="csdn-logo_.png" width="180" height="88">

            </div>

                <div id="userinfo">

                   <%--   不推薦使用

                   <%

                       String loginUser = (String) request.getAttribute("loginUser");

                       if (loginUser != null){

                             out.println(loginUser);

                      }else {

                           %>

                           <a href="login.jsp"> 登錄 </a><a>/ 注冊 </a>

                    <%

                       }

                       %>

                    --%>

                    <%

                        String loginUser = (String) session.getAttribute("loginUser");

                        if (loginUser != null){

                            out.println(loginUser);

                            out.println("<a href='logoutServlet'> 退出 </a>");

                        }else {

                    %>

                       <a href="login.jsp"> 登錄 </a><a>/ 注冊 </a>

                       <%

                           }

                       %>

                </div>

        </div>

        <div id="container">

             主頁內容

            <a href="info.jsp">Python ——畫一棵漂亮的櫻花樹(不同種櫻花 + 玫瑰 + 圣誕樹喔) </a>

        </div>

        </body>

        </html>

        login.jsp

        <%@ page contentType="text/html;charset=UTF-8" language="java" %>

        <html>

        <head>

            <title> 登錄 </title>

            <style>

                tr{

                    height:50px;

                }

                td{

                    text-align: center;

                }

            </style>

        </head>

        <body>

        <%

            String msg = (String)request.getAttribute("msg");

        %>

        <%

         if(msg != null){

           out.print(msg);

         }

        %>

        <form action="myServlet02" method="get">

            <h1> 登錄 </h1>

            <table width="500" border="1" cellspacing="0" cellpadding="0">

                <tr>

                    <td> 賬號: </td>

                    <td><input type="text" name="username" /></td>

                </tr>

                <tr>

                    <td> 密碼: </td>

                    <td><input type="password" name="password" /></td>

                </tr>

                <tr>

                    <td colspan="2"><input type="submit" value=" 登錄 " /></td>

                </tr>

            </table>

        </form>

        </body>

        </html>

        info.jsp

        <%@ page contentType="text/html;charset=UTF-8" language="java" %>

        <html>

        <head>

            <title>Title</title>

            <style>

                #nav{

                    height: 88px;

                    padding: 5px 200px;

                    background-color: aquamarine;

                }

                #logo{

                    float: left;

                }

                #userinfo{

                    float: right;

                    height: 50px;

                    line-height: 80px;

                }

                #container{

                    background-color: aqua;

                    height: 800px;

                    margin: 2px 200px;

                    font-size: xx-large;

                    text-align: center;

                }

            </style>

        </head>

        <body>

        <div id="nav">

            <div id="logo">

                <img src="csdn-logo_.png" width="180" height="88">

            </div>

            <div id="userinfo">

                <%

                    String loginUser = (String) session.getAttribute("loginUser");

                    if (loginUser != null){

                        out.println(loginUser);

                        out.println("<a href='logoutServlet'> 退出 </a>");

                    }else {

                %>

                <a href="login.jsp"> 登錄 </a><a>/ 注冊 </a>

                <%

                    }

                %>

            </div>

        </div>

        <div id="container">

             主頁內容

        </div>

        </body>

        </html>

        Servlet02.java

        import javax.servlet.http.HttpServletRequest;

        import javax.servlet.http.HttpServletResponse;

        import javax.servlet.http.HttpSession;

        import java.io.IOException;

        @WebServlet("/myServlet02")

        public class Servlet02 extends HttpServlet {

            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                  // 修改編碼

                request.setCharacterEncoding("utf-8");// 請求過來的編碼是外匯IBhttp://www.kaifx.cn/ utf-8

                response.setContentType("text/html;charset=utf-8");// 響應出去的內容,為網頁編碼 utf-8

                // 獲取表單數據

                String username = request.getParameter("username");

                String password = request.getParameter("password");

                // 驗證

                if("aaa".equals(username) && "123".equals(password)){

                    // 跳轉 ( 請求轉發 請求重定向 )

                    // 重定向:兩次請求,不能在 request 作用域享數據。

                    // 如果要在兩次請求或多次請求之間,進行數據共享,需要用 session

                    // 使用 session 步驟

                    // 獲取 session

                     HttpSession session = request.getSession();// 如果存在已有的 session ,則直接返回,否則會創建一個新的,返回。

                    //HttpSession session = request.getSession(true);// 同上

                    //HttpSession session = request.getSession(false);// 如果存在已有的 session ,則直接返回,否則返回 null

                    // session 的作用域保存數據,供后續請求使用

                    session.setAttribute("loginUser",username);

                    response.sendRedirect("index.jsp");

                    /*   多個頁面不推薦使用請求轉發

                   request.setAttribute("loginUser",username);

                    request.getRequestDispatcher("index.jsp").forward(request,response);

                    */

                }else {

                    // 轉發:一次請求,可以在 request 作用域中,共享數據

                    request.setAttribute("msg","<script>alert(' 登錄失敗! ');</script>");

                   // response.sendRedirect("login.jsp");

                    request.getRequestDispatcher("login.jsp").forward(request,response);

                }

            }

            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                doPost(request, response);

            }

        }

        LogoutServlet.java

        import javax.servlet.ServletException;

        import javax.servlet.annotation.WebServlet;

        import javax.servlet.http.HttpServlet;

        import javax.servlet.http.HttpServletRequest;

        import javax.servlet.http.HttpServletResponse;

        import javax.servlet.http.HttpSession;

        import java.io.IOException;

        @WebServlet("/logoutServlet")

        public class LogoutServlet extends HttpServlet {

            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                // 退出系統

                // 獲取 session

                HttpSession session = request.getSession();

                // 刪除 session

                session.removeAttribute("loginUser");

                // 跳轉到登錄頁面 / 首頁

                response.sendRedirect("index.jsp");

            }

            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                doPost(request, response);

            }

        }

        web.xml

        <?xml version="1.0" encoding="UTF-8"?>

        <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

                 version="3.1">

            <welcome-file-list>

                <welcome-file>index.jsp</welcome-file>

            </welcome-file-list>

        </web-app>

        來自 “ ITPUB博客 ” ,鏈接:http://www.ep4tq.com/69946279/viewspace-2662508/,如需轉載,請注明出處,否則將追究法律責任。

        上一篇: Java基礎中的IO流
        下一篇: Mustache要點總結
        請登錄后發表評論 登錄
        全部評論
        管他誰是誰非,做自己的主宰,我是這條街最亮的崽!

        注冊時間:2019-08-22

        • 博文量
          45
        • 訪問量
          18751
        妹子图每日分享