web是全球广域网,也称万维网,能够通过浏览器访问网站。
JavaWeb就是用来解决相关web互联网领域的技术栈。
主要包含:HTML,CSS,JavaScript,图片等。
主要包含:Servlet,JSP,主要用来处理逻辑。动态资源处理完逻辑之后会把结果交给静态资源展示,动态资源要和静态资源结合使用。
超文本传输协议,规定了浏览器和服务器之间数据传输的规则。数据传输的规则值请求数据和响应数据需要按照指定的格式进行传输。
无连接性,无状态性,基于文本,支持多媒体,基于请求-响应模型,支持多种请求方式,支持缓存,支持安全性,状态码,可扩展性。
web服务器:负责解析Http协议,解析请求数据,并发送响应数据。
浏览器按照Http协议发送请求和数据,后台就需要一个Web服务器软件来根据Http协议解析请求数据和数据,然后把处理结果按照Http协议发送给浏览器。
请求数据包含:请求头,请求行,请求体。
请求行:HTTP请求中的第⼀⾏数据,请求⾏包含三块内容,分别是 POST [请求⽅式] / [请求URL路径] HTTP/1.1 [HTTP协议及版本]
请求方式有7种,最常见的是post和get。
请求头:第二行开始,格式为key:value
get请求中请求参数会拼接到url后面,在请求行中,没有请求体。post请求有请求体,请求参数在请求体中。
get请求的请求参数有大小限制,post没有。
包含:响应头,响应行,响应体。
响应行:响应数据的第⼀⾏,响应⾏包含三块内容,分别是 HTTP/1.1 [HTTP协议及版本] 200 [响应状态码] OK [状态码的描述]
响应头:第二行开始,格式为key:value
Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态Web资源开发技术。
servlet是JavaEE规范之一,就是一个接口,需要定义Servlet类实现Servlet接口,并有web服务器运行servlet
Servlet两种配置方式:web.xml,@webservlet("/servlet")括号里写的就是访问路径
//注册servlet
first
com.kfm.ServletDemo
//映射servlet
first
/demo
servlet由谁创建,由谁调用?
Servlet由服务器创建,Servlet方法由服务器调用。
服务器怎么知道Servlet中一定要有service方法?
因为自定义的Servlet类实现了Servlet接口,必然会重写service()方法。
Servlet运行在Servlet容器中(web服务器),其生命周期有容器来管理,分为4个阶段:
初始化:在Servlet实例化之后,容器会调用init()方法初始化这个对象,完成一些加载配置文件,创建连接等初始化工作,该方法只调用一次。
请求处理:每次请求Servlet是,容器都会调用service()方法处理请求。
服务终止:当需要释放内存或者容器关闭时,容器就会调用destroy()方法完成资源的释放。释放后该servlet实例会被java的垃圾回收器回收。
Servlet对象是在什么时候创建的?
默认是在第一次被访问时创建的。
Servlet生命周期涉及到的三个方法,什么时候被调用,调用几次?
init方法:在Servlet对象被创建的时候调用,调用1次。
service方法:在Servlet被访问的时候调用,访问一次调用一次。
destroy方法:Servlet对象被销毁的时候调用,只调用1次。
两个不常用的方法:getServletInfo(),获取servlet信息,getServletConfig()
我们将来开发的B/S架构的Web项目,都是针对Http协议,所以自定义Servlet继承HttpServlet。
HttpServlet内部定义了HTTP协议中的DELETE、GET、OPTIONS、POST、PUT、TRACE等请求方式对应的doDelete()、doGet()、 doOptions()、doPost()、doPut()、doTrace()等方法。
Servlet类编写好后,要想被访问到,就需要配置其访问路径
一个Servlet可以配置多个urlPattern(“/demo1”,"/demo2"),访问路径:http://localhost:8080/demo1或http://localhost:8080/demo2
精确匹配:@WebServlet("/user/select")
目录匹配:@WebServlet("/user/*"),user下面的任何一个都能访问到
扩展名匹配:@WebServlet("*.do"),扩展名匹配不用加/
任意匹配:@WebServlet("/")或者@WebServlet("/*")
/和/*的区别:
如果配置了“/”,当所有的路径都不符合时,会匹配这个“/”对应的servlet
如果配置了"/*",意味着匹配任意访问路径