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中去封装