servlet一般编写顺序:
//1.创建自己的类来实现servlet接口
//2.在service方法里面写代码
//3.在web.xml配置
MyFirstServlet类
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/*
* 一个servlet只能处理一个请求
* 应该指定servlet处理哪个请求
* 需要在web.xml里面配置servlet的详细信息
*/
//1.创建自己的类来实现servlet接口
//2.在service方法里面写代码
//3.在web.xml配置
public class MyFirstServlet implements Servlet{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
//获取servlet信息
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
//功能:1.获取servlet的别名
//2.获取servlet的初始化参数
//3.获取servletContext对象,代表当前servlet的上下文,代表当前的web项目
}
//服务
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// TODO Auto-generated method stub
//service方法是用来处理来自客户端的请求
System.out.println("我是第一个Servlet");
//ServletResponse res给浏览器发送一个响应
//获取一个写数据的对象
PrintWriter writer= res.getWriter();
writer.write("Hello World");
}
}
MySecondServlet类
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class MySecondServlet implements Servlet {
public MySecondServlet() {
System.out.println("我是servlet的构造器");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
System.out.println("我是getServletConfig");
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
System.out.println("我是getServletInfo");
return null;
}
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
System.out.println("我是init(ServletConfig config)");
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("Servlet复习");
PrintWriter writer=res.getWriter();
writer.write("你好");
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Servlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<!-- 配置servlet的名字,相当于给servlet起个别名-->
<servlet-name>MyFirstServlet</servlet-name>
<!--配置servlet类的全名-->
<servlet-class>test.MyFirstServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>MySecondServlet</servlet-name>
<servlet-class>test.MySecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<!--刚才配置的servlet的别名-->
<servlet-name>MyFirstServlet</servlet-name>
<!--这个servlet用来处理哪个请求,先查找静态资源,如果找不到就找动态资源,这个属于动态资源-->
<url-pattern>/helloWorld</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MySecondServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
servlet的生命周期
当我们第一次访问Servlet时:
- 1.创建一个Servlet对象
- 2.调用Init方法
- 3.调用Service方法
- 非第一次访问时:
只调用service方法来处理请求,整个运行期间只创建了一个servlet对象。
servlet时单实例,多线程运行
销毁时调用destroy方法