public class FirstServlet extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("hello servlet");
}
}
注意:需要重写service方法
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
注意:不需要重写service方法,因为HttpServlet类已经重写了service方法,其重写的service方法会根据请求方式的不同,自动跳转到doPost或者doGet方法,因此需要重写这两个方法。
方式一和方式二需要在web.xml文件中进行如下配置
<servlet>
<servlet-name>firstservlet-name>
<servlet-class>FirstServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>firstservlet-name>
<url-pattern>/firsturl-pattern>
servlet-mapping>
<servlet>
<servlet-name>secondservlet-name>
<servlet-class>SecondServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>secondservlet-name>
<url-pattern>/seccondurl-pattern>
servlet-mapping>
@WebServlet("/servlet3")
public class ThirdServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
顾名思义就是servlet从出生到死亡的整个过程。
servlet接口中制定了三个方法:
有什么样的的意义呢?
设置init load-on-startup非负数有什么样的意义呢?
servlet的url-pattern可能存在着相互覆盖的情况,最终tomcat会调用哪个servlet来处理该请求按如下规则:
用来实现多个servlet之间进行的数据共享
通过调用getServletContext()方法来获得唯一的context对象,在此对象上调用方法:
@WebServlet("/domain1")
public class DomainServlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = "zs";
ServletContext servletContext = getServletContext();
servletContext.setAttribute("username", name);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
@WebServlet("/domain2")
public class DomainServlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servlet = getServletContext();
String username = (String) servlet.getAttribute("username");
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
在context对象上调用getRealPath()方法可以获得应用根目录的绝对路径