Java Web实战 | MVC案例:用户登录验证

简介: 本文结合图1的多层设计架构,以用户登录验证应用程序为例,说明如何将MVC模式应用于Web应用程序的开发,具体步骤如下所述。

640.jpg


640.png


■ 图1 多层架构示意图

01、创建数据表

在jdbc数据库中创建一个名为account的数据表,用于存放用户名和密码。建表语句如下:

640.png

02、创建实体类

创建一个实体类Account,用于封装用户名和密码信息。其作用就是MVC中的M(模型)。代码如文件1所示。

【文件1】Account.java

640.png

03、创建DAO接口和实现类

专注于数据访问功能的组件称为DAO

(Data Access Object,数据访问对象)。为了避免应用程序与特定的数据访问策略耦合在一起,一个良好的设计方案是数据访问组件以接口的形式暴露功能。图2展示了数据访问层的合理设计方案,业务逻辑对象本身不会处理数据访问,而是将数据访问任务委托给数据访问对象。业务逻辑对象通过接口来访问DAO组件。

640.png


■ 图2数据访问层的设计方案

这样做会有两个好处。第一,业务逻辑对象易于测试,因为它不再与特定的数据访问组件绑定在一起。第二,持久化方式的选择独立于DAO接口,只有数据访问相关的方法通过接口暴露。这样的设计更加灵活,并且切换数据访问层的实现技术不会对应用程序的其他部分产生影响。如果将数据访问层的实现细节渗透到应用程序的其他部分,那么整个应用程序将与数据访问层耦合在一起,从而使得设计僵化。

针对数据访问层,本例使用Druid数据库连接池。接下来,创建AccountDao接口及其实现类,规定用户登录时要执行的数据库操作。由于DAO负责数据的存取,它也可被视为MVC中的M(模型)。AccountDao接口的代码此处省略,下面给出接口的实现类代码,如文件2所示。
【文件2】AccountDaoImpl.java

3232adbda429f81933a170d99fa039f0.png

04、创建Service接口和实现类

业务逻辑层的Service组件用于处理用户请求,并返回处理结果,可以被视为MVC中的C(控制器)。业务逻辑层与数据访问层的设计思路类似,需要设计的是Service接口及其实现类。这里的Service接口代码简单,因此只给出Service实现类的代码,如文件3所示。
【文件3】AccountServiceImpl.java

640.png


640.png


如文件3所示,因为Service组件需要数据访问(DAO)组件提供的服务,所以第8行将数据访问对象AccountDao作为私有属性并实例化。用接口声明是一个良好的设计方案,这里需要注意的是,Service组件只需要一个能够提供AccountDao功能的组件,而非具体指明是哪个组件。如果用下面的代码来声明:

640.png


则这种声明语句指明了具体的组件,显式声明了当前Service组件要用到AccountDaoImpl组件完成任务,这样会造成两个组件的耦合性增强。

第8行的写法降低了组件间的耦合性,并且由于数据持久化的实现由AccountDaoImpl组件负责,独立于AccountDao组件,由此带来的另一个好处便是在满足AccountDao接口要求的情况下,可以灵活替换数据访问组件。

05、创建Servlet

Servlet用于接收用户的请求,并将请求参数封装后交给Service组件进一步处理,它也是MVC中的C(控制器)。创建Servlet的代码如文件4所示。

【文件4】LoginServlet.java

47cefd1cde48b74a5f760773653cd2b8.png


b4b23760f1b29f5ce6f130e1eec08acf.png

如文件4所示,第23~26行获取请求参数,并把它们封装到Account对象中。第28~37行完成用户是否可以正常登录的判断,从而跳转到对应的页面。
06、创建JSP

创建表示层组件JSP,它是MVC模式中的V(视图)。在src/main/webapp文件夹下创建名为login.jsp的JSP文件,设计用户登录界!

最后,可以利用浏览器查看程序运行的效果。本例主要向大家展示如何应用MVC设计模式开发多层架构的Web应用程序,对于数据库保存用户密码的加密问题,用户登录权限的判断问题等都没有涉及,大家可结合过滤器等知识自行尝试完成。

目录
相关文章
|
4月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
520 0
|
4月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
523 1
|
5月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
453 1
|
5月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
699 64
|
Java
Java中需要注意的一些案例
Java中需要注意的一些案例
172 0
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
243 1
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
257 1
|
4月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
211 0