JavaWeb之Servlet基础以及知识点补充

第二章.Servlet基础
·补充知识点:
·Servlet运行环境:Tomcat
·一个Tomcat可运行多个应用(项目)(但是和计算机性能有关)一个项目里可能有多个Servlet
·浏览器和服务器之间的关系:无数次,每执行一次步骤重新开始。浏览器访问的Java文件Servlet(一种特殊的java文件)
·浏览器通过域名和端口号访问服务器当中的tomcat,Tomcat根据请求地址找到执行的文件。
服务端执行的操作

  1. 接收
  2. tomcat找文件处理
  3. 生成超文本
  4. 文本返回给浏览器
    在这里插入图片描述

·点击“运行”按钮执行操作:
编译
运行
编译完的javaweb通过浏览器访问
·html不可以连接数据库,数据一般存在数据库里,Java连接数据库用JDBC
·form表单递交方式:
1.get
2.post
一. Servlet概述

  1. 什么是Servlet:
    Java语言的动态web服务器端编程技术,是由Sun公司提供的一种实现动态网页的解决方案。是java web中的核心精髓。Servlet处理数据、请求的容器。
    Servlet(特殊的java文件)解决了浏览器可以访问的java文件,index.html
    按照Java EE (基础:Servlet)规范定义,Servlet是运行在容器中的Java类,它能处理Web客户的Http请求,并产生Http响应
    在这里插入图片描述

2为什么使用Servlet动态网站
当向web服务器请求一个资源时,web服务器擅长提供静态页面(web服务器不能做的两件事:不能提供动态即时页面,不能往数据库保存数据),而不能提供动态页面所以使用Servlet动态网站Servlet
3.Servlet特点:
(1) 高效
(2) 方便
(3) 功能强大
(4) 可移植性好
4.Servlet对请求的处理和响应过程(题目)
(1)接受Http请求
(2)获得请求信息,包括请求头和请求参数数据
(3)调用其它Java类方法,完成具体的业务功能
(4)实现到其他Web组件的跳转(包括重定向,请求转发)
(5)生成Http响应(包括HTML或非HTML响应)
5.Servlet体系结构
在这里插入图片描述

Servlet是使用Servlet API(应用程序设计接口)及相关类和方法的Java程序
·Servlet API两个软件包:javax.servlet包,javax.servlet.http包
6. jdk tomcat servlet 三者之间的关系:

Jdk:实现我们的运行环境(帮我们提示代码,使用现成的一些功能)
Tomcat:实现我们web运行 ,运行servlet的一个容器。
Servlet:实现业务逻辑
二. Servlet接口:

  1. 基本目标:提供与Servlet生命周期相关的方法
  2. 主要方法:
    在这里插入图片描述

Init,destory只执行一次,doGet,doPost运行一次执行一次
3. HttpServlet类:
是能够处理Http请求的Servlet,在原有的Servlet接口上添加了对Http协议的处理
(1) 主要方法:
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ac8ed9bda8b4fdb9c6f768d6bdcb2d4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YyX6L6w6Zuo5aKo,size_19,color_FFFFFF,t_70,g_se,x_16在这里插入图片描述

	4.Servlet生命周期

在这里插入图片描述

七个状态:创建(对应加载和实例化), 初始化(构造方法init) 服务可用 服务不可用(对应初始化) ,处理请求(对应处理请求) 终止服务 销毁destory(出错后直接到销毁方法,对应销毁)
比如手机应用程序:运行,后台,结束进程,初始化,未响应
(1).定义:Servlet从实例中创建到响应客户请求,直至销毁的过程
(2).Servlet程序本身不直接在Java虚拟机上运行,由Servlet容器负责整个生命周期
(3)四阶段:加载和实例化,初始化,处理请求,小惠
三.Servlet创建
1.主要包括:Servlet的描述,名称,初始参数,类路径以及访问地址等。
2.配置方式:
(1)Web.xml配置
在这里插入图片描述

(2)注解@webServlet:在程序部署时被Servlet容器处理,容器将根据具体的属性配置把相应的类部署为Servlet
在这里插入图片描述

一般用:

四.Servlet应用与特性:
1.Servlet应用:
(1).Servlet是运行于Web服务器端的Java程序。在Web开发中,Servlet常用于在服务器端处理一下与界面无关的任务
2.两方面应用:
(1)数据处理:
·处理超连接请求数据
用于获取、查询资源信息,属于Get请求类型,请求的数据会附着在URL之后,以?分割URL和传输数据
在这里插入图片描述
在这里插入图片描述

LinkServletRequest为请求地址;pageNo为请求参数,queryString表示另一个请求参数
当用户通过超链接的请求发送到Servlet容器时,包含数据的请求将被容器转换为HttpServletRequest对象。对请求数据的处理工作便由HttpServletRequest对象完成
·处理Form表单请求数据
在这里插入图片描述

(2)重定向和请求转发:(网页里的两种跳转方式)
·重定向:
response.sendRedirect(String location);
location用以指定重定向的URL,可以是相对路径,可以是绝对路径
setRedirect重定向页面跳转
在这里插入图片描述

A找B借钱,B没有钱并告诉A C有钱,于是A回来又找C
两次请求:浏览器访问Servlet,Servlet告诉浏览器是重定向,回来再次跳转到另一个,两次请求不是同一个请求(请求对象不一样)。一次响应(重定向不是响应)
·请求转发
过程只发生在服务器内部,对客户端是透明的,服务器只能在当前应用查找相应的转发资源,而不能转发到其他应用。
请求(浏览器发起请求)转发
在这里插入图片描述

请求对象是一样的 都是username
request.getRequestDispatcher(“loginsuccess.jsp”).forward(request, response);
forward方法是将请求转发给其他资源,RequestDispatcher还有方法include:将其他资源并入到当前请求中
A找B借钱,B没钱,B找C说A借钱
·请求转发和重定向的区别
(1) 请求次数:请求转发 一次请求(内部转发调用的过程,不生成新的请求),请求对象是同一个
重定向:一次,告诉浏览器加载新的请求
(2) 重定向是两个不同的请求,请求转发是同一个请求
(3) 请求转发url地址不变:
request.getRequestDispatcher(“loginsuccess.jsp”).forward(request, response);
重定向url地址改变,访问的是重定向后的文件地址
response.sendRedirect(“loginsucess.html”);
·请求转发和重定向的联系:都是实现页面跳转
小作业:在写完登陆界面的基础上显示头像(自己思考)
·url默认请求地址是get,form表单里是post
2.Servlet特性

  1. 注解支持
  2. 可插性支持:增强了Servlet配置的灵活性,使开发者在原有的框架的基础上开发自己的插件
  3. 动态配置
  4. 异步处理
    五.Servlet作用
    1.接受请求
    2.做出响应
    在这里插入图片描述

作业:登陆界面,servlet写我执行了登录

在这里插入图片描述

六.二核心
1.request
2.response

七.浏览器访问服务器,
在这里插入图片描述

浏览器需要两个东西:域名+端口号(localhost后面的端口是tomcat端口),请求(request)将数据打包成请求对象连同找文件的过程给Servlet(Servlet用于处理逻辑),到tomcat后,tomcat根据请求地址(url)在电脑里找到对应的文件(如静态文件index.html,a.jpg等和java语言用Servlet)来,文件作用是处理生成超文本,处理完之后将超文本文件响应(response)给浏览器,浏览器作渲染。
·数据动态获取和展示:mysql数据库
八.Http请求
在域名解析之后浏览器请求(request)将数据打包成请求对象连同找文件的过程给Servlet,处理完之后将超文本文件响应(response)给浏览器,浏览器做渲染
·HttpServletRequest request请求对象 内容很多
HttpServletResponse响应对象,将生成的超文本返回给浏览器
·@WebServlet(“/DemoServlet”)//注解,编写Java项目过程中,tomcat编译,将WebServlet提取出来做成map放在tomcat容器里,浏览器访问demo.html(与com.imnu.Servlet.DemoServlet是一一对应的关系)时去找这个相关文件,找Servlet,执行doGet或者doPost并未把请求和响应对象封装好
九.Servlet数据处理
·request.getParamentar获取请求参数
学习知识的补充:
一.JAVA里get和post方法的区别(曾讲期末试题)
1.get是从服务器上获取数据,post是向服务器传送数据,
2.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。
(注:get的是将数据加载到url中所以它的数据量就和我们的url的长度有关,而url的长度受到我们计算机的配置和浏览器的不同而不同,我们通常说的2kb是由于IE浏览器对url的长度的限制2048b。post的大小理论上没有限制,但是与我们计算机的配置有关如内存等,当然我们也可以在tomcat中设置我们的maxpostsize的大小,通常默认为2G)
3.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
4.在进行文件上传时只能使用post而不能是get。
二.网站是如何访问的:

  1. 输入一个域名,回车
  2. 检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有无这个域名映射:
    (1) 有:直接访问对应的ip地址,这个地址中,由我们需要访问的web程序,可以直接访问
    (2) 没有:去DNS(全世界的域名都在这里管理)服务器找,找到的话就返回,找不到就返回找不到
    三. Http
  3. 什么是Http:
    Http(超文本传输协议)是一个简单的请求,响应协议,它通常运行在TCP之上
    文本:html,字符串…
    超文本:图片,音乐,视频,定位,地图…
    80
    Https:安全的
    443
  4. 两个时代:
    ·http1.0
    http/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
    ·http2.0
    http/1.1:客户端可以与web服务器连接后,可以获得多个web资源
  5. Http请求:
    (1) 请求行:
    ·请求行中的请求方式:GET
    ·请求方式:GET,POST,HEAD,DELETE,PUT,TRACT…
    ·get:请求能够携带的参数比较少,大小会有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
    ·post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效
    (2)消息头:
    Accept:告诉浏览器,它所支持的数据类型
    Accept-Encoding:支持哪种编码格式 GBK,UTF-8,GB2312,ISO8859-1
    Accept-Language:告诉浏览器,它的语言环境
    Cache-Control:缓存控制
    Connection:告诉浏览器,请求完成是断开还是保持连接
    Host:主机…/.
    4.Http响应
    ·服务器-响应-客户端
    (1) 响应体:
    Accept:告诉浏览器,它所支持的数据类型
    Accept-Encoding:支持哪种编码格式 GBK,UTF-8,GB2312,ISO8859-1
    Accept-Language:告诉浏览器,它的语言环境
    Cache-Control:缓存控制
    Connection:告诉浏览器,请求完成是断开还是保持连接
    Host:主机…/.
    Refresh:告诉客户端,多久刷新一次
    Location:让网页重新定位
    (2) 响应状态码:
    200:请求响应成功
    3…:请求重定向
    重定向:你重新导我给你新位置去
    4…:找不到资源 404
    资源不存在
    5…:服务器代码错误 500 502网关错误
    ·当你的浏览器地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么
    ·
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值