1. 程式人生 > >用MVC設計模式實現簡單的JavaWeb登入註冊功能

用MVC設計模式實現簡單的JavaWeb登入註冊功能

MVC

全稱Model(模型)-View(檢視)-Controller(控制器),這是一種開發模式,他的好處是可以將介面和業務邏輯分離。
Model(模型),是程式的主體部分,主要包含業務資料和業務邏輯。在模型層,還會涉及到使用者釋出的服務,在服務中會根據不同的業務需求,更新業務模型中的資料。
View(檢視),是程式呈現給使用者的部分,是使用者和程式互動的介面,使用者會根據具體的業務需求,在View檢視層輸入自己特定的業務資料,並通過介面的事件互動,將對應的輸入引數提交給後臺控制器進行處理。
Controller(控制器),Controller是用來處理使用者輸入資料,已經更新業務模型的部分。控制器中接收了使用者與介面互動時傳遞過來的資料,並根據資料業務邏輯來執行服務的呼叫和更新業務模型的資料和狀態。
MVC的處理過程:首先控制器接受使用者的請求,呼叫相應的模型來進行業務處理,並返回資料給控制器。控制器呼叫相應的檢視來顯示處理的結果。並通過檢視呈現給使用者。實現人機資料之間的互動;

開發環境

工具:Intellij IDEA,Tomcat,MySQL,Navicat premium
用到的jar包:mysql-connector-java-5.1.46-bin.jar
確保開發環境搭建無誤,並且已經建立好了test資料庫和user表。

專案結構

這裡寫圖片描述

資料庫名test,表名user,表結構如下

這裡寫圖片描述

User

package com.lala.bean;

/**
 * Created by 20901 on 2018/4/17.
 */
public class User {
    private Integer id;
    private String name;
    private
String password; private int role; public User() { super(); // TODO Auto-generated constructor stub } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public
void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getRole() { return role; } public void setRole(int role) { this.role = role; } }

UserDAO

package com.lala.dao;

/**
 * Created by 20901 on 2018/4/17.
 */

import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.SQLException;


import com.lala.bean.User;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;




public class UserDAO {
    public static final String DBurl = "jdbc:mysql://127.0.0.1/test?characterEncoding=utf8&useSSL=true";
    public static final String DBname = "com.mysql.jdbc.Driver";
    public static final String DBuser = "root";
    public static final String DBpassword = "root";


    public  User  login(int id,String password) {

        User u = null;
        Connection connection =null;
        PreparedStatement pstmt=null;
        ResultSet resultSet=null;

        //賦值
        try {
            try {
                Class.forName(DBname);//指定連線型別
                connection = (Connection)DriverManager.getConnection(DBurl, DBuser, DBpassword);//獲取連線
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }

            //靜態sql語句
            String sql = "select * from user where id=? and password=?";
            pstmt = (PreparedStatement) connection.prepareStatement(sql);
            pstmt.setInt(1, id);
            pstmt.setString(2, password);
            resultSet = pstmt.executeQuery();

            if(resultSet.next()){
                u=new User();
                u.setId(resultSet.getInt("id"));
                u.setName(resultSet.getString("name"));
                u.setPassword(resultSet.getString("password"));
                u.setRole(resultSet.getInt("role"));
                System.out.println("登入成功!");
            }else{
                System.out.println("使用者名稱或者密碼錯誤!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if(pstmt !=null){
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if(connection !=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }
        return u;

    }
    public boolean addUser(User u) {
        Connection connection = null;
        PreparedStatement psmt = null;
        boolean boo = false;

        try {
            try {
                Class.forName(DBname);//指定連線型別
                connection = (Connection)DriverManager.getConnection(DBurl, DBuser, DBpassword);//獲取連線
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }

            String sql  ="insert into user(id,name,password,role)values(?,?,?,?);";

            psmt = (PreparedStatement) connection.prepareStatement(sql);

            //運用實體物件進行引數賦值
            psmt.setInt(1, u.getId());
            psmt.setString(2, u.getName());
            psmt.setString(3,u.getPassword());
            psmt.setInt(4, u.getRole());

            int result = psmt.executeUpdate();
            if(result > 0){
                boo = true;
                System.out.println("插入資料成功");
            }else{
                System.out.println("未插入資料");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            try {
                connection.close();
                psmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return boo;
    }
}

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: 20901
  Date: 2018/3/5
  Time: 20:05
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>主頁</title>
  </head>
  <body>
  <a href=LoginPageServlet?url=WEB-INF/pages/Login.jsp>登入頁</a>
  <a href=RegisterPageServlet?url=WEB-INF/pages/Register.jsp>註冊頁</a>
  </body>
</html>

LoginPageServlet

package com.lala.dispatcherServlet;

import java.io.IOException;

/**
 * Created by 20901 on 2018/4/17.
 */
public class LoginPageServlet 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 {
        String url=request.getParameter("url");
        request.getRequestDispatcher(url).forward(request, response);
    }
}

RegisterPageServlet

package com.lala.dispatcherServlet;

import java.io.IOException;

/**
 * Created by 20901 on 2018/4/17.
 */
public class RegisterPageServlet 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 {
        String url=request.getParameter("url");
        request.getRequestDispatcher(url).forward(request, response);
    }
}

Login.jsp

<%--
  Created by IntelliJ IDEA.
  User: 20901
  Date: 2018/4/17
  Time: 16:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登入頁</title>
</head>
<div style="text-align:center;margin-top:120px">
    <form action="LoginServlet" method="post">
        <table style="margin-left:40%">
            <marquee width="200"scrolldelay="250">使用者登入</marquee>

            <tr>
                <td>登入id:</td>
                <td><input name="id" type="text" size="21"></td>
            </tr>
            <tr>
                <td>密碼:</td>
                <td><input name="password" type="password" size="21"></td>
            </tr>
        </table>
        <input type="submit" value="登入">
        <input type="reset" value="重置">
    </form>
    <br>
    <a href=RegisterPageServlet?url=WEB-INF/pages/Register.jsp>註冊頁</a>
</div>
</body>
</html>

LoginServlet

package com.lala.service;

/**
 * Created by 20901 on 2018/4/17.
 */

import java.io.IOException;

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 com.lala.bean.User;
import com.lala.dao.UserDAO;

public class LoginServlet extends  HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }


    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        int id = Integer.parseInt(request.getParameter("id"));
        String password = request.getParameter("password");
        UserDAO userDAO = new UserDAO();
        User user = userDAO.login(id, password);

        if (user != null) {
            request.getRequestDispatcher("WEB-INF/pages/Lsuccess.jsp").forward(request, response);
        } else {
            request.getRequestDispatcher("WEB-INF/pages/Lerror.jsp").forward(request, response);
        }
    }
}

Lsuccess.jsp

<%--
  Created by IntelliJ IDEA.
  User: 20901
  Date: 2018/4/17
  Time: 20:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登入成功頁</title>
</head>
<body>
恭喜你,登入成功了!!
<a href="index.jsp">註冊</a>
</body>
</html>

Lerror.jsp

<%--
  Created by IntelliJ IDEA.
  User: 20901
  Date: 2018/4/18
  Time: 10:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登入錯誤頁</title>
</head>
<body>
使用者名稱或密碼錯誤!!
<a href="Login.jsp">重新登入</a>
</body>
</html>

Register.jsp

<%--
  Created by IntelliJ IDEA.
  User: 20901
  Date: 2018/4/17
  Time: 18:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>註冊頁</title>
</head>
<body>
<div style="text-align:center;margin-top:120px">
    <h1 >請註冊</h1>
    <form action="RegisterServlet" method="post">
        <table style="margin-left:40%">
            <caption>使用者註冊</caption>
            <tr>
                <td>ID:</td>
                <td><input name="id" type="text" size="20"></td>
            </tr>
            <tr>
                <td>登入名:</td>
                <td><input name="name" type="text" size="20"></td>
            </tr>
            <tr>
                <td>密碼:</td>
                <td><input name="password" type="password" size="20"></td>
            </tr>
            <tr>
                <td>角色:</td>
                <td><input name="role" type="text" size="20"></td>
            </tr>
        </table>
        <input type="submit" value="註冊">
        <input type="reset" value="重置">
    </form>
    <br>
    <a href=LoginPageServlet?url=WEB-INF/pages/Login.jsp>登入頁</a>
</div>
</body>
</html>

RegisterServlet

package com.lala.service;

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 java.io.IOException;

import com.lala.bean.User;
import com.lala.dao.UserDAO;

/**
 * Created by 20901 on 2018/4/18.
 */
@WebServlet(name = "RegisterServlet")
public class RegisterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        int id = Integer.parseInt(request.getParameter("id"));
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        int role = Integer.parseInt(request.getParameter("role"));

        User u = new User();
        u.setId(id);
        u.setName(name);
        u.setPassword(password);
        u.setRole(role);

        UserDAO userdao = new UserDAO();
        boolean boo = userdao.addUser(u);

        if (boo == true) {
            request.getRequestDispatcher("WEB-INF/pages/Rsuccess.jsp").forward(request, response);
        } else {
            request.getRequestDispatcher("WEB-INF/pages/Rerror.jsp").forward(request, response);
        }
    }

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

Rsuccess.jsp

<%--
  Created by IntelliJ IDEA.
  User: 20901
  Date: 2018/4/18
  Time: 16:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>註冊成功頁</title>
</head>
<body>
恭喜你,註冊成功了!!
<a href="index.jsp">註冊</a>
</body>
</html>

Rerror.jsp

<%--
  Created by IntelliJ IDEA.
  User: 20901
  Date: 2018/4/18
  Time: 16:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>註冊失敗頁</title>
</head>
<body>
註冊失敗了
<a href="register.jsp">重新註冊</a>
</body>
</html>

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">
    <servlet>
        <servlet-name>LoginPageServlet</servlet-name>
        <servlet-class>com.lala.dispatcherServlet.LoginPageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginPageServlet</servlet-name>
        <url-pattern>/LoginPageServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>RegisterPageServlet</servlet-name>
        <servlet-class>com.lala.dispatcherServlet.RegisterPageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RegisterPageServlet</servlet-name>
        <url-pattern>/RegisterPageServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.lala.service.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>RegisterServlet</servlet-name>
        <servlet-class>com.lala.service.RegisterServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RegisterServlet</servlet-name>
        <url-pattern>/RegisterServlet</url-pattern>
    </servlet-mapping>

</web-app>

總結

自己學習總結,也希望對大家有幫助,如有疑問,可聯絡我
郵箱[email protected]

相關推薦

MVC設計模式實現簡單JavaWeb登入註冊功能

MVC 全稱Model(模型)-View(檢視)-Controller(控制器),這是一種開發模式,他的好處是可以將介面和業務邏輯分離。 Model(模型),是程式的主體部分,主要包含業務資料和業務邏輯。在模型層,還會涉及到使用者釋出的服務,在服務中會根據不

mvc設計模式實現簡單登入跳轉

MVC模式 MVC最初應用於桌面程式中,M指資料模型,V指使用者介面,C指控制器,是Xerox PARC在20世紀80年代為程式語言“Smalltalk-80”發明的一種軟體設計模式,至今已被廣泛使用。基於JavaEE的Web應用開發,經歷了Model1和Model2的不同

OPENCV學習筆記16_控制器設計模式實現功能模塊間通信

.get src read require char http result div exe   在構建更復雜的程序時,需要創建多個算法來協同工作,以實現一些高級功能。要合理地構建程序並讓所有的類能互相通信,程序將會變得越來越復雜。因此在一個類中集中對程序進行控制,是非常有

javaweb簡單登入註冊功能實現

下面是使用者登入註冊流程圖 登陸介面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPat

MVC設計模式實現登陸程式

一: MVC簡介: MVC模式(Model-View-Controller)是軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、檢視(View)和控制器(Controller)。 MVC模式的目的:實現一種動態的程式設計,使後續對程式的修改和擴充

Taro開發微信小程式實現簡單登入退出功能

Taro是由凹凸實驗室打造的一套遵循 React 語法規範的多端統一開發框架,還有我發現從某度上搜索的結果首頁居然看不到Taro框架的任何資訊,但是谷歌首頁就直接給出了結果,Taro使用文件。我是準備用它來開發微信小程式的,而且公司使用的前端架構正好是React

使用Unity3d luaframework ugui 實現簡單登入註冊

1.開啟luaframework ugui 工程 , 可能會報錯 , 不過都是一些小錯誤 , 設定AppConst指令碼 ` 2.搭建頁面 登入成功後顯示 3.打包資源3個預設物分別放在不同資料夾下 , 開啟Packager 指令碼 , 寫指令碼 4.編寫l

Eclipse使用(七)—— 使用Eclipse建立JavaWeb專案並使用JDBC連線資料庫實現簡單的登陸註冊功能

一、建立資料庫表(這裡使用的是Mysql5.7) DDL語句如下: CREATETABLE `tb_user` (     `u_id` int(11) NOTNULL AUTO_INCREMENT COMMENT '使用者編號',     `u_username

MyEclipse搭建SSM框架,實現簡單登入註冊

  Spring+SpringMVC+MyBatis+MySql 前言     最近要開發一款自己的app,之前學過ssm框架,所以就採用ssm來開發,但是由於好久沒用,已經忘得差不多,所以發帖方便自己總結搭建框架過程的問題,也方便初學者借鑑,後面會陸續更新。。。

Android 實現簡單的登陸註冊功能(SharedPreferences和SQLite)

最近剛好做了一個Android的登入註冊介面,將資料利用SharedPreferences或者SQLite繫結到Android程式中,實現簡單的登陸註冊功能,本文未涉及到與伺服器的交流。 首先,對於登陸註冊要有一個明確的邏輯順序,不管是對於SharedPreferences

Struts2實現簡單的登陸 / 註冊功能

我 是用idea寫的。 需求分析: 使用者進入首頁,選擇登陸,跳轉到登陸 / 註冊頁面的登陸模組,如有賬戶,登陸成功跳轉首頁,並顯示使用者名稱;如沒有賬戶,註冊一個賬戶成功後,跳回登陸模組。在這裡沒有實現使用者儲存功能 1、首頁的效果 2、登陸/註冊頁面的

MyEclipse下struts框架實現MVC設計模式

 MyEclipse下用struts框架實現MVC設計模式 環境配置 Ø JDK 5.0 Ø Eclipse 3.2 Ø MyEclipse 5

MVC設計模式思想及簡單實現

std 處理 代碼 sub end mit service dispatch throw 一、什麽是MVC   MVC即Model-View-Controller(模型-視圖-控制器)是一種軟件設計模式,最早出現在Smalltalk語言中,後被Sun公司推薦為Java E

[Java][Web]Request 實現轉發和 MVC 設計模式

寫入 頁面 str quest 表示 請求轉發 但是 write att String data = "aaaaa"; request.setAttribute("data",data); // 將數據存在 request request.getRequestDispat

MVC設計模式用於註冊表單提交到數據庫的中文亂碼問題

def tail post str fix clear trac csdn rfi 本文引用自:http://blog.csdn.net/wangchangshuai0010/article/details/12714575 java.sql.SQLException: I

javaweb三大框架和MVC設計模式

detail struts2 萬能 sdn 發的 struts 其他 article 改進 javaweb三大框架和MVC設計模式 轉載,原文請見https://blog.csdn.net/sunpeng19960715/article/details/50890705 一

javawebMVC設計模式

1.MVC簡介 MVC是Model-View-Controller的簡稱,即模型-檢視-控制器。MVC是一種設計模式,它把應用程式分成三個核心模組:模型,檢視,控制器,它們各自處理自己的任務。 模型(體現在下圖中的POJO和資料庫)是應用程式的主體部分,表示業務資料和業務邏輯。一個模型能為多個檢視提

JavaWeb學習筆記及案例(二)MVC設計模式

1.MVC三層架構 M:Model>>>模型層:封裝資料Java Bean; V:View>>>檢視層:jsp專注顯示; C:Controller>>>控制層:Servlet接收頁面請求,找模型層處理,然後響應資料出去; **好處:*

MMVVC設計方法介紹:經典MVC設計模式在Cocoa-MVC中的一種實現方法

MVC介紹 MVC在WEB開發中用於界定工作屬於Server端還是WEB前端還是十分清晰的。這也就是大家目前常見的MVC設計模式: View<===>Controller<===>Model 即Controller作為粘合劑分別於View和Model進行雙向通訊。

JavaWeb基礎MVC設計模式

文章目錄 MVC設計模式 JSP的開發模式 三層架構&MVC練習 學生資訊管理系統 資料庫準備 查詢 增加 刪除 更新 分頁功能