spring mvc是基于DispatcerServlet的mvc架构,
请求先访问 DispatcherServlet,然后DispatcherServlet再转发请求到要应的handler,
httpservlet是在web.xml中配置的
如果没有定义 servlet.xml 则根据架构定义 ,默认的servlet是在web-inf目录 下。名称为 * -servlet.xml
<!-- Spring MVC配置 --> <!-- ====================================== --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> 默认 </init-param> --> <load-on-startup>1</load-on-startup> </servlet>
<!-- 启用spring mvc 注解 --> <context:annotation-config /> <!-- 设置使用注解的类所在的jar包 --> <context:component-scan base-package="controller"></context:component-scan> <!-- 完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" />
@Controller //类似Struts的Action public class TestController { @RequestMapping("test/login.do") // 请求url地址映射,类似Struts的action-mapping public String testLogin(@RequestParam(value="username")String username, String password, HttpServletRequest request) { // @RequestParam是指请求url地址映射中必须含有的参数(除非属性required=false) // @RequestParam可简写为:@RequestParam("username") if (!"admin".equals(username) || !"admin".equals(password)) { return "loginError"; // 跳转页面路径(默认为转发),该路径不需要包含spring-servlet配置文件中配置的前缀和后缀 } return "loginSuccess"; }}
DispatcherServlet (前端控制器, 处理请求的入口,spring mvc的核心,一般在服务器启动时初始化)
HandlerMapping (映射器对象, 用于管理url与对应controller的映射关系)
Interceptors(拦截器,实现请求响应的共性处理)
Controller (后端控制器, 负责处理请求的控制逻辑)
ViewResolver(视图解析器,解析对应的视图关系:前缀+view+后缀)
参考:
https://blog.csdn.net/qq_40725867/article/details/81748554
https://www.cnblogs.com/superjt/p/3309255.html