当前位置: 首页 > news >正文

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.lryc.cn/news/614841.html

相关文章:

  • 微信原生小程序 Timeline 组件实现
  • 在Word和WPS文字中快速拆分、合并表格
  • JavaWeb03——javascript基础语法
  • C++-AVL树
  • 微软将于 10 月停止混合 Exchange 中的共享 EWS 访问
  • SOLi-LABS Page-3 (Stacked injections) --39-53关
  • 使用 Vuepress + GitHub Pages 搭建项目文档(2)- 使用 GitHub Actions 工作流自动部署
  • 如何解决 Vue 项目启动时出现的 “No such module: http_parser” 错误问题
  • 2G内存的服务器用宝塔安装php的fileinfo拓展时总是卡死无法安装成功的解决办法
  • 企业级web应用服务器TOMCAT入门详解
  • kettle插件-kettle MinIO插件,轻松解决文件上传到MinIO服务器
  • 解决本地连接服务器ollama的错误
  • 大语言模型提示工程与应用:大语言模型对抗性提示安全防御指南
  • LLVM编译器入门
  • Java基础-TCP通信单服务器接受多客户端
  • 关于开发语言的一些效率 从堆栈角度理解一部分c java go python
  • 软考 系统架构设计师系列知识点之杂项集萃(119)
  • 数据结构(9)——排序
  • QT第三讲- 机制、宏、类库模块
  • 数字图像处理基础——opencv库(Python)
  • 算法_python_牛客华为机试笔记_01
  • 【Python 高频 API 速学 ③】
  • RecyclerView 中 ViewHolder
  • TDengine IDMP 快速体验(1. 通过云服务)
  • 【CVPR2025】计算机视觉|PX:让模型训练“事半功倍”!
  • vscode/trae 的 settings.json 中配置 latex 的一些记录
  • 设备点检系统二维码的应用
  • 我用C++和零拷贝重构了文件服务器,性能飙升3倍,CPU占用降低80%
  • Amazon Linux 训练lora模型的方式
  • 《算法导论》第 14 章 - 数据结构的扩张