老版的JavaWeb项目中,配置servlet需要在web.xml中定义
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
浏览器访问的是demo得到名为demo1的servlet,再通过名为demo1的servlet访问的是ServletDemo这个类
在最新的几个版本Java中,实现JavaWeb项目只需要添加注释,访问的时候直接访问域名后加 /demo1 就能访问到该sevlet。
//@WebServlet({"/demo1","/dd1","ddd1"})
//@WebServlet("/user/*")
//@WebServlet("*.do")
@WebServlet("/demo1")
例子:
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo1")
public class ServletDemo1 implements javax.servlet.Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("this is servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
可以看到ServletDemo1接口Servlet 重写的几个方法中-也就是servlet的生命周期
init:初始方法,在servlet初次创建时被调用
service:每次访问时被调用
destory:关闭时被调用(关闭之前)
还有第二种方式实现
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo2")
public class ServletDemo2 extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("demo2...");
}
}
GenericServlet 将servlet接口中的方法默认空实现,只是将service()方法作为抽象,将来定义servlet类可继承GenericServlet,实现service()即可
第三种 继承 HttpServlet
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doget");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("dopost");
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/demo3" method="get">
<input name="usernmae">
<input type="submit" value="提交">
</form>
</body>
</html>
复写doGet和doPost即可 ,简化操作