- 1、介绍
- 2、Servlet的使用
- 2.1、手动实现Servlet程序
- 2.2、Servlet的生命周期
- 2.3、Servlet请求的分发处理
- 2.4、通过继承HttpServlet实现Servlet程序
- 2.4.1、HttpServlet类
- 2.4.2、ServletConfig类
- 2.4.2、ServletContext类
- 什么是servlet
servlet是javaEE规范之一,规范就是接口 - servlet就是javaweb三大组件之一
三大组件分别是:Servlet程序,Filter过滤器,listener监听器 - Servlet是运行在服务器上的一个java小程序,它可以接收客户端发过来的请求,并响应数据给客户端
- 编写一个类去实现Servlet接口
- 实现service方法处理请求,并响应数据
- 到web.xml中去配置servlet程序的访问地址
servletTest servlet.servletTest servletTest /test
url-pattern如何定位到Servlet程序访问
- 执行Servlet构造器方法,只执行一次
- 执行init初始化方法,只执行一次
- 执行service方法,每次访问都被调用
- 执行destory方法,停止才会被执行
请求一般都是从表单中发出的,所以以表单为例,请求类型有get/post两种类型。
重写servlet中的service方法获取请求类型。
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
HttpServletRequest httpServletRequest=(HttpServletRequest) servletRequest;
String method = httpServletRequest.getMethod();
}
2.4、通过继承HttpServlet实现Servlet程序
一般在实际项目开发中,都是使用继承HttpServlet的方式实现Servlet程序进行开发
- 填写一个类去继承HttpServlet类
- 根据业务需要重写doGet或doPost方法
- 到web.xml中配置Servlet程序的访问地址
public class servletTest0 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);//GET请求的时候调用
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);//POST请求时使用
}
}
2.4.1、HttpServlet类
2.4.2、ServletConfig类
sevletConfig类是servlet程序的配置信息类
servlet程序和servletConfig对象是由Tomcat负责创建,我们负责使用
servlet程序默认是第一次访问的时候创建,servletConfig是每个servlet程序创建时,就创建一个对应的
servletConfig对象。
作用
- 可以获取Servlet程序的别名servlet-name的值
- 获取初始化参数init-param
- 获取ServletContext对象
//在重写方法init中
@Override
public class servletTest0 extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
//获取servlet程序别名
System.out.println("servletTest0的别名是:"+config.getServletName());
//获得初始化参数init-param
System.out.println("初始化参数username的值:"+config.getInitParameter("user"));
//获得servletContext对象
System.out.println("servletContext对象为:"+config.getServletContext());
}
//注意,如果还要重写Init方法的话,需要继承父类的init中的config
public void init(ServletConfig config) throws ServletException {
super.init(config)
}
}
2.4.2、ServletContext类servletTest0 servlet.servletTest0 user root
- ServletContext是一个接口,他表示servlet上下文对象
- 一个web工程只有一个ServletContext对象实例
- ServletContext是一个域对象
什么是域对象:是可以像map一样存取数据的对象,这里的域值得是存取数据的操作范围。
存数据:setAttribute()
取数据:getAttribute()
删除数据:removeAttribute()
作用
- 获取web.xml中配置的上下文参数context.param
@Override
//只能放在get中,post无法获取,功能是有区别的。
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取web.xml中配置上下文参数context.param
ServletContext context = getServletConfig().getServletContext();
String username = context.getInitParameter("username");
System.out.println("context中的username是:"+username);
// super.doGet(req, resp);//GET请求的时候调用
}
username
dcd
- 获取当前的工程路径,格式:/工程路径
- 获取工程部署后在服务器硬盘上的绝对路径
- 像map一样存储数据



