[Java]项目入门

    这篇简单介绍一些入门的有关项目和行业的知识,并带着实现一个小项目。便于已经编程入门的各位准备进阶到下一个阶段。

    先大致地介绍,一个完整的项目(不看客户端、服务端的分类)基本可以划分为三部分:

1.前端。比如你现在看到的CSDN页面就是一个前端页面。前端的作用是负责与用户交互,即将项目的数据以人性化的形式展示给用户,并收集用户的各种操作信息和输入信息,返回给后端进行相应的事件流程。

2.后端。初学编程时你写的"print("Hello World")",那个就是后端部分,不过这个还不够准确。比如"int a = 0;b = a - 1;"这种有事件流程的,就是一个项目的后端部分。后端的作用是根据编程好的程序处理与其对应的数据和请求。

3.数据库。数据库就是字面意思,它存储数据的仓库。学习阶段哪怕是毕业设计,项目的工程量可能全用内存也足够,但正式的项目中,数据量会非常非常大,就像你现在浏览的CSDN,如此多篇文章,大量的文字和图片信息,显然内存是不可完成这些存储的。而且也不可能用内存,因为现在的内存就是设计给运行时使用的,不适合存储(感兴趣可以查询cpu和内存空间硬件层运行逻辑的资料)。

简介

前端

    前端常见的有web页面。常见的分包有 css、js、image、video、WEB_INF等等。

    css的专门存储css样式文件的包、js则是存储JavaScript脚本文件的包、image和video则是存储图片和视频,而WEB-INF则是存储不可直接访问的前端资源,有页面资源和配置信息(比如web.xml)。

    下面是一个示例:

    

    当然,这个不太规范,通常情况下css等资源会放在WEB_INF或用其他方式,避免被用户直接访问 。放在WEB-INF下的资源,用户只能通过页面引入或请求转发等方式来访问。

 后端

    后端常见的有使用Java、C++进行编写。

    Java面向对象,是以C、C++为基础的语言,主要是用来写业务的。而C、C++则是面向过程,不像java那样,底层上没那么多弯弯绕绕。

    同样的一个事件,C++处理完通常比Java快30%。所以Java一般用于各种项目中编写业务,而C++则是用于各种电子机器设备(比如洗衣机)的硬件编程,包括各种大型游戏,都是用C写的。

    这里稍微提一嘴python,我的一名从业人员的导师(导师只是我对他的敬称)的说法是,python主要还是担任一种"插件"一样的角色,在爬虫、人工智能这些领域上很合适,但是总体的还是干不过Java和C++,如果是想进入这个行业,那么不要先学python。之所以提是因为我个人最近看到许多python培训课程,口号是学了...就...这种,怕有同志走了弯路。当然只是兴趣或者其他的,便不用担心了,注意法律就好。

    然后介绍一下java后端的常见分包。java后端常见的分包有service、dao、util、config、entity、constant、exception。

service:存放各种业务代码,通常为service根据业务的种类划分,每个种类的业务开一个接口分装,然后在service下再开一个impl包,实现每个接口的方法。

dao:存放访问数据库的代码,Java用的连接数据库的技术是JDBC,获取连接的工具类不放在dao包而是放在util包下。与service包一样,包下会根据操作数据的相关内容分类成一个个接口,然后在dao包下再开一个impl包实现这些接口。

config:存放后端要使用的各种配置文件。比如.xml文件。

constant:存放各种常量、变量的包。这些一般是运行时才加载到内存中。

util:存放各种工具类的包。比如刚刚讲到的JDBC获取连接的工具类,另外像jdk里面的Math类,这些就是工具类,用于完成某种功能。

entity:存放各种实体类。这些类一般用来进行数据的封装,比如学生类、用户类,封装姓名、id、性别这些信息,来进行数据的传递(只在后端中使用,前端无法直接解析这些开发人员自定义的实体类)。

controller:与前端连接的包,通常存放各种servlet等请求响应类。在Tomcat服务器搭建的项目中又常命名为servlet包。

数据库 

    学习阶段基本上就是使用MySQL了。常见的数据库还有很多,功能最为强大的现在是Oracle数据库,当然,它是收费的,而且很贵(进入行业后正式的商业工程是肯定不能用破解版的,这属于侵权行为,也能查到的,当然这种侵权你不商用,也不会找你麻烦)。

    还有很多:DB2、SQL Server、Sybase等等。

前端连接后端

    前端连接后端常见的技术有AJAX、WebSocket等等。当然,这些是进阶一点的,Tomcat服务器提供的基础技术为Servlet。AJAX就是在servlet基础上异步交互的技术。使用详情可以看我的Servlet使用文章。

后端连接数据库

    后端连接数据库,Java用的技术为JDBC。不管是哪个语言,一般该语言的开发公司会提供一个统一的数据库对接该编程语言的标准,由每个数据库的开发公司根据这个标准提供自己的数据库驱动。这篇文章我使用Java和JDBC,详情可以看我的文章JDBC使用。

项目入门

    这里我们一步一步写一个简单的登录功能。

    首先我们先编辑前端页面资源

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><link href="">
</head>
<body><div><a href="WEB-INF/jsp/login.jsp"><h1>点我进行登录</h1></a></div>
</body>
</html>

    大家可以先试一试,然后就会发现,访问不了login.jsp,报404错误。 这是因为Tomcat是不允许用户通过URL直接访问WEB-INF下的任何资源的。我们想要访问,只能通过servlet转发或页面包含的形式来进行访问。这里我们使用请求转发,为了美观,我们使用Post请求。

    为了易于理解,我这里改为使用form表单。其中action设置Servlet的URL,method设置请求方式。给表单添加一个按钮,将属性设置为submit,用于发出请求。

修改后的jsp页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><link href="">
</head>
<body><div><form action="/toLogin" method="post"><button type="submit"><h1>点我进行登录</h1></button></form></div>
</body>

    到了servlet这里,我们就可以直接使用路径来访问WEB-INF下的login.jsp了。 

对应的Servlet文件:

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;@WebServlet("/toLogin")
public class toLoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(req, resp);}
}

这个时候我们就可以成功打开login页面了。 

    前面提到过了,Servlet就已经是Java代码了,可以访问Java代码资源并与之互动。

    转到登录页面之后,前端连后端的流程基本一致。我们直接从发出请求到Servlet后开始讲。

先给出项目完整的结构图:

   完整的登录事件流程:

    在LoginServlet处,我们访问service下的LoginImpl,调用其中的boolean login(String username,String password)方法。

    然后LoginImpl调用dao包,传入参数username,查询数据库中的数据。

    在dao包的LoginDaoImpl中调用相关方法访问数据库,如果存在用户名为username的用户,将该用户的信息打包返回LoginImpl。

    LoginImpl进行业务判断,如果密码正确,则返回true给servlet,如果密码错误或者用户不存在,都返回false。

    

    这是一个完整的登录流程。补充两点:

1.其中dao包中的SQL语句应该存放在/src/constant包里面,这里我写的时候忘记了,直接写在了dao包里面,这样的编程并不规范。

2. 对比用户信息,也就是判断密码是否正确,应当由service包来完成,dao包只用专注于自己的访问数据库就好。可能会有伙伴绝对多余,是因为这里只有一个登录的判断。实际中会访问的用户数据不止这一点,甚至用户的账户信息(账号、密码等)和个人信息(出生日期、姓名性别等)会专门分成两个表进行存储。

    本文原意便是希望帮助后来的伙伴了解编程规范,所以进行了两点补充,当然本文也只做一个简单参考。往后的开发中会逐渐使用各种框架,由开源的,也有公司自己私有的,业务需求有时候分包也会有很多不同,但大体上都会遵循前端、后端、Dao包 三大块。

示例项目的完整文件下载回文章开头处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/486113.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全连接层与链式求导法则在神经网络中的应用

目录 ​编辑 引言 全连接层的工作原理 前向传播 反向传播 链式求导法则及其在神经网络中的应用 链式求导法则 应用于全连接层 计算梯度 结论 引言 在深度学习领域&#xff0c;全连接层&#xff08;Fully Connected Layer&#xff0c;FC&#xff09;和链式求导法则是…

泷羽Sec-星河飞雪-bp抓APP包的相关配置方法

免责声明 学习视频来自 B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 泷羽sec官网&#xff1a;http…

00. Nginx-知识网络

知识目录 语雀知识网络&#xff0c;点击“”-- 点击“”查看知识网络 01. Nginx-基础知识 02. Nginx-虚拟主机 03. Nginx-Web模块 04. Nginx-访问控制 05. Nginx-代理服务 06. Nginx-负载均衡 07. Nginx-动静分离 08. Nginx-平滑升级 09. Nginx-日志切割 10. Nginx-…

【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建

【Springboot3vue3】从零到一搭建Springboot3vue3前后端分离项目&#xff0c;整合knef4j和mybaits实现基础用户信息管理 后端环境搭建1.1 环境准备1.2 数据库表准备1.3 SpringBoot3项目创建1.4 MySql环境整合&#xff0c;使用druid连接池1.5 整合mybatis-plus1.5.1 引入mybatie…

【大数据技术基础】 课程 第3章 Hadoop的安装和使用 大数据基础编程、实验和案例教程(第2版)

第3章 Hadoop的安装和使用 3.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台&#xff0c;为用户提供了系统底层细节透明的分布式基础架构。Hadoop是基于Java语言开发的&#xff0c;具有很好的跨平台特性&#xff0c;并且可以部署在廉价的计算机集群中。H…

【Elasticsearch】ES+MySQL实现迷糊搜索

1. 技术选型 使用 Elasticsearch (ES) 结合 MySQL 进行数据存储和查询&#xff0c;而不是直接从 MySQL 中进行查询&#xff0c;主要是为了弥补传统关系型数据库&#xff08;如 MySQL&#xff09;在处理大规模、高并发和复杂搜索查询时的性能瓶颈。具体来说&#xff0c;ES 与 My…

Tomcat 的使用(图文教学)

Tomcat 的使用&#xff08;图文教学&#xff09; 前言一、什么是Tomcat&#xff1f;二、Tomcat 服务器和 Servlet 版本的对应关系三、Tomcat 的使用 1、安装2、目录介绍3、如何启动4、Tomcat 的停止5、如何修改 Tomcat 的端口号6、如何部暑 web 工程到 Tomcat 中 6.1 方式一6.…

Altium Designer学习笔记 31 PCB布线优化_GND处理

基于Altium Designer 23学习版&#xff0c;四层板智能小车PCB 更多AD学习笔记&#xff1a;Altium Designer学习笔记 1-5 工程创建_元件库创建Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制Altium Designer学习笔记 11-15 原理图的封装 编译 检查 _PCB封装库的创建Al…

前端知识1html

VScode一些快捷键 Ctrl/——注释 !——生成html框架元素 *n——生成n个标签 直接书写html的名字回车生成对应的标签 常见标签 span&#xff1a; <span style"color: red;">hello</span> <span>demo</span> span实现&#xff1a; 标题…

Java项目实战II基于微信小程序的私家车位共享系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市化进程的加速&…

在google cloud虚拟机上配置anaconda虚拟环境简单教程

下载anaconda安装包 wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh 安装 bash Anaconda3-2022.10-Linux-x86_64.sh 进入base环境 eval "$(/home/xmxhuihui/anaconda3/bin/conda shell.bash hook)" source ~/.bashrc 安装虚拟环境…

天天 AI-241207:今日热点- Windsurf:在工程能力上进一步进化的Cursor

2AGI.NET | 探索 AI 无限潜力&#xff0c;2AGI 为您带来最前沿资讯。 Windsurf&#xff1a;在工程能力上进一步进化的Cursor 介绍了一个新的AI代码编辑器Windsurf&#xff0c;它被认为是Cursor的进化版&#xff0c;具有更强的工程能力。文章强调了Windsurf在自动化编码和系统…

数据结构---单链表

目录 一、概念 二、分类 1. 单向或者双向 2. 带头或者不带头 3. 循环或者非循环 三、接口实现 1.定义结构 2、申请节点 3、尾插 4、头插 5、尾删 6、头删 7.查找&#xff0c;也可以充当修改 8、在pos之前插入x 9、在pos之后插入x ​编辑 10、删除pos位置 …

CSU课内课程资料【github仓库】

里面是我当时的PPT&#xff0c;作业答案&#xff0c;实验&#xff0c;还有一些笔记啥的&#xff0c;里面有的是他人的笔记和报告&#xff0c;等之后闲下来的话&#xff0c;我会删掉这部分&#xff0c;起码人家的笔记也是有隐私权的。关于实验&#xff0c;大多也是很普通&#x…

深算院崖山发布核心平替战略 加速金融数智化跃迁

2024年11月14日&#xff0c;由深圳计算科学研究院&#xff08;简称&#xff1a;深算院&#xff09;主办、深圳崖山科技有限公司&#xff08;简称&#xff1a;崖山科技&#xff09;和赛迪网承办的“2024国产数据库创新生态大会”在深圳成功举办。会上&#xff0c;崖山数据库重磅…

【Web】2023安洵杯第六届网络安全挑战赛 WP

目录 Whats my name easy_unserialize signal Swagger docs 赛题链接&#xff1a;GitHub - D0g3-Lab/i-SOON_CTF_2023: 2023 第六届安洵杯 题目环境/源码 Whats my name 第一段正则用于匹配以 include 结尾的字符串&#xff0c;并且在 include 之前&#xff0c;可以有任…

从零开始的vscode配置及安装rust教程

配置vscode的rust环境 下载安装vscodemac 环境 1. 下载安装rust2. 配置 mac vscode环境3. 创建一个测试项目 windows 环境 1. 安装c运行环境2. 安装配置rustup3. 配置windows vscode环境4. 创建一个测试项目 下载安装vscode 1.官网应用程序下载 vscode&#xff1a;https://…

小程序 - 美食列表

小程序交互练习 - 美食列表小程序开发笔记 目录 美食列表 功能描述 准备工作 创建项目 配置页面 配置导航栏 启动本地服务器 页面初始数据 设置获取美食数据 设置onload函数 设置项目配置 页面渲染 页面样式 处理电话格式 创建处理电话格式脚本 页面引入脚本 …

ip所属地址是什么意思?怎么改ip地址归属地

在数字化时代&#xff0c;IP地址作为网络设备的唯一标识符&#xff0c;不仅关乎设备间的通信&#xff0c;还涉及到用户的网络身份与位置信息。IP所属地址&#xff0c;即IP地址的归属地&#xff0c;通常反映了设备连接互联网时的地理位置。本文将深入解析IP所属地址的含义&#…

【opencv入门教程】12. 矩阵初始化

文章选自&#xff1a; 一、 数据类型 建立矩阵必须要指定矩阵存储的数据类型&#xff0c;图像处理中常用的几种数据类型如下&#xff1a;包括数据位深度8位、32位&#xff0c;数据类型U:uchar、F:float型以及通道数C1&#xff1a;单通道、C3&#xff1a;三通道、C4&#xff…