Servlet接口
要成为一个Servlet,需要实现Servlet接口(为了方便,可以继承HttpServlet,HttpServlet实现了Servlet接口)
Servlet生命周期
在Tomcat中Servlet是单例的,Servlet实例的创建由Tomcat完成
Servlet实例首次使用时才会被创建,先执行无参构造器,然后执行init()方法,再执行service()方法,以后每次请求只会执行service()方法,Servlet容器关闭时,执行destroy()方法。
Servlet的初始化参数信息,会封装到init()方法中的ServeletConfig对象
请求信息会封装到service()方法中的ServletRequest对象,响应信息封装到ServletResponse对象
public interface Servlet {
public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
public String getServletInfo();
public void destroy();
}
一、xml配置
1.web.xml
在web.xml中配置Servlet,<servlet>指定对应的Servlet类,<servlet-mapping>指定映射,<init-param>设置初始化参数,通过映射关系找到处理请求的Servlet类,在页面请求/hello(页面请求路径使用绝对路径,代表从当前项目路径下开始),就跳转到HelloServlet类处理请求
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.servlet.HelloServlet</servlet-class>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2.Servlet类
处理请求的HelloServlet继承HttpServlet,调用getServletConfig()方法获得ServletConfig对象,用ServletConfig对象获得Servlet中初始化参数
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig servletConfig = getServletConfig();
String user = servletConfig.getInitParameter("user");
System.out.println(user);
response.getWriter().write("success");
}
}
二、@WebServlet注解配置
1.@WebServlet
name等同于<servlet-name>,urlPatterns等同于<url-pattern>,initParams 等同于<init-param>
@WebServlet(
name = "HelloServlet",
urlPatterns = "/hello",
initParams = {
@WebInitParam(name = "user", value = "root") })
2.Servlet类
@WebServlet(
name = "HelloServlet",
urlPatterns = "/hello",
initParams = {
@WebInitParam(name = "user", value = "root") })
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig servletConfig = getServletConfig();
String user = servletConfig.getInitParameter("user");
System.out.println(user);
response.getWriter().write("success");
}
}