当前位置: 首页 > 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.xdnf.cn/news/1265293.html

相关文章:

  • Go语言接口实战指南
  • 聊聊经常用的微服务
  • Baumer高防护相机如何通过YoloV8深度学习模型实现火星陨石坑的检测识别(C#代码UI界面版)
  • 集成电路学习:什么是RQT图形用户界面工具
  • 智慧园区误报率↓76%:陌讯多模态融合算法实战解析
  • 智能情趣设备、爆 bug:可被远程操控。。。
  • 计算机网络:如何将/22的CIDR地址块划分为4个子网
  • 前端视角下关于 WebSocket 的简单理解
  • rosrun 和 roslaunch 区别
  • [激光原理与应用-205]:光学器件 - LD与DFB的比较
  • JavaWeb03——javascript基础语法
  • 微信小程序功能 表单密码强度验证
  • 从浅拷贝到深拷贝:C++赋值运算符重载的核心技术
  • v-model双向绑定指令
  • Selenium + Python + Pytest + Yaml + POM
  • Linux网络--2、Socket编程
  • 自由学习记录(79)
  • Pytest项目_day08(setup、teardown前置后置操作)
  • NY128NY133美光固态闪存NY139NY143
  • No time to train! Training-Free Reference-Based Instance Segmentation之论文阅读
  • 笔试——Day32
  • 【ros-humble】2.自定义通讯接口发布者python,qt使用(话题)
  • 使用 ast-grep 精准匹配指定类的方法调用(以 Java 为例)
  • V4L2摄像头采集 + WiFi实时传输实战全流程
  • 汇编语言和高级语言的差异
  • 【从0到1制作一块STM32开发板】6. PCB布线--信号部分
  • 【ESP32-menuconfig(1) -- Build Type及Bootloader config】
  • FreeRTOS入门知识(初识RTOS)(一)
  • WinForm 实战 (进度条):用 ProgressBar+Timer 打造动态进度展示功能
  • BBH详解:面向大模型的高阶推理评估基准与数据集分析