xml
基本上都用来作配置文件
两种约束
1.DTD
2.Schema
解析
servlet接口
运行在web服务器中的小型程序
servlet接口中的方法{
init
service
destroy
getServletConfig
getServletInfo
}
HttpServlet类的方法
{
dopost
doget
}
生命周期:一个对象从创建到销毁的过程
生命周期方法:
init:初始化
service:有请求就执行
destroy:销毁方法
servlet配置
在web.xml中进行配置
基本配置:完全匹配,目录匹配,扩展名匹配
完全匹配
<servlet>
<servlet-name>ceshi1</servlet-name>
<servlet-class>com.itdr.servletdemo.demo1.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ceshi1</servlet-name>
<url-pattern>/sss</url-pattern>
</servlet-mapping>
目录匹配
<servlet>
<servlet-name>ceshi2</servlet-name>
<servlet-class>/demo1/*</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ceshi2</servlet-name>
<url-pattern>/sss</url-pattern>
</servlet-mapping>
扩展名匹配
<servlet>
<servlet-name>ceshi3</servlet-name>
<servlet-class>*.do</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ceshi3</servlet-name>
<url-pattern>/sss</url-pattern>
</servlet-mapping>
以上三种匹配方式,都是在配置文件里设置的,不可重复使用,例如
<servlet>
<servlet-name>ceshi4</servlet-name>
<servlet-class>/demo1/*.do</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ceshi4</servlet-name>
<url-pattern>/sss</url-pattern>
</servlet-mapping>
这是错误的
缺省
<servlet>
<servlet-name>ceshi</servlet-name>
<servlet-class>com.itdr.servletdemo.demo1.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ceshi</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
ServletContent对象
web应用的环境上下文对象
一个web应用只能有一个ServletContent对象
生命周期:web应用开始到结束
作用域范围:整个web应用
应用方法:
this.getServletContext();
或者 config.getServletContext();
作用:
1.获得web应用全局的初始化参数
2.获得web应用中任何资源的绝对路径
3.ServletContent对象是一个域对象{
servletContext.setAttribute();//放东西,放键值对
servletContext.getAttribute();//取东西,用键去取值
servletContext.removeAttribute(); //移除东西
}
request和response
请求和响应
request:
生命周期很短:一次请求开始,一次响应结束
作用域范围:一次请求中
请求转发,只有一个请求,不管转发多少个servlet
最终处理的servlet不一定是地址栏里的
response:
重定向
请求两次
处理完毕之后送到另一个地方,会改变地址栏的地址。
response.sendRedirect()
重定向两次请求,转发一次请求
重定向地址栏发生变化,转发地址栏不变
重定向可以访问外部网站,转发只能访问内部资源
转发的性能优化于重定向