登錄界面代碼實現


登錄界面代碼實現

要求

  1. 一個注冊頁面(form表單,servlet)
    username(文本框)
    password:密碼(密碼框)
    passwordYes :再次輸入密碼(密碼框)
    hobby(多選框)
    sex(單選框)
    info(文本域)
  2. servlet處理注冊信息
    判斷兩次密碼是否相同
    相同則跳到成功頁面,並且在成功頁面顯示SeesionID;
    不同則注冊失敗,重定向到注冊頁面
  3. 成功頁面
    顯示登陸成功的用戶名,密碼,愛好,性別和信息;
    顯示一個注銷按鈕
  4. 如果注銷后,或者沒登錄,不能直接進入成功頁面,跳轉到錯誤界面

詳細步驟

  1. 首先建立web項目,建包,導相關的jar包,並關聯Tomcat。

  2. 建立:登錄成功的success.jsp文件,登錄界面的jsp文件register.jsp,錯誤界面的jsp文件nologin.jsp,登錄錯誤的Servlet文件loginOutServlet.java,登錄Servlet文件RegisterServlet.java,並打開web.xml和index.jsp。

  3. 編輯index.jsp文件

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/7/16
      Time: 8:54
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>主界面</title>
        <style>
          div{
            margin: 0 auto;
            text-align: center;
          }
        </style>
      </head>
      <body>
      <div>
      <h1>HomeWork</h1>
      <hr>
      <a href="${pageContext.request.contextPath}/register.jsp">點擊注冊</a>
      </div>
      </body>
    </html>
    
  4. 編寫register登錄網頁

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/7/16
      Time: 10:15
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>register</title>
        <%--如果兩次密碼不相同,關聯RegisterServlet中if判斷密碼是否正確中的else--%>
        <script>
            var status = '${sessionScope.passwordError}';
            if (status == "yes") {
                alert("輸入信息有誤,請重新輸入")
            }
        </script>
    </head>
    <body>
    <h1>歡迎來到注冊界面</h1>
    <hr>  <%--分割線--%>
    <div>
        <%--form表單--%>
        <form action="${pageContext.request.contextPath}/register.do" method="post">
            <p>用戶名:<input type="text" name="username" required></p>
            <p>密碼:<input type="password" name="password" required></p>
            <p>密碼確認:<input type="password" name="confirmPassword" required></p>
            <p>性別:
                <input type="radio" name="gender" value="male">男
                <input type="radio" name="gender" value="female">女
            </p>
            <p>愛好:
                <input type="checkbox" name="hobby" value="oppositeSex">異性
                <input type="checkbox" name="hobby" value="dance">舞蹈
                <input type="checkbox" name="hobby" value="music">音樂
                <input type="checkbox" name="hobby" value="movies">電影
            </p>
            <p>個人簡介:
                <textarea name="info"></textarea>
            </p>
            <p>
                <input type="submit" value="提交">
                <input type="reset" value="重置">
            </p>
        </form>
    </div>
    </body>
    </html>
    
  5. 編輯登錄Servlet(RegisterServlet.java)

    package com.li.work;
    
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.util.Arrays;
    
    public class RegisterServlet extends javax.servlet.http.HttpServlet {
        protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            doGet(request, response);
        }
    
        protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            request.setCharacterEncoding("UTF-8");//處理亂碼問題
            response.setCharacterEncoding("UTF-8");//處理亂碼問題
            //獲得用戶在register界面提交的數據
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String confirmPassword = request.getParameter("confirmPassword");
            String gender = request.getParameter("gender");
            String info = request.getParameter("info");
            String[] hobbies = request.getParameterValues("hobby");
            //判斷密碼是否正確
            if (password.equals(confirmPassword)){//如果密碼相同,重定向到成功界面
                HttpSession session = request.getSession();//獲取session
                session.setAttribute("session_username",username);
                session.setAttribute("session_password",password);
                session.setAttribute("session_gender",gender);
                session.setAttribute("session_info",info);
                session.setAttribute("session_hobby", Arrays.toString(hobbies));
                response.sendRedirect("success.jsp");//重定向到成功頁面
            }else {//如果密碼不同,通知用戶密碼輸入不一樣
                request.getSession().setAttribute("passwordError","yes");
                response.sendRedirect("register.jsp");//重定向到登陸界面
            }
        }
    }
    
  6. 編輯成功web界面(success.jsp)

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/7/16
      Time: 10:12
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>success</title>
        <style>
            h1{
                margin: 0 auto;
                text-align: center;
            }
            p>span{
                font-weight: bold;
            }
        </style>
    
        <%
            HttpSession loginSession = request.getSession();
            if (loginSession.getAttribute("session_username")==null){//如果session中的用戶名為空
                request.getRequestDispatcher("errorpage/nologin.jsp").forward(request,response);//轉發至nologin(注冊有誤)界面
            }
        %>
    </head>
    <body>
    <h1>注冊成功</h1>
    <!--顯示用戶信息,顯示內容從RegisterServlet.java中的session中獲得-->
    <p>
        歡迎用戶:<span>${sessionScope.session_username}</span>加入本項目<br>
        用戶名:<span>${sessionScope.session_username}</span><br>
        密碼:<span>${sessionScope.session_password}</span><br>
        性別:<span>${sessionScope.session_gender}</span><br>
        愛好:<span>${sessionScope.session_hobby}</span><br>
        個人簡介:<span>${sessionScope.session_info}</span><br>
    </p>
    <!--添加注銷按鈕,用a標簽跳轉到loginOutServlet中的loginOut.do-->
    <p>
        <a href="${pageContext.request.contextPath}/loginOut.do">注銷</a>
    </p>
    </body>
    </html>
    
  7. 編輯注銷的Servlet文件(loginOutServlet.java)

    package com.li.work;
    
    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(name = "loginOutServlet")
    public class loginOutServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request,response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            HttpSession session = request.getSession();//獲取session
            if (session==null){
                response.sendRedirect("index.jsp");
                return;
            }
            //注銷session,移除session中的數據
            session.removeAttribute("session_username");
            session.removeAttribute("session_password");
            session.removeAttribute("session_gender");
            session.removeAttribute("session_info");
            session.removeAttribute("session_hobby");
            //刪除數據后跳轉至success界面
            response.sendRedirect("success.jsp");
        }
    }
    
  8. 編輯登錄信息有誤的nologin界面(nologin.jsp)

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/7/16
      Time: 10:14
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>NoLoginPage</title>
        <style>
            div{
                margin: 0 auto;
                text-align: center;
            }
        </style>
    </head>
    <body>
    
    <div>
        <h1>找不到信息,未注冊或已注銷,請點擊登錄!</h1>
        <hr>
        <a href="${pageContext.request.contextPath}/register.jsp">點擊注冊</a>
    </div>
    
    </body>
    </html>
    
  9. 編輯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_4_0.xsd"
             version="4.0">
        <servlet>
            <servlet-name>RegisterServlet</servlet-name>
            <servlet-class>com.li.work.RegisterServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>loginServlet</servlet-name>
            <servlet-class>com.li.work.loginOutServlet</servlet-class>
        </servlet>
        <!--========================================================================-->
        <servlet-mapping>
        <servlet-name>RegisterServlet</servlet-name>
        <url-pattern>/register.do</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>loginServlet</servlet-name>
            <url-pattern>/loginOut.do</url-pattern>
        </servlet-mapping>
    </web-app>
    

要重點搞清楚文件和文件之間的關系和關聯,具體方法可以用倒推法,一點一點從網頁尋找會Servlet的.java文件中。另外要注意鏈接各個網頁時候路徑的位置,包不同路徑就不同。


本文是簡單的登錄界面的代碼實現,更復雜的部分和思想不再本文考慮范圍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM