总览
-
Servlet:性能最好,处理Http请求的标准。
-
SpringMVC Controller + DispatcherServlet:开发效率高(好多共性的东西都封装好了,是对Servlet的封装,核心的
DispatcherServlet
最终继承自HttpServlet
) -
这两者的关系,就如同MyBatis和JDBC,一个性能好,一个开发效率高,是对另一个的封装。
-
Servlet 和 SpringMVC的核心:Controller作用一样,都是转发控制器。将请求名字,和请求要执行的服务层程序对应起来。
Servlet:
-
例一:
@WebServlet("/ ") public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("执行了控制器") } }
该Servlet 的URL请求拦截规则是“ / ” ,即会拦截所有,一运行前端页面就会执行,该Servlet,控制台输出 “执行了控制器”
-
例二:
html:
<html> ...... <form method="POST" action="LoginServlet"> ...... </html>
Servlet :
@WebServlet("/LoginServlet ") public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("执行了控制器") } }
前端页面,当表单被提交时有个
LoginServlet
请求。Servlet 程序中拦截规则是@WebServlet("/LoginServlet ")
,产生LoginServlet
请求后,会自动执行该 Servlet 程序,输出 “执行了控制器”
SpringMVC Controller + DispatcherServlet
- 例:
HTML
SpringMVC Controller<html> ...... <form method="POST" action="Login"> ...... </html>
前端页面,当表单被提交时有个@Controller public class LoginController { @RequestMapping("Login") @ResponseBody public Login(){ System.out.println("执行了控制器,调用其他服务层语句") } }
Login
请求。Controller 程序中自动匹执行Login
请求的处理内容,调用 相关服务层程序。这里是输出 “执行了控制器,调用其他服务层语句”。