1.Servlet技术
a)什么是Servlet?
1.Servlet就是javaEE规范之一。规范就是接口。
2.Servlet是javaweb三大组件之一。三大组件分别是:Servlet程序,Filter过滤器,Listener监听器。
3.Servlet是运行在服务器上的一个java小程序,它可以接受客户端发送过来的请求,并响应数据给客户端。
b)手动实现Servlet程序
1、编写一个类去实现Servlet接口
2、实现service方法,处理请求,并响应数据
3、到web.xml中去配置servlet程序的访问地址
public class HelloServlet implements Servlet {
public HelloServlet() {
System.out.println("HelloServlet()构造器被调用了");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("HelloServlet的init()被调用了");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("我是HelloServlet的service方法!");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("HelloServlet的destroy()方法被调用了!");
}
}
c)url地址到Serlvet程序的访问
d)Servlet的生命周期
1、执行Servlet的构造器方法
2、执行init()初始化方法
第一、二步,是在第一次访问的时候创建Servlet程序的时候会调用
只调用一次!!!
3、执行service()方法----每次访问都会调用
4、执行destroy()销毁方法,在web工程停止的时候调用
e)GET和POST请求的分发处理
f) 通过继承 HttpServlet 实现 Servlet 程序
一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。
1、编写一个类去继承 HttpServlet 类
2、根据业务需要重写 doGet 或 doPost 方法
3、到 web.xml 中的配置 Servlet 程序的访问地址
g) 使用 IDEA 创建 Servlet 程序
h)Servlet 类的继承体系
java7中HttpSevlet的doGet()和doPost()
2.ServletConfig类
ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。
Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。
Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的 ServletConfig 对象。
a)ServletConfig 类的三大作用
1、可以获取 Servlet 程序的别名 servlet-name 的值
2、获取初始化参数 init-param
3、获取 ServletContext 对象
注意点:
第一种获取ServletConfig的方式:
创建一个自己的Servlet类,然后继承HttpServlet,重写init方法(带参数的)
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.myServletConfig=config;
}
否则会报错如下:
第二种获取ServletConfig的方式:
因为父类GenericServlet 中已经有这个方法,所以可以直接使用。
第三种获取ServletConfig的方式:使用this.getServletConfig.getIninParameter(String s);
由于父类GenericServlet 中已经有getServletConfig方法。其实也是得到config对象后,调用config的getInitParameter方法。
String username = this.getServletConfig().getInitParameter("username");
class HelloServlet2:
web.xml配置文件:
<servlet>
<servlet-name>HelloServlet2</servlet-name>
<servlet-class>com.atguigu.servlet.HelloServlet2</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
<init-param>
<param-name>address</param-name>
<param-value>ChangSha</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet2</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
输出结果: