Servlet+JSP+MySQL社交网站

本文介绍了使用Servlet、JSP和MySQL构建社交网站的架构和关键技术。采用MVC设计模式,利用DAO模式进行数据库操作,前端使用JavaScript和jQuery增强用户体验,数据库选用MySQL以确保稳定性。详细探讨了Servlet、JSP、JavaScript、JDBC以及数据库设计等方面的内容。
摘要由CSDN通过智能技术生成

在网站架构上,采用MVC设计模式,实现将网站的页面显示与业务逻辑分离,使其各司其职;在数据库操作上,利用DAO模式(Data Access Object数据存取对象)技术,将程序中的类对象映射成为数据库表中相应的记录,在代码里只需直接操纵对象即可实现对数据库数据的操作,数据库釆用性能稳定的MySQL,前台采用javascript技术实现动态效果。

涉及

前台部分功能用JSP技术进行开发,JavaScript脚本使开发有更高的效率 。后台的部分功能用到了JAVA开发技术和MYSQL数据库技术。
Java Web应用程序的主要组件
1.Servlet组件
2.JSP组件
3.JavaBean组件
4.XML语言——是一种用来创建自定义标记的标记语言。
5.Web服务器和应用服务器

Servlet与JSP

Servlet是Sun提供的用于开发动态Web资源的技术。Sun公司在其API中提供了一个servlet接口来控制应用程序的流程。 如果用户想要发送动态网络资源(即开发一个Java程序将数据输出到浏览器),则需要完成以下两个步骤:首先,编写一个实现servlet接口的Java类。 其次,根据习惯惯例,将一个完善的Java类部署到Web服务器。 通常我们也实现一个实现了servlet接口的java程序。 Servlet , JSP主要完成输入输出功能,主要由HTML代码,客户端脚本(JavaScript等),JSP标签和指令,自定义标签库组成。
Servlet技术可以完成与JSP相同的功能,但其表现形式与JSP不同。 JSP以脚本文件的形式存在,并且Servlet以Java文件的形式存在。
Servlet也是一个Java类,是一个特殊的Java类,主要是在Java Web技术中完成控制功能,负责协调JSP页面和JavaBean之间的函数关系]。
Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。
Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java服务器中。
Java Servlet可以动态地扩展服务器的能力,并采用请求-响应模式提供Web服务。
Servlet是使用Java Servlet应用程序设计接口及相关类和方法的Java程序。它在Web服务器上或应用服务器上运行并扩展了该服务器的能力,Servlet装入Web服务器并在Web服务器内执行。
Servlet是以Java技术为基础的服务器端应用程序组件,Servlet的客户端可以提出请求并获得该请求的响应,它可以是任何Java程序、浏览器或任何设备,MVC模式中的servlet:仅作为控制器使用,J2EE应用架构正是遵循MVC模式的,其中JSP仅作为表现层技术,其作用有两点:1.负责收集用户请求参数;2. 将应用的处理结果、状态、数据呈现给用户。

JavaScript

JavaScript是直译式的脚本语言。JavaScript的解释器被人们称为JavaScript引擎,是浏览器组件的一部分,js是广泛用于客户端的脚本语言,用来给HTML网页添加动态交互的功能。
jQuery是一个快速、简洁的JavaScript框架,它的设计宗旨是“write Less,Do More”,即提倡写很少的代码,却做到更多的事情。它封装了JavaScript一些常用的功能代码,提供一种简单的设计模式。
jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的CSS选择器,并且可对CSS选择器进行扩展

Java Web原理与其他技术

Web服务器在接收到HTTP请求之时,会先判断请求内容的情况,自动处理静态页面的数据,之后产生响应信息;若是动态数据则请求转发到Servlet容器。之后Servlet容器会找到对应的Servlet实例来处理该请求,最后将结果送回Web服务器,最后由Web服务器送回用户。值得注意的是,当servlet容器首次接收到HTTP请求时,servlet容器将创建一个servlet实例,然后启动一个线程。 第二次收到HTTP请求时,servlet的容器不需要创建相同的servlet实例,而是启动第二个线程来提供它。 客户端请求和多线程方法不仅可以提高Web应用程序的执行效率,还可以减少网络服务器的系统负载

请求到容器到servlet周期流程:

  • 1.客户发出请求—>Web 服务器转发到Web容器Tomcat;
  • 2.Tomcat主线程对转发来用户的请求做出响应创建两个对象:HttpServletRequest和HttpServletResponse;
  • 3.从请求中的URL中找到正确Servlet,Tomcat为其创建或者分配一个线程,同时把步骤2创建的两个对象传递给该线程;
  • 4.Tomcat调用Servlet的servic()方法,根据请求参数的不同调用doGet()或者doPost()方法;
  • 5.假设是HTTP GET请求,doGet()方法生成静态页面,并组合到响应对象里; Servlet线程结束时:Tomcat将响应对象转换为HTTP响应发回给客户,同时删除请求和响应对象。
  • 可以理解Servlet的生命周期:Servlet类加载(对应3步);Servlet实例化(对应3步);调用init方法(对应3步);调用service()方法(对应4、5步);;调用destroy()方法(对应6步)。

JDBC 技术

JDBC(Java Database Connectivity)是为 Java 应用程序中访问数据库而设计的 Java API, JDBC 中包含了一组由 Java 语言编写的接口和类,这些接口和类都是独立于特定的 DBMS(数据库管理系统)[23]。JDBC 是 Java 数据库应用开发过程中的一项重要的核心技术。
有了 JDBC 技术,开发人员可以方便地在 Java 语言中使用标准 SQL 语句,从而使 Java 应用程序可以实现对分布在网络上的各种各样的关系数据库的访问。 若要程序员将精力大部分用于上层的功能实现则JDBC技术可以实现,可以不必关心底层的实现和具体的数据库的连接和访问的过程。
目前基于 JDBC 技术的高层 API 主要是从关系数据库直接映射到 Java 类;在这“对象/关系”映射中,数据库中每个表的每一行都将变成这一类的一个对象的,每一列的值对应该对象实例的一个属性; JDBC 包含了两部分与数据库相互独立的 API:面向开发人员的 JDBC API 以及面向底层的 JDBC Driver API;面向开发人员的 JDBC API 被描述成抽象的 Java接口,通过这些接口 Java 程序可以对某个特定的数据库打开连接,执行相应的SQL 语句并且处理执行结果; JDBC 的驱动管理器负责管理各种类型的数据库管理系统的 JDBC 驱动程序。同时也负责和用户的应用程序交互,从而为 Java 程序建立数据库连接;Java 程序通过 JDBC API 向 JDBC 驱动管理器发出相应的请求,指定需要装载的 JDBC 驱动程序类型以及数据源[24]。驱动管理器此时会根据这些要求来装载合适的 JDBC驱动程序并且使该驱动连接到相应的数据源。一旦连接成功,该 JDBC 驱动程序将会负责 Java 应用程序与该数据源的全部交互,即作为中间的翻译将 Java 应用程序中对 JDBC API 的系统调用转换成特定的数据库管理系统能够理解的命令,最后将数据库返回的结果转换为 Java 应用程序所能够识别的数据。

My SQL 数据库介绍

考虑到本系统的规模、系统的灵活性以及系统开发的成本,我们选择 My SQL数据库作为本系统的数据存储的数据库管理系统。 My SQL 是最受欢迎的数据库管理系统,它是由 My SQL AB 开发以及发布和支持的。其服务器支持了关键任务和重负载生产系统的使用,同时它也可以嵌入到一个大配置的软件中去。由于该数据库系统的强大的功能、丰富的应用编程接口(API)、灵活性以及精巧的系统结构[25],让广大软件爱好者甚至是商业的软件用户为之青睐,特别是该数据库系统与 Apache 和 PHP 结合[26],为建立在基于数据库的动态网站应用程序提供了强大的动力。
My SQL 主要的特点与作用:My SQL 数据库是一个能够让很多用户同时访问的数据库,从数据库的内部实现来说,数据库的操作能够多线程的连接实现,提高了数据库的操作效率和减少了数据库的数据处理时间。该数据库应用的网络结构是 C/S 网络应用程序结构的数据库,并且在数据库中有不同的守护进程以及不同的用户组来对数据库访问权限的控制。 结构化查询语言(SQL)是一种标准化的语言,它使得信息的存储、存取和更新更为容易。比如我们可以用结构化查询语言为一个网站来检索产品的信息以及其存储的客户信息,同时 My SQL 也可以提供足够快和灵活的性能来允许我们存储记录的文件盒相关的图像信息。 My SQL 数据库主要目标是健壮、快速和易用[26],最初我们是需要一个像这样的 SQL 服务器,它能够处理与任何不昂贵的硬件平台上来提供数据库的厂家并且在一个数量级上的大型的数据库,但是其速度更快,My SQL 就因此产生了。 My SQL 数据库的主要功能只是在组织和管理庞大或者复杂的信息以及基于Web 的库存量的查询请求,不仅仅是为客户提供信息,同时也可以为客户自己使用数据库提供诸多的功能:减少了记录编档的时间,减少了记录检索的时间,拥有灵活的查找序列,提供灵活的输出数据格式,允许多个用户同时访问数据库中的数据记录。

架构

在这里插入图片描述

功能模块

主要分为三大模块,用户界面,业务逻辑和数据库部分。其中,用户界面采用JQuery框架开发,包括若干个JSP页面与JS脚本文件。

表现层

主要是运用了16页面文件,定义表单Form文件,定义页面title文件,定义javascript函数文件和系统所需要的所有标签文件。下面以个人主页main.jsp页面文件为例,说明了各部分的定义。

  1. 引用标签库定义
    以<% %>形式指明的页面用到的库文件。在main.jsp页面中需要两个fmt标签和core标签。在进行页面开发时需要将这些标签文件加载到页面中,一般是加载到程序代码的最前端,用<% %>符号来进行标注,如加载core标签格式为<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>。
  2. 页面通过判断,动态跳转页面。这里用到了Jstl的c标签。
    <c:if test="${user == null }">
    <jsp:forward page=“index.jsp”></jsp:forward>
    </c:if>
  3. javascript函数的定义
    定义javascript函数,是为了实现页面动态调节,实现页面自动回复等功能。每一个函数都是针对页面的实际需要来设置的。下面是user GBMsg.jsp页面所用到的几个javascript函数。
  4. 表单Form的定义
    表单Form用来接受用户的输入,供Action Bean处理。需要定义的主要属性有action(指明form提交给哪一个Action Bean处理)和method(指明form的提交方式)。下面是register.jsp页面中form的定义: 登录页面需要做一些验证,诸如用户名、密码不能为空,长度不够等等,View层通过15个jsp文件完整实现了用户接口层的需求。 由视图层把信息进行在线显示,包括信息修改、信息添加和删除等。 JSP页面用于表示层,Servlet负责处理各类任务。Servlet作为一个控制器,负责处理请求并创建JSP页面所需的任何Bean。该控制器也负责确定将该请求传递到哪个JSP页面。 JSP页面检索Servlet创建的对象,并其他动态内容插入在一个模板中。该模型促进了模型视图控制器(MVC)体系结构风格设计模式的使用。MVC其实是模型、视图、控制器的缩写。在使用JSP时,有相应的文件去实现相应的操作。通常JSP只负责视图,也就是只负责显示页面。业务逻辑等由JavaBean去实现。

在MVC设计模型中,View用来呈现数据处理结果,可以是JSP、XML、HTML;Model用来存储数据的状态,可利用JavaBean来实现;Controller负责协调应用程序的运行流程,可用Servlet来实现。运用这种模式可以将数据呈现方式与数据处理方式分离,提高了代码的利用率。

数据库操作类

实现了将类对象的实体信息存入数据库的目的,此过程的大致步骤如下:

  1. 准备工作。设计数据库,并指定连接数据库所需的所有信息。
  2. 创建 JAVA 实体类对象 POJO 和数据库表格
    (1) 创建实体类 POJO 并对其进行编辑,在类文件中定义类对象中包含的所有属性和方法; (2) 定义实体类的指定类对象中的各个属性和数据库表中各字段的对应关系;
    (3) 创建数据库,并且编写工具类。
  3. 将 JAVA 实体类对象 POJO 存入数据库
    创建 POJO 对象的实例,并将实例对象保存进数据库,对对象进行持久化操作;
    (6) 对象持久化操作完成之后提交事务,对数据库内的改变进行确认和提交;
    (7) 完成对数据库内的改变的提交,

本系统涉及的业务对象有15个,根据其中的派生、关联等关系映射成了12张表,为了完成业务对象的持久化和数据库的维护操作,就要定义一个DAO数据库连接类。
DAO是数据处理接口,提交数据到数据库。数据库操作类的通常包括执行查询语句的方法,数据库交互层,增删改查等。
一般而言DAO主要实现增、删、改、查操作,而查包括查询单条数据和多条数据,以UsersDao借口为例:

public class UsersDao {
   
	public int getDayUp(String time) {
   
		String sql = "select * from signin where DATE_FORMAT(stime,'%Y-%m-%d')=? ";
		List<Signin> result = DBUtil.query(Signin.class, sql, time);
		return result.size();
	}
	public int getUserNum() {
   
		return DBUtil.queryUserNum();
	}
	public Users checkLogin(String username, String password) {
   
		String sql = "select uid, uname,  urealname, ua
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司(Oracle)。自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 开源与跨平台 MySQL遵循GPL开源协议,这意味着任何人都可以免费下载、使用和修改其源代码。这种开放性促进了广泛的社区支持和第三方插件、工具的发展。此外,MySQL支持多种操作系统,包括Windows、Linux、macOS、Solaris等,确保了其在不同环境下的兼容性和部署灵活性。 关系型模型与SQL支持 MySQL基于关系型数据库模型,数据以表格形式组织,并通过预定义的键(如主键、外键)在表之间建立关联。它完全支持结构化查询语言(SQL),允许用户进行数据查询、插入、更新、删除、创建和管理数据库结构等操作。SQL标准的广泛支持使得MySQL易于学习,且与其他关系型数据库系统有良好的互操作性。 存储引擎 MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY等,每种引擎都有特定的优势和适用场景。例如,InnoDB提供事务安全、行级锁定和外键约束,适合处理高并发事务性的应用;MyISAM则更侧重于读取密集型操作,提供全文索引支持,适用于读多写少的场景。这种多引擎架构使得MySQL能够适应不同业务需求,提供高度定制化的存储解决方案。 性能与可扩展性 MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发访问的需求。 安全性与管理工具 MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统 MySQL拥有庞大的开发者社区和丰富的第三方插件、库、中间件支持,提供了丰富的文档、教程、论坛以及专业服务,极大地简化了开发、运维和故障排查过程。 关键组件与日志 系统数据库 MySQL内部包含几个特殊的系统数据库,如: information_schema:提供关于所有数据库、表、列、索引等元数据信息,是查询数据库结构的标准接口。 mysql:存储MySQL自身的系统信息,如用户权限、服务器配置、事件调度等。 performance_schema:自MySQL 5.5版本引入,用于收集服务器性能数据,帮助诊断和优化系统性能。 test(非必要):默认提供的测试数据库,通常用于学习和实验,生产环境中可考虑删除。 sys(自MySQL 5.7版本):提供更易用的视图来访问performance_schema中的信息,简化性能分析工作。 日志文件 MySQL通过日志记录来保证数据一致性、支持故障恢复和审计需求,主要包括: 错误日志(Error Log):记录MySQL服务器运行期间的严重错误、警告和其他重要事件。 二进制日志(Binary Log,binlog):记录对数据库进行数据更改(如INSERT、UPDATE、DELETE)的操作序列,用于数据复制和恢复。 查询日志(query log):可选地记录所有发送到MySQL服务器的SQL查询,用于调试和审计。 慢查询日志(slow query log):记录执行时间超过指定阈值的查询,帮助识别和优化性能瓶颈。 应用场景 MySQL广泛应用于各种规模和类型的项目,包括但不限于: Web应用程序:作为众多网站和Web服务(如电子商务、社交媒体、内容管理系统等)的后台数据库。 数据分析与报表:与数据仓库技术结合,支持OLAP(在线分析处理)和数据可视化。 移动应用与物联网(IoT):作为数据存储层,支撑大量设备的数据采集、存储和查询需求。 嵌入式系统:在资源有限的环境中,作为轻量级数据库解决方案。 总之,MySQL凭借其开源、跨平台、高性能、灵活扩展、丰富功能集和庞大社区支持等特点,成为现代数据管理领域中不可或缺的一部分,适用于各种行业和业务场景的数据库需求。
### 回答1: jsp+servlet+mysql项目是一种基于Java技术的Web开发项目,其中JSP(JavaServer Pages)是一种动态网页开发技术,Servlet是一种Java程序,用于处理Web请求和响应,而MySQL则是一种关系型数据库管理系统,用于存储和管理数据。 在这种项目中,通常会使用JSP页面作为用户界面,Servlet作为控制器,负责处理用户请求和响应,而MySQL则用于存储和管理数据。这种项目可以用于开发各种类型的Web应用程序,例如电子商务网站社交网络、在线论坛等。 开发这种项目需要掌握Java编程语言、JSPServlet技术、MySQL数据库管理系统等知识。同时,还需要了解Web开发的基本概念和技术,例如HTTP协议、HTML、CSS、JavaScript等。 总之,jsp+servlet+mysql项目是一种基于Java技术的Web开发项目,可以用于开发各种类型的Web应用程序。 ### 回答2: JSPServletMySQL是Web应用程序开发中非常常见的技术组合。JSPServlet是Java EE平台的一部分,它们允许我们创建动态Web页面和处理Web请求。而MySQL是一种常用的关系型数据库,用于存储和管理应用程序中的数据。 使用JSPServlet可以快速地创建一个Web应用程序,JSP在其中扮演着展示数据的角色,Servlet则用于处理请求和响应。在JSP中,我们可以使用Java代码和JSP标签来处理数据,最终呈现给用户的是一个HTML页面。而Servlet则是一个Java类,它可以接收来自客户端的HTTP请求,并对其进行处理。 在一个基于JSPServlet的Web应用程序中,我们需要使用数据库来存储数据。MySQL是一种开源的关系型数据库,它与JSPServlet可以很好地配合使用。我们可以使用Java的JDBC API来连接和操作MySQL,从而让我们的应用程序可以与数据库进行交互。 当我们开发一个基于JSPServletMySQL的项目时,我们首先需要确定项目的需求和目标,然后设计出数据库表结构和应用程序的结构,编写各个模块的代码,并对其进行测试。在整个开发过程中,我们需要注意安全性、可维护性和可扩展性等方面的问题,以确保最终的应用程序能够满足用户的需求并具有良好的用户体验和可维护性。 总之,JSPServletMySQL是三种常用的Web应用程序开发技术,它们能够帮助我们快速地创建动态的Web应用程序,并存储和管理应用程序中的数据。在实际项目中,我们需要结合具体的需求和目标,合理地选择和使用这些技术,以达到最佳的开发效果和用户体验。 ### 回答3: JSP (JavaServer Pages) 是一种视图技术,能够在Java EE 应用程序中创建动态Web页面。Servlets 是Java编写的Server-Side组件,能够处理客户端请求,并生成响应。MySQL是一种开源关系型数据库,可以用SQL语言进行数据管理。 JSPServletMySQL在Java Web项目开发中常常一起使用。通常情况下,JSP负责展示页面,Servlet负责逻辑处理和控制,MySQL负责存储和管理数据。JSPServlet都可以嵌入Java代码,实现动态的Web应用。此外,Servlet还可以调用JavaBean实现更复杂的数据操作。 对于一个基于JSPServletMySQL的Web项目,我们需要设计不同层次的架构。通常采用MVC (Model View Controller) 架构,即将应用程序分为模型、视图和控制器三个部分,实现逻辑与UI的分离。模型负责数据存储和管理,视图负责UI展示,控制器负责中间逻辑的控制。 对于MVC架构,我们可以使用框架和技术工具,如Struts、Spring和Hibernate等来实现。其中Struts是基于MVC架构的Web应用程序框架,Spring是一个全栈的开源应用程序框架,Hibernate是一个Java持久化框架,可以减少Java应用程序的数据存储和访问方面的重复性代码。 总的来说,JSPServletMySQL的使用可以大大提高Web应用开发的效率和可维护性。在实践中,我们需要仔细地设计应用程序,选择好的框架和技术工具,以实现高效、稳定的Web应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值