Web资源
在http协议当中,规定了请求和响应双方,客服端和服务器端。与web相关的资源。
静态资源
html、js、css
动态资源
servlet/jsp
Servlet
- servlet是什么?
其实就是一个java程序,运行在我们的web服务器上,用于接收和相应 客户都安的HTTP请求。
更多的是配合动态资源来做。当然金泰页面也需要使用到servlet,只不过是Tomcat里面已经定义好了一个 DefayltServlet
Hello Servlet
的写一个Web工程,要有一个服务器。
测试隐形Web工程.
1.新建一个类,实现Servlet接口 2.配置Servlet,用意:告诉服务器,我们的应用有这么些servlet。 在webContent/WEN-INF/web.xml里面写上一下内容。 <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.itheima.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/a</url-pattern> </servlet-mapping>
Servlet的执行过程
Servlet的通用方法
Servlet(接口)
|
|
GenericServlet
|
|
HttpServlet(用于)
Servlet的生命周期
从创建到销毁,所调用的·那些方法。
init方法
在创建该servlet的实例是,就该执行该方法。
一个servket指挥初始化一次,init方法只会执行一次。
默认情况下是:初次访问该servlet,才会创建实例。servlet方法
servlet销毁的时候,就会执行该方法
1.该项目从tomcat的里面移除。 2.正常关闭tomcat就会执行 shutdown.bat
doGet和doPost不算生命周期方法,所谓的生命周期方法是指,从对象的创建到销毁一定会执行的方法,但是这两个,不一定会执行。
让Servlet创建实例的时机前提。
默认情况下,只有在初次访问servlet的时候,才会执行init方法。有的时候,我们可能需要这个方法里面执行一些初始化工作,甚至是做一些比较耗时的逻辑。
那么这个时候,初次访问,可能会在init中逗留太久的时间。那么有没有方法可以让这个初始化的时候提前一点,
在配置的时候,使用load-on-startup元素来指定,给定的数字越小,启动的时机就越早。一般不写负数,从2开始。
ServletConfig
Servlet的配置,通过这个对象,可以获取servlet在配置的时候一些信息
先说 , 在写怎么用, 最后说有什么用。
//1. 得到servlet配置对象 专门用于在配置servlet的信息
ServletConfig config = getServletConfig();
//获取到的是配置servlet里面servlet-name 的文本内容
String servletName = config.getServletName();
System.out.println("servletName="+servletName);
//2、。 可以获取具体的某一个参数。
String address = config.getInitParameter("address");
System.out.println("address="+address);
//3.获取所有的参数名称
Enumeration<String> names = config.getInitParameterNames();
//遍历取出所有的参数名称
while (names.hasMoreElements()) {
String key = (String) names.nextElement();
String value = config.getInitParameter(key);
System.out.println("key==="+key + " value="+value);
}
为什么需要有这个ServletConfig
未来我们自己开发的一些应用,使用到了一些技术,或者一些代码,我们不会。 但是有人写出来了。它的代码放置在了自己的servlet类里面。
刚好这个servlet 里面需要一个数字或者叫做变量值。 但是这个值不能是固定了。 所以要求使用到这个servlet的公司,在注册servlet的时候,必须要在web.xml里面,声明init-params
在开发当中比较少用。
刚才的这个实验, 希望基础好或者感兴趣的同学,回去自己做一下。
总结
Http协议
1. 使用HttpWacht 抓包看一看http请求背后的细节。 2. 基本了解 请求和响应的数据内容 请求行、 请求头 、请求体 响应行、响应头、响应体 3. Get和Post的区别
Servlet【重点】
1. 会使用简单的servlet 1.写一个类,实现接口Servlet 2. 配置Servlet 3. 会访问Setvlet 2. Servlet的生命周期 init 一次 创建对象 默认初次访问就会调用或者可以通过配置,让它提前 load-on-startup service 多次,一次请求对应一次service destory 一次 销毁的时候 从服务器移除 或者 正常关闭服务器 3. ServletConfig 获取配置的信息, params
HttpServletRequest 和 HttpServletResponse
Servlet配置方式
- 1.全路径匹配
以/开始 /a /aa/bb
localhost:8080/项目名称/aa/bb
- 2.路径匹配,前半段匹配
以/开始,但是以借宿 /a//*
*其实是一个通配符,匹配任意文字
localhost:8080/项目名称/aa/bb
- 3.以扩展名匹配
写法:没有/ 以开始 .扩展名 .aa .bb
ServletContext
Servlet 上下文
每个web工程都只有一个ServletContext对象,说白了也就是不管在那个servlet里面,获取到的这个类的对象都是一个
如何得到对象
ServletContext context=getServletContext();
有什么作用
可以获取全局配置
可以获取web应用中的资源
1.获取资源在tomcat里面的绝对路径
先得到路径,然后自己new InputStream ServletContext context=getServletContext(); String path=context.getRealPath("file/config.properties");
2.getResourceAsStream
直接给相对的路径,然后获取流对象
3.通过classloder去获取web工程下的资源
存取数据,servlet间共享数据,域对象
ServletContext 何时创建,何时销毁?
服务器启动的时候,会为托管的每一个web应用程序,创建一个ServletContext对象从服务器移除托管,或者时关闭服务器
- ServletContext的作用范围
只要在这个项目里面,都可以去。只要同一个项目。A项目存,在B项目取,是取不到的 ServletContext对象不同。
HttpServletRequest
这个对象封装客户端提交过来的一切数据。
可以获取客户端请求头信息
可以获取客户端提交过来的数据
可以获取中文数据