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

相关文章:

  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-6,(知识点:二极管,少子多子,扩散/漂移运动)
  • React Native + Expo 入坑指南:从核心概念到实战演练
  • LangChain面试内容整理-知识点29:LangChain与LlamaIndex等框架对比
  • 洛谷刷题7.23
  • Git 完全手册:从入门到团队协作实战(4)
  • 生命通道的智慧向导:Deepoc具身智能如何重塑医院导诊机器人的“仁心慧眼”
  • 沪银本周想法
  • Python 数据持久化存储:深入解析 JSON 与 Pickle 模块
  • 项目七.AI大模型部署
  • SCDN:网络安全新防线下的技术革新与安全效能
  • JS逆向基础( AES 解密密文WordArray和Uint8Array实战②)
  • iOS开发 Swift 速记5:高级运算符
  • 事务隔离级别和传播方式
  • 软件开发生命周期与模型解析:选择合适的开发方法
  • 什么是ARQ协议
  • 如何最简单、通俗地理解Python的numpy库?
  • C语言习题讲解-第五讲-循环编程练习等
  • Excel——设置打印的区域
  • CSS3文本阴影特效全攻略
  • 运营端账号管理设计指南:安全与效率的双重保障
  • 牛油果褐变的成因与食用安全
  • ElasticSearch基础数据管理详解
  • 同一个端口无法同时配置基于 server_name 的 HTTP(非加密)和 HTTPS(加密)
  • 数据科学与大数据技术和统计学有什么区别?​
  • [IMX][UBoot] 17.Linux 根文件系统
  • Elasticsearch Circuit Breaker 全面解析与最佳实践
  • MCU驱动AD5231BRUZ_10K
  • 【Elasticsearch】跨集群检索(Cross-Cluster Search)
  • 83、设置有人DTU设备USR-M100采集传感器数据,然后上传阿里云服务
  • now能减少mysql的压力吗