Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器
Servlet是一个接口,定义了Java类被浏览器访问到的规则
1. 创建JavaEE项目
2. 定义一个类,实现Servlet接口
public class myServlet1 implements Servlet
3. 实现接口中的抽象方法,在service方法中输出内容
@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("Hello Servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
4. 配置Servlet
在web.xml的< web-app >标签中配置Servlet
<servlet>
<servlet-name>myServlet1servlet-name>
<servlet-class>web.servlet.myServlet1servlet-class>
servlet>
<servlet-mapping>
<servlet-name>myServlet1servlet-name>
<url-pattern>/myServlet1url-pattern>
servlet-mapping>
5. 启动Tomcat,在打开网页的地址栏后添加url-pattern中的映射路径
控制台输出
http : //localhost:8080/Servlet/myServlet1
localhost:8080:通过localhost找到主机,并通过端口号寻找到tomcat
Servlet:寻找到tomcat下部署的项目
myServlet1:在对应项目的web.xml中查找Servlet的映射路径
① init():初始化方法,在Servlet被创建时执行,只执行一次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("创建Servlet init...");
}
默认情况下,第一次被访问时,Servlet被创建
可以在web.xml的< servlet >标签中指定Servlet的创建时机
<load-on-startup>load-on-startup>
如果标签体内值为负数,则在第一次被访问时创建Servlet
如果标签体内值为0或正整数,则在服务器启动时创建Servlet
② service():提供服务方法,每当Servlet被访问时执行,可执行多次
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("提供服务 service...");
}
③ destroy():销毁方法,在服务器正常关闭时执行,只执行一次
@Override
public void destroy() {
System.out.println("关闭服务器 destroy...");
}
① getServletConfig():获取ServletConfig对象
② getServletInfo():获取Servlet的信息(版本,作者等)
使用注解配置可以不配置web.xml中的内容
创建JavaEE项目,选择3.0以上版本的Servlet,可以不创建web.xml
定义一个类来实现Servlet接口
实现抽象方法
在类上使用@WebServlet注解进行配置
@WebServlet(“资源路径”)
@WebServlet("/myServlet1")
public class myServlet1 implements 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.print("service...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象方法,在定义Servlet类时,可以继承GenericServlet类,只实现service()方法即可
HTTPServlet:对HTTP协议的封装,简化操作,若类继承了HttpServlet类,需要复写doGet()方法和doPost()方法
一个Servlet可以定义多个访问路径:@WebServlet({"/S1","/S2",“S3”})
单层路径:/name
多层路径:/pname/name