基于Servlet的MVC模式用户登录实例

关于MVC模式的简单解释

M Model,模型层,例如登录实例中,用于处理登录操作的类;
V View,视图层,用于展示以及与用户交互。使用html、js、css、jsp、jQuery等前端技术实现;
C Controller,控制器,接受视图层的请求,将请求跳转到对应的模型进行处理,模型层处理完毕后,再将结果返回给请求处。这里用Servlet实现控制器。

实现过程分析

用户再视图层输入用户名以及密码点击提交,向控制器发出请求
控制器(Servlet)接受请求,将接受到的用户名以及密码转给模型层
模型层依据用户名和密码在数据库中进行查询,将操作结果返回给控制器
控制器经过判断返回给用户登录结果。

代码实现

项目结构图

视图层实现(index.jsp)


    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
        <head>
            <title>Login</title>
        </head>
        <body>
            <form action="LoginServlet" method="post">
                Name:<input type="text" name="uname"><br>
                Pass:<input type="password" name="upwd"><br>
                <input type="submit" value="Login"><br>
            </form>
        </body>
    </html>

控制器层实现(LoginServlet)


    package com.ajy.Servlet;

    import com.ajy.Model.LoginDao;
    import com.ajy.Entity.User;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;

    //控制器层
    public class LoginServlet 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 {
            //处理post方式登录请求
            request.setCharacterEncoding("utf-8");
            String uname = request.getParameter("uname");
            String upwd = request.getParameter("upwd");
            User user = new User(uname,upwd);

            response.setContentType("text/html;charset=utf-8");
            response.setCharacterEncoding("utf-8");
            PrintWriter out = response.getWriter();
            int rs = LoginDao.Login(user);
            if(rs==-1){
                out.println("系统错误");
            }else if(rs==0){
                out.println("用户名或密码错误");
            }else{
                out.println("登录成功");
            }
        }
    }

模型层实现(LoginDao)


    package com.ajy.Model;

    import com.ajy.Entity.User;

    import java.sql.*;

    //模型层,用于处理登录操作
    public class LoginDao {
        private static String DBUname = "root";
        private static String DBUpwd = "121181";
        private static String URL="jdbc:mysql://localhost:3306/anjiyubase?&serverTimezone=UTC&useSSL=false";

        public static int Login(User user){

            Connection con = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            int count = 0;
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                con = DriverManager.getConnection(URL,DBUname,DBUpwd);
                pstmt = con.prepareStatement("select count(*) from users where uanme = ? and upwd = ?");
                pstmt.setString(1,user.getUserName());
                pstmt.setString(2,user.getUserPassword());
                rs = pstmt.executeQuery();
                if(rs.next()){
                    count = rs.getInt(1);
                }
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                return -1;
            } catch (SQLException e) {
                e.printStackTrace();
                return -1;
            }finally {
                try {
                    if (rs!=null)rs.close();
                    if (pstmt!=null)pstmt.close();
                    if (con!=null)con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    return -1;
                }
            }

            if (count==0){
                return 0;
            }else{
                return 1;
            }
        }
    }

用户实例(User)


    package com.ajy.Entity;

    public class User {
        private int id;
        private String UserName;
        private String UserPassword;

        public User(String UserName, String UserPassword){
            this.UserName=UserName;
            this.UserPassword=UserPassword;
        }

        public User(int id, String UserName, String UserPassword){
            this.id=id;
            this.UserName=UserName;
            this.UserPassword=UserPassword;
        }
        public String getUserName() {
            return UserName;
        }

        public void setUserName(String userName) {
            UserName = userName;
        }

        public String getUserPassword() {
            return UserPassword;
        }

        public void setUserPassword(String userPassword) {
            UserPassword = userPassword;
        }
    }

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">
        <welcome-file-list>
            <welcome-file>login.jsp</welcome-file>
        </welcome-file-list>

        <servlet>
            <servlet-name>LoginServlet</servlet-name>
            <servlet-class>com.ajy.Servlet.LoginServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>LoginServlet</servlet-name>
            <url-pattern>/LoginServlet</url-pattern>
        </servlet-mapping>
    </web-app>

数据库

原文地址:https://www.cnblogs.com/HenuAJY/p/10765788.html

时间: 2024-11-05 08:14:38

基于Servlet的MVC模式用户登录实例的相关文章

JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML.Xpat

【MVC】Servlet+Jsp+MySql用户登录实例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要用Servlet+Jsp+MySql实例用户登录,并简要介绍了下MVC的思想,此例子也是按照这个思路来做的.在Eclipse+tomcat7.0上做的.不会很难,对于了解MVC思想很有帮助! 效果: 这是刚开始的界面 这是错误时的信息 这是成功时的信息 一.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(control

Servlet——简单用户登录实例+http协议解析

编写项目,用户登录系统1.0版本 登录界面Servlet: package com.gavin.view; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.ser

关于MVC模式的登录注册

最近初学jsp,顺便编写了一个基于MVC开发模式的登录注册 1.util包用于连接数据库操作 1 package com.util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.SQLException; 6 7 public class DbUtil { 8 9 private String url="jdbc:mysql://localhost:3306/test&quo

MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用

前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的OnInit()方法,在OnInit()中判断Session中是否有用户登录的信息 1 /// <summary> 2 /// 公共基类里面干一些公共的事情 3 /// </summary> 4 public class BasePage : System.Web.UI.Page 5

Asp.Net MVC记住用户登录信息 下次登录无需输入密码

有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo可以到百度云和码云下载, 百度云下载链接:https://pan.baidu.com/s/1rfQNxpM8WGxkBbdiS1mLeQ    密码:if1q 马云下载链接:https://gitee.com/WuFengZui/RememberLoginDemo    [没有下载链接的都是耍流氓 

初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面

1:JSP JSP的基本语法:指令标识page,include,taglib;page指令标识常用的属性包含Language用来定义要使用的脚本语言:contentType定义JSP字符的编码和页面响应的MIME类型:pageEncoding:jsp页面的字符编码: include指令<%@ include file="path"%>静态包含,先包含,后编译处理: <jsp:include page="要包含的文件">  动态包含,先编译处理

单列模式下的数据库连接与Servlet之间页面访问用户登录的小例子

下面是我自己写的一个关于servlet的例子 首先是数据库配置,使用的是静态的单例模式 代码如下: / 数据库地址连接 // 使用静态单列模式 public class JdbcUtil { private static String driverName; private static String url; private static String username; private static String password; private static Properties pro

asp.net -mvc框架复习(7)-基于MVC搭建用户登录项目框架

整体框架: 一.搭建Model层 1.添加通用数据访问类 2.添加实体类(封装和传递数据,和数据库中数据表对应) 3.添加数据访问类(通常和实体类同名,但是后缀名发生改变) 二.搭建控制器层Controller层 三.搭建View层 先创建与控制层同名的文件夹,在创建视图 四.路由配置