Servlet运行原理
Tomcat 的代码内置了 main 方法,当我们启动 Tomcat 的时候,就是从 Tomcat 的 main 方法开始执行的
被 @WebServlet 注解修饰的类会在 Tomcat 启动的时候就被获取并集中管理
Tomcat 通过反射这样的语法机制来创建被 @WebServlet 注解修饰的类的实例
这些实例被创建完之后,就会调用其中的 init 方法进行初始化
这些实例被销毁之前,就会调用其中的 destory 方法进行收尾工作
Tomcat 内部也是通过 Socket API 进行网络通信
Tomcat 为了能够同时处理多个 HTTP 请求,采取了多线程的方式实现,因此 Servlet 是运行在多线程环境下的
Post请求测试
浏览器直接发送的是get请求,这里使用Postman进行接口测试
@WebServlet("/testDoPost")
public class TestDoPostServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("testPost success!");
}
}
Response重定向到其他页面
public class RedirectServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.sendRedirect("https://blog.youkuaiyun.com/weixin_44610169");
}
}
post请求体body中携带信息获取
@WebServlet("/postParameter")
public class PostParameterServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
resp.getWriter().write("username = " + username + " password = " + password);
}
}