Javaweb

一、javaweb介绍

Web:全球广域网,也叫万维网(www),浏览器能访问的网站。

Javaweb:用java技术解决web领域的技术栈

二、HTTP协议

(1)概念

HTTP是一种请求/响应式协议,在客户端和服务器建立连接后,客户端就可以向服务器发生HTTP请求,服务器收到后就会做出HTTP响应 

 (2)HTTP1.0和HTTP1.1

HTTP1.0:客户端和服务器建立一个TCP连接后,每次只能处理一个HTTP请求

HTTP.1.1:在一个TCP连接上可以传送多个HTTP请求和响应

(3)HTTP请求消息

HTTP请求消息即请求数据

当用户在浏览器访问某个URL地址,点击网页的超链接,提交网页的form表单时,浏览器会向服务器发送HTTP请求消息(即请求数据)。服务器收到请求数据后,处理数据后将HTTP响应消息发送给客户端。

最常用的请求方式是GET和POST方式 

GET请求方式和POST请求方式的区别

1.GET请求方式没有请求体,请求参数在请求行中,且请求参数会在URL地址栏中显示,不安全

2.POST请求方式有请求体,请求参数在请求体中,安全

3.GET请求参数大小有限制,POST没有

(4)HTTP响应消息 

 

 可以看出,HTTP请求头和HTTP响应头的格式相同,格式都是 键:值 对的形式

三、Servlet

(1)Servlet简介

Servlet是运行在Web服务器端的java程序,Servlet的运行需要Servlet容器(Tomcat)的支持,Servlet对象主要封装了对http请求的处理。

Servlet其实就是实现了Servlet接口的类。

(2)Servlet快速入门

(3)Servlet的urlPattern配置

通过WebServlet注解的urlpatterns属性:配置Servlet的请求访问路径

 访问Servlet的路径是什么就要写什么

目录匹配是带有通配符的访问路径,只要前面确定了路径,后面的通配符可以是任意的

 通过扩展名配置访问路径

(4)Servlet的执行流程

 (7)Servlet的继承体系

Servlet其实是一个根接口,GenericServlet是现实了Servlet的抽象类,HttpServlet是继承了GenericServlet的实现类

 (6)Servlet接口中的方法

(5)Servlet对象的生命周期和生命周期方法

service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。

(8)HttpServlet类

 开发B/S架构的web项目时,都是针对HTTP协议的,所以一般创建的Servlet类都是继承HttpServlet类,然后再重写它的doGet和doPost方法,就可以完成这个Servlet类的编写

        GET 请求来自正常请求URL ,或者来自于一个未指定method的HTML 表单,由 doGet() 方法处理。

        POST 请求来自一个指定了method为 POST 的 HTML 表单,它由 doPost() 方法处理。

Request(请求) & Response(响应)对象

概述:

在Servlet API中定义了一个HttpServletRequest接口,继承自ServletRequest接口,专门用于封装HTTP请求消息。request(req)对象封装了请求数据,可以用来获取请求消息数据。

在Servlet API中定义了一个HttpServletResponse接口,继承自ServletResponse接口,专门用于封装HTTP响应消息,response(resp)对象可以设置响应给客户端的数据。

Request(请求)对象

Request对象的继承结构

ServletRequest是请求对象的根接口,HttpServletRequest是封装了HTTP请求消息子接口,RequestFacade是Tomcat定义的实现了以上接口的实现类。

HttpServletRequest比ServletRequest多了一些针对Http协议的方法。如getHeader (String name), getMethod () ,getSession () 等等。

用Request对象获取HTTP请求数据

这些方法通过HttpServletRequest 对象调用就可以获取请求数据

 ​​​​​​

 Request对象用通用的方式获取请求参数

GET请求和POST请求主要是获取请求参数的方式不一样,如何让它们获取请求参数的方式一样实现doGET和doPOST方法的代码统一。

 

 

Request对象的请求转发

请求转发(forward):在服务器内部跳转资源

 request对象中有请求转发时三个和资源共享有关的方法

Response(响应)对象

 第一部分是HTTP的版本,第二部分是状态码,OK是状态码的描述

 

response对象进行请求重定向

也是一种资源跳转方式,当资源A处理不了就响应回给浏览器,叫它重新请求另一个资源处理。

状态码302表示资源A处理不了,需要重定向到另一个资源去;用响应头location:资源路径指示重定向到哪个资源

重定向的实现方式

方式一:先设置状态码,然后再设置一个响应头location

方式二(简化):

 

 

什么时候要加虚拟路径

 如果需要使用到虚拟路径则可以使用request的getContextPath()方法动态获取虚拟路径

Respose对象设置响应体的数据

四、JSP

(1)概述

 JSP就是一个页面,在里面可以写HTML标签还可以java代码。java代码写在<%%>中。

(2)JSP开发流程

 (3)JSP原理

下述的描述中,JSP=JSP文件,Servlet=Servlet文件,JS容器=Web服务器

上述的JSP=JSP文件,Servlet=Servlet文件,JS容器=Web服务器

(4)JSP脚本

第二类脚本用于向页面输出信息

综上JSP的缺点,不要在JSP中直接写java代码,应该用EL表达式和JSTL标签来替换java代码

 (5)EL表达式

 案例:

使用EL表达式来获取数据需要先有数据,而数据在Servlet中去封装