- 浏览器根据用户输入的url发送请求到达服务器
- tomcat服务器会根据浏览器发送来的请求找到对应的项目
- 根据项目名后面的url-pattern去web.xml中寻找对应的Servlet
+ 如果找到了执行当前Servlet类中的service方法
+ 如果没找到则404
+ 如果找到了代码运行报错,则500
-
导入jar包
-
编写一个Servlet类
创建一个类继承HttpServlet
并重写service方法(该方法相当于J2SE项目中的main方法)
package net.wanhe.j2ee.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
System.out.println("HelloWorld!");
}
}
- 配置 web.xml
j2ee myServlet net.wanhe.j2ee.day07.MyServlet myServlet /a
-
运行与部署
-
URL
http://localhost:8080/项目名/url-pattern eg:http://localhost:8080/j2ee/a
- 服务启动时
+ 将指定的项目打包存放到tomcat的webapps文件夹中 - localhost:8080
+ 找到了本地计算机中的tomcat服务 - /项目名
+ 找当前tomcat服务中指定的项目 - /url-pattern
+ 运行当前项目中的哪一个Servlet类
+ url-pattern不能重复,一个url-pattern只能对应一个Servlet类
当用户在浏览器发送了一个请求到达服务器时
- Servlet会产生两个对象
- 请求对象:HttpServletRequest
+ 记载了请求信息(客户端传输过来的信息) - 响应对象:HttpServletResponse
+ 空的没有任何内容
+ 当service方法执行完毕后,服务器会自动将该对象传回客户端- 浏览器会自动读取响应对象中的内容,在页面展示(识别标签)
package net.wanhe.j2ee.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test01 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(1111);
//输出流 用于向响应对象中写入数据
PrintWriter out = response.getWriter();
//将数据写到响应对象中
out.write("大家好");
}
}
获取请求数据
localhost:8080/j2ee/test01?key=value&key=value
package net.wanhe.j2ee.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test01 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//用户发送请求 请求的数据全部存放在request中
//从请求对象中获取指定的参数的值
//如果指定的key在请求中不存在 则取到的值为null
String loginName = request.getParameter("loginName");
String password = request.getParameter("password");
System.out.println(loginName);
System.out.println(password);
}
}
WEB项目完整运行流程
- tomcat服务启动,读取web.xml配置文件,将该文件中的内容加载到注册列表中
- 用户在浏览器发送请求
- 请求到达服务器
- 根据请求信息,找到服务器中对应的项目
- 根据url-pattern去注册列表中寻找对应的Servlet类
- 如果没找到,则会报错,404
- 如果找到了,并且是第一次访问这个类,那么tomcat会为这个类创建对象,并且调用该对象的service方法
- 如果不是第一次访问,则直接调用已经存在的当前对象的service方法
- 在每一次调用service方法之前,都会创建两个对象HttpServletRequest,HttpServletResponse
+ 将这两个对象交给即将调用的service方法 - 综上所述,Servlet对象只会被创建一次,第一次访问时创建
- service方法执行结束后,服务器会将响应对象交给浏览器



