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

JavaWeb_Servlet复习

文章目录

    • JavaWeb_Servlet
      • C/S架构:Client Server
        • 缺点
        • 优点
      • B/S架构:brower/server
        • 优点
        • 缺点
        • B/S架构发展:
      • java web:为什么使用java语言编写web程序
        • javaEE:就是javaweb
      • JAVAEE主要体系底层语言:
        • 1.Servlet
        • 2.JSP
        • 网络传输相关知识:
      • Servlet生命周期:
        • service可以接受任何类型的请求
          • 1.get
          • 2.post
        • 以下三种浏览器发不出,需要借助其他方式
        • 常用方法:

JavaWeb_Servlet

C/S架构:Client Server

缺点

1.需要安装庞大的客户端
2.升级、维护、安装、部署都不方便。

优点

性能

B/S架构:brower/server

优点

1。无需本地安装客户端,仅需浏览器即可
2.升级是在服务端升级,用户无感知,移动办公方便

缺点

性能要弱于C/S架构,百ms级。企业级办公应用来说可以接受。

B/S架构发展:

asp,php,漏洞多,民用多企业少
Java
c#
python

java web:为什么使用java语言编写web程序

1.java语言,严谨,易读,健壮,简单
2.面向对象。庞大的类库,社区活跃。很多语言使用JVM。
3.国内,java一家独大。

javaEE:就是javaweb

java分三个版本:1.2开始划分
1.javaSE:standard Edition 标准版
2.javaEE:Enterprise Edition专业版
3.javaME:Micro Edition 已经消亡-- ios和安卓

java强项: 编写web程序

JAVAEE主要体系底层语言:

1.Servlet

接收http请求,并进行响应的网络组件,使用java语言编写

2.JSP

本质上就是servlet,只不过更方便html编写

网络传输相关知识:

HTTP:网络协议,应用层协议
tcp/ip:传输层协议

应用层 ->表示层->会话层->传输层->网络层->链路层->物理层

服务器:
1.tomcat,weblogic,websphere,glassfish,jetty,wildfly…

maven:依赖管理

Servlet生命周期:

1.普通的servlet在第一次请求时创建
2.调用init函数进行初始化
3.持续对提供服务
4.当tomcat服务器关闭时,servlet销毁

service可以接受任何类型的请求
1.get

使用频率最高,除了post之外的全部是get请求,比如:浏览器地址栏,超链接,link标记,script请求,image请求,iframe。
传递参数只能写在地址之后,?a=b&c=d&e=f
传递的参数容量有限,且是明文

2.post

使用频率最高,只能通过form表单来提交
传递数据容量无限,隐式传输

以下三种浏览器发不出,需要借助其他方式

3.put:
4.patch:
5.delete

6options 使用频率很低
7.head几乎不用
8trace 几乎不用

常用方法:

1.getMethod
获取请求的类型
2.getServletPath
获取请求路径
3.getContextPath
获取上下文路径
4.getRequestURL
统一资源定位符
5.getRequestURI
统一资源描述符
6.getPathInfo
只有@WebServlet("/hello/")中出现时有效,返回*代表的地址
7.getQueryString
查询参数,请求地址栏问号后面的内容
8.getParameter(“xxx”)
获取地址栏xxx的内容
9setCharacterEncoding(“UTF-8”)
给请求对象和响应对象设置字符集

package com.ysy;import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/hello/*")
public class HelloWorldServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取请求的类型String method = req.getMethod();System.out.println("getMethod:"+method);//getMethod:GET//获取请求路径String servletPath = req.getServletPath();System.out.println("getServletPath:"+servletPath);//getServletPath:/hello//获取上下文路径String contextPath = req.getContextPath();System.out.println("getContextPath:"+contextPath);//getContextPath:/demo01_war_exploded//4.URL  统一资源定位符StringBuffer sb = req.getRequestURL();System.out.println("getRequestURL:"+sb);//getRequestURL:http://localhost:8080/demo01_war_exploded/hello//5.统一资源描述符String requestURI = req.getRequestURI();System.out.println("getRequestURI:"+requestURI);//getRequestURI:/demo01_war_exploded/hello//6.只有@WebServlet("/hello/*")中出现*时有效,返回*代表的地址String pathInfo = req.getPathInfo();System.out.println("getPathInfo:"+pathInfo);//返回*代表的地址//7 查询参数,请求地址栏问号后面的内容String queryString = req.getQueryString();System.out.println("getQueryString:"+queryString);//getQueryString:name=ysy//8从地址栏问号后返回内容里找到匹配字符串=的内容String name = req.getParameter("name");String pwd = req.getParameter("pwd");System.out.println("name:"+name+"pwd:"+pwd);//name:ysypwd:123//9给请求对象和响应对象设置字符集req.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");//设置响应内容的内容resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();out.println("<h1> 你好,我是Servlet</h1>");out.println("<form method=\"post\" action=\"/hello\"><input type='text' name='age' value='100'><button type='submit'>提交</form>");out.flush();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String method = req.getMethod();System.out.println(method);resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();out.println("<h1>接收到Post请求</h1>");out.flush();}}

Stringbuffer:内容是可变的
String内容不可变,只是改引用

http://www.dtcms.com/a/294720.html

相关文章:

  • 免费数字孪生可视化开发平台有哪些?如何快速挑选合适工具?
  • 四、cv::Mat的介绍和使用
  • 基于.Net Core开源的库存订单管理系统
  • .Net core 部署到IIS出现500.19Internal Server Error 解决方法
  • echarts【实战】饼状图点击高亮,其他区域变暗
  • .net core接收对方传递的body体里的json并反序列化
  • 设计汽车集群电源
  • 3️⃣循环速览
  • rust嵌入式开发零基础入门教程(二)
  • 微算法科技(NASDAQ: MLGO)研究量子机器学习算法 (Quantum Machine Learning Algorithms),加速机器学习任务
  • 性能优化:Vue 3 `v-memo` 指令详解
  • 零工合规挑战:盖雅以智能安全体系重构企业用工风控
  • 漏洞扫描系列03:导出PDF/HTML报告
  • 《WebGL与Three.js打造会“讲故事“的虚拟博物馆》
  • 2.1 为什么定义tensor数据结构?
  • 宜搜科技与绿地金创考察香港数码港 共探数字科技与RWA领域战略机遇
  • 【Vue3】加载高德地图案例
  • LFU算法及优化
  • 电科金仓推出AI融合数据库,开启国产数据库新时代
  • Python 程序设计讲义(5):Python 的基本用法——数据的输入与输出
  • 【网络工程师软考版】网络互联设备、网络层协议IP和ICMP
  • Draw.io v28.0.6 中文绿色版:免费流程图制作工具
  • zabbix监控MySQL数据库
  • 如何让RAGFLow每次知识检索都是返回知识库中的所有文档?
  • HTTPS证书体系,证书加密流程(通信体系)
  • C/C++中的内存管理
  • 分布式事务中的2PC和 3PC
  • 无货源电商亚马逊采购指南:硬件隔离与支付风控实操
  • 多模态融合模型迎来新突破!
  • SAP-ABAP:SAP的MB_MIGO_BADI技术架构及增强详解