java web项目入门了解

目录

  • 一、项目流程
    • 1. 使用servle
    • 2. 使用框架
  • 二、了解java web项目构造
    • 1. 项目目录结构
    • 2. 查看页面访问顺序
    • 3. 发起请求:jquery+ajax
    • 4. 接受参数
    • 5. JSON
      • JSON 数组
  • 三、get和post请求区别

一、项目流程

1. 使用servle

客户端服务端,客户端和服务端进行交互

  • 客户端的诉求传给服务端,服务端实现诉求,实现的效果在返回给客户端
  • 客户端使用jquery+ajax发起请求request,请求内容:
    • url:请求路径,明确使用那个servlet
    • type:请求方式,有getpost两种请求方式
    • data:参数域
  • 请求传到服务端,使用Tomcatweb容器,servlet操作:
    • 接受参数
    • 逻辑处理
    • 操作数据库
    • 逻辑处理
    • 数据返回response
  • 服务端数据返回response给客户端后,客户端反馈请求是否成功
    • success:请求成功回调函数
    • error:请求失败回调函数
      客户端和服务端流程

问题: servle处理高并发,效率不好;可以使用框架。

2. 使用框架

框架分为三层:

  • 表现层Controller,作用:接受url请求,返回响应结果
  • 业务逻辑层Service,作用:对数据进行逻辑处理,例如:爬虫,数据计算等
  • 持久层Dao,作用:负责与数据库进行操作
  • 这三层也会进行数据交互,使用实体层Entity进行交互
    框架

二、了解java web项目构造

1. 项目目录结构

  • WebContent放置前端内容
  • Java Resources·下的src`放置后端内容
  • 项目运行后,目录上会多一个servers文件夹,这是放置Tomcat的配置文件地方

2. 查看页面访问顺序

WebContent下的WEB-INF下的web.xml配置文件,可以查看页面访问先后顺序,有两种查看方式:

  • 方式一:Design
    方式一
  • 方式二:Source
    方式二

首页起名一般使用的是index,index是默认访问页面

3. 发起请求:jquery+ajax

  • 从官网下载jquery-3.7.1.min.js,在 WebContent 下新建一个 js 文件夹,将jquery文件放置文件夹 js 下
  • 在 WebContent 下新建一个 html 文件
  • ajax基础内容包括:
    • url:请求路径,对应@WebServlet(“/index”)中的路径
    • type:请求方式,get和post两种请求方式,分别对应doGet方法和doPost方法
    • data:参数域,可有可无
    • success:请求反馈 value:后端给前端反馈响应的信息
    • error:初学者可加,有助于判断是否有问题
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
      <script src="js/jquery.js"></script>
      <script>$.ajax({url:"index",type:"get",data:{user:"admin",password:"123456"},success:function(value){console.log("请求成功")},error:function(){console.log("出错啦")}})
      </script>
      </head>
      <body>
      hello
      </body>
      </html>
      
      结果:
      运行结果

扩展:Uncaught ReferenceError: $ is not defined ,说明jquery没有引进成功。

4. 接受参数

  • 在 Java Resources 下的 src ,创建包,在包中创建 servlet 的java文件
    名字是否需要一致
  • request:请求
    • getParameter()方法:获取参数
  • equals()方法:相等
  • response:返回,把响应返回到value
    • getWriter().write("")方法:返回内容
    • setContentType()方法:返回格式
  • setCharacterEncoding()方法:设置编码
    /*** Servlet implementation class IndexServlet*/
    @WebServlet("/index")//这个名字与下面的名字可以不一致,不能重名
    public class IndexServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public IndexServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("get请求接受到了");//接受参数String acc = request.getParameter("user");String bcc = request.getParameter("password");String res = "";//判断用户名是否等于adminif(acc.equals("admin")) {System.out.println("登录成功");res = "ok";}else {System.out.println("登录失败");res = "no";}//设置编码response.setCharacterEncoding("UTF-8");//返回response.getWriter().write(res);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("post请求接受到了");}
    }
    

5. JSON

  • 是javascript对象表示法
  • 是存储和交换文本信息的语法
  • json对象使用大括号{}书写
  • 对象中可包含多个键值对key/valuekey必须是字符串

JSON 数组

  • 数组值为:字符串、数字、对象、数组、布尔值、null,也可以是JavaScript的表达式,包括函数、日期、undefined
  • 语法:{属性1:属性值1, 属性2:属性值2},例如:{"name":"zhangsna", "site":null }

面对大量数据,使用json格式

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("get请求接受到了");//接受参数String acc = request.getParameter("user");String bcc = request.getParameter("password");String res = "";//判断用户名是否等于adminif(acc.equals("admin")) {System.out.println("登录成功");res = "{\"name\":\"zhangsna\", \"site\":null }";}else {System.out.println("登录失败");res = "no";}//设置后端给前端返回的信息为json格式response.setContentType("text/json;charset=utf-8");//设置编码response.setCharacterEncoding("UTF-8");//返回response.getWriter().write(res);
}

注意: 设置response.setContentType("text/json;charset=utf-8");这句话,必须设置json格式,否则报错。

三、get和post请求区别

getpost
主要用途用于获取数据(查询操作)
适合请求不会改变服务器状态的资源
例如:搜索、分页、查看详情
用于提交数据(修改操作)
适合创建、更新、删除数据
例如:登录、注册、文件上传、下单
数据传输方式数据通过 URL的查询字符串(Query String) 传递,例如:/user?id=123&name=zhang
数据可见
受URL长度限制
数据通过 请求体(Request Body) 会暴露在URL中
数据不可见
没有严格长度限制,适合大数据
安全性不安全:数据在URL中明文传输
多次请求结果相同(无副作用)
相对安全:数据在请求体中,适合传输敏感信息
多次提交肯产生不同结果(如重复下单)
缓存适合静态资源请求(如图片、CSS)不适合缓存动态数据
后端接受方式(以Java Serevlet 为例)String id = request.getParameter("id"); // 从 URL 提取参数// 需要设置字符编码(防止中文乱码)request.setCharacterEncoding("UTF-8");String username = request.getParameter("username"); // 从请求体提取参数
使用场景获取数据:页面加载、搜索等
数据量小且不敏感
提交表单,如登录、注册
上传文件或大数据,如照片
修改服务器状态,如删除资源

扩展知识location.href=""跳转

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

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

相关文章

网络资源模板--基于Android Studio 实现的日记本App

目录 一、测试环境说明 二、项目简介 三、项目演示 四、部设计详情&#xff08;部分) 创建修改页面 五、项目源码 一、测试环境说明 电脑环境 Windows 11 编写语言 JAVA 开发软件 Android Studio (2020) 开发软件只要大于等于测试版本即可(近几年官网直接下载也可…

GO的启动流程(GMP模型/内存)

目录第一部分&#xff1a;程序编译第二部分&#xff1a;函数解读1&#xff09;Golang 核心初始化过程2&#xff09;创建第一个协程3&#xff09;启动系统调度4&#xff09;跳转main函数5&#xff09;总结第三部分&#xff1a;GMP模型Goroutine流程解读第四部分&#xff1a;内存…

OLTP与OLAP:实时处理与深度分析的较量

OLTP&#xff08;Online Transaction Processing&#xff09;定义&#xff1a;OLTP 系统主要用于管理事务性应用程序的数据。这类系统需要支持大量的短时、快速的交互式事务&#xff0c;比如银行交易、在线购物订单等。特点&#xff1a;实时处理&#xff1a;OLTP 系统要求对数据…

数据安全与隐私保护:企业级防护策略与技术实现

引言&#xff1a;数据安全的新时代挑战在数字化转型加速的今天&#xff0c;数据已成为企业最核心的资产。然而&#xff0c;数据泄露事件频发&#xff0c;据 IBM《2024 年数据泄露成本报告》显示&#xff0c;全球数据泄露平均成本已达445 万美元&#xff0c;较 2020 年增长了 15…

AI_RAG

一.为什么需要RAG&#xff08;AI幻觉&#xff09;大模型LLM在某些情况下给出的回答很可能错误的&#xff0c;涉及虚构甚至是故意欺骗的信息。二.什么是RAGRAG是一种结合“信息检索”和“文本生成”的技术&#xff0c;旨在提升生成式AI模型的准确性和可靠性。它通过以下两个核心…

LeetCode111~130题解

LeetCode111.二叉树的最小深度&#xff1a; 题目描述&#xff1a; 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root …

n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node

自定义机器人使用指南 利用 n8n 打造飞书 RSS 推送机器人 文章目录自定义机器人使用指南注意事项功能介绍在群组中添加自定义机器人操作步骤邀请自定义机器人进群。- 进入目标群组&#xff0c;在群组右上角点击更多按钮&#xff0c;并点击 设置。- 在右侧 设置 界面&#xff0…

nhdeep档案管理工具软件官网

欢迎访问nhdeep官网&#xff1a; www.nhdeep.com NHDEEP提供一系列专业的单机版档案管理工具&#xff0c;满足不同场景下的档案管理需求&#xff0c;无需网络连接&#xff0c;数据安全可靠。所有工具均提供免费试用版下载。 档案综合管理系统单机版:全面的档案管理解决方案&a…

RocketMQ节点部署计算方案

节点计算公式 业务场景 预期峰值TPS&#xff1a;200,000 单组容量&#xff1a;40K TPS 容灾要求&#xff1a;同城双机房 nameServer节点数max(3, (15/50) 1) max(3, 0.3 1) max(3, 1.3) 3 Broker节点数ceil(200,000 / 40,000) 5组 总节点数 NameServer节点Broker组数(Mas…

MyBatis联合查询 - XML篇

文章目录数据库设计MyBatis 配置MyBatis 映射文件Mapper 接口总结数据库设计 建表 SQL CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL );CREATE TABLE order (id INT PRIMARY KEY AUTO_INCREMENT,user_id INT NOT NULL,order_no VARCHAR(…

Kubelet 探针如何选择 IP:status.PodIP 溯源与“同 Pod 两个 IP“现象解析

背景与现象同一个 Pod 的 readiness 和 liveness 探针日志显示连接的 IP 不一致&#xff08;例如 10.10.6.10:9999 与 10.10.6.32:9999&#xff09;。本文从 kubelet 源码入手&#xff0c;解释探针目标 IP 的来源、为何会出现两个不同 IP&#xff0c;并给出建议与验证方法。在如…

Arm Development Studio 安全通告:CVE-2025-7427

安全之安全(security)博客目录导读 目录 一、概述 二、CVE 详情 三、受影响产品 四、建议 五、致谢 六、版本历史 一、概述 ARM已知悉一个影响 Arm Development Studio 的安全漏洞&#xff0c;该漏洞可能允许攻击者执行 DLL 劫持攻击&#xff08;DLL hijacking attack&…

C#异步编程双利器:异步Lambda与BackgroundWorker实战解析

**摘要&#xff1a;**深入剖析两种异步编程范式&#xff0c;解决GUI线程阻塞难题 一、异步Lambda表达式&#xff1a;事件处理的轻量化利器 核心价值&#xff1a;简化事件响应中的异步操作&#xff0c;避免UI线程阻塞 ✅ 典型应用场景&#xff08;WPF示例&#xff09;&#xff1…

yolo world (1): 论文解读

YOLO 系列检测器以其高效性和实用性而闻名。然而,它们依赖于预定义和训练的目标类别,这限制了其在开放场景中的适用性。为了解决这一限制,我们提出了 YOLO-World,这是一种创新的方法,通过视觉-语言建模和大规模数据集预训练,增强了 YOLO 的开放词汇检测能力。具体来说,我…

【JVM】深入解析Java虚拟机

目录 1. 区分JDK&#xff0c;JRE 和 JVM 1.1 JVM 1.2 JRE 1.3 JDK 1.4 关系总结 2. 跨平台性 3. JVM中的内存划分 4. JVM的类加载机制 5. 双亲委派模型 6. 垃圾回收机制&#xff08;GC&#xff09; 6.1 识别垃圾 6.1.1 单个引用 6.1.2 多个引用 6.2 释放垃圾 6.…

98-基于Python的网上厨房美食推荐系统

基于Python的网上厨房美食推荐系统 - 技术分享博客 &#x1f4cb; 目录 项目概述技术栈系统架构核心功能实现数据库设计推荐算法数据可视化部署与优化项目特色总结与展望 &#x1f3af; 项目概述 项目背景 随着生活节奏的加快&#xff0c;越来越多的人开始关注美食制作&…

创建MyBatis-Plus版的后端查询项目

记得编码和maven库的检测&#xff01;&#xff01;&#xff01; 1、maven库导入包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…

开发板RK3568和stm32的异同:

RK3568 和 STM32 是两类不同定位的处理器 / 微控制器&#xff0c;在架构、性能、应用场景等方面差异显著&#xff0c;但也存在部分共性。以下从核心特性、异同点及典型场景进行对比&#xff1a;一、核心差异维度RK3568&#xff08;瑞芯微&#xff09;STM32&#xff08;意法半导…

C# 使用iText获取PDF的trailer数据

文章目录C# 使用iText获取PDF的trailer数据iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程序运行效果解读 Trailer 的输出总结C# 使用iText获取PDF的trailer数据 开发程序debug的时候&#xff0c;看到了PDF有个trailer数据&#xff0c;挺有意思&#xf…

京东流量资产基于湖仓架构的落地实践

在当今数字化商业浪潮中&#xff0c;数据无疑是企业的核心资产&#xff0c;而流量数据更是电商巨头京东业务运转的关键驱动力。它广泛应用于搜索推荐、广告投放等多个核心业务场景&#xff0c;直接影响着用户体验和商业效益。但随着业务规模的不断膨胀&#xff0c;传统架构在处…