server applet
概念:运行在服务器端的小程序。
Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则。
将来定义一个类,实现Servlet接口,复写方法。
package web1;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet(urlPatterns = "/demo")
public class Demo01_Web implements Servlet {//定义一个类继承Servlet接口
@Override
public void init(ServletConfig servletConfig) throws ServletException {
//与<load-on-startup>有关,只执行一次,默认被访问时执行
System.out.println("init!");
}
@Override
public ServletConfig getServletConfig() {//获取ServletConfig对象
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//每次被访问时都会执行
System.out.println("注解Servlet");
}
@Override
public String getServletInfo() {//获取Servlet的一些信息
return null;
}
@Override
public void destroy() {
//执行后关闭服务器,执行一次
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>web1.Demo01_Web</servlet-class>
<!-- 指定Servlet的创建时机
1.第一次被访问时,创建<load-on-startup>的值为负数,默认值为-1
2.在服务器启动时,创建<load-on-startup>的值为0或正整数
-->
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
</web-app>
其他设置虚拟路径的方法
package web1;
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 Demo02_Web extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("demo2.....");
}
}
虚拟路径格式
1.多级路径 @WebServlet("/demo1/demo2")
2.*通配符,代表任意,优先级低 @WebServlet("/demo1/*")
3.多个路径 @WebServlet({"/demo1","/demo2","/demo3"})
4.自定义 @WebServlet("*.do") do的位置上可以任意起名称,*号前没有/
GenericServlet抽象类实现Servlet接口;HttpServlet抽象类继类GenericServlet抽象类
package web1;
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 Demo02_Web extends GenericServlet {
//GenericServlet抽象类实现Servlet接口,只用复写service方法,其它方法默认为空
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("demo2.....");
}
}
package web1;
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 Demo03_Web extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//用来处理页面表单提交的get请求
//HTTP 中通过浏览器直接请是 Get 方式, 以 Post 方式提交表单时为 Post.
System.out.println("doget");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//用于客户端把数据传送到服务器端,
System.out.println("dopost");
}
}