JavaWeb重点知识
Tomcat结构
-
![]()
Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。
Context 容器 Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。
Wrapper 容器 Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。是用Java编写的服务器端程序。
Servlet工作原理
方法:
-
init()
-
destroy()
-
service()
Tomcat才是与客户端直接打交道的家伙,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,Tomcat再把这个response返回给客户端。
![img]()
工作模式:
客户端发出HTTP请求;服务器加载 Servlet 类到内存;实例化并调用init()方法初始化该 Servlet;同时服务器会创建一个请求对象和一个响应对象。服务器会调用Servlet的service() 方法
(根据请求方法不同调用doGet() 或者 doPost()),传递请求和响应对象作为参数;service() 方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息;service() 方法使用响应对象的方法,将响应传回服务器,最终到达客户端。doget dopost 区别
doget(): get方法会把名值对追加在请求的url后面,因为url对字符数目有限制,进而限制了用在客户端请求的参数值得数目,并且请求中的参数值是可见的,因此敏感信息不能用这种方式传递 dopost(): post方法通过把请求参数值放在请求体重来克服get方法的限制,因此,可以发送的参数的数目是没有限制的,最后,通过post请求传递的敏感信息对外部客户端是不可见的 get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
ServletContext
ServletContext对象: 特点:上下文环境对象:对应整个web应用的。一个web应用只能有一个ServletContext对象:
ServletContext的生命周期:
诞生:web部署到服务器。启动服务器,此时上下文环境对象创建。只要 是tomcat服务器不关闭,上下文环境对象一直存在。
销毁:关闭服务器或者是从web服务器上卸载该程序的时候,该对象销毁。
获取方式
this.getServletConfig().getServletContext(); this.getServletContext(); request.getServletContext();
作用
1.存取数据。
-
存数据的方法:setAttribute(key,value); 向域对象当中存放的键值对作为域的一个属性而存在。
-
取出来:getAttribute(key); 通过给定的key获得key对应的值。
2.获得应用级别的初始化参数:context.getInitParameter
3.能够获得资源的真实路径 .getRealPath(“path” )和获得指定目录下的所有的资源 .getResourcePaths(“path”);
HttpServletResponse
-
设置响应头信息
-
发送状态码
-
设置响应正文
-
重定向:重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求。响应码为200表示响应成功,而响应码为302表示重定向。response.sendRedirect()
重定向和转发的区别:
相同点:页面跳转
不同点:
-
请求转发是一个请求,而重定向是两个请求
-
请求转发,url不会发生变化 307
-
重定向:url发生变化 302
-
HttpServletRequest
-
封装了请求头数据
-
封装了请求正文数据,如果是GET请求,那么就没有正文
-
request是一个域对象,可以把它当成Map来添加获取数据
-
request提供了请求转发和请求包含功能 request.getRequestDispatcher
-



浙公网安备 33010602011771号