SpringMVC_day01_2(SpringMVC环境搭建)


1.DispatcherServlet配置在web.xml
请求会先进入 DispatcherServlet 中


2.HandlerMapping:负责帮助解析请求.
需要配置 DefaultAnnotationHandlerMapping的 <bean> HandlerMapping接口的实现类


3.HandlerAdapter:负责根据HandlerMapping解析的结果,去实际调用对用的方法.(找方法上@RequestMapping(“abc”)),如果找到方法,就执行这个方法


4.Controllers: 程序员自己写的方法,在具体的名称HandlerMethod


5.ViewResovler:视图解析器.负责解析HandlerMethod返回值,根据返回值内容去寻找要跳转的资源.




web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
	version="3.0">
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 指定加载文件-->
		<init-param>
			<param-name>contextConfigLocation</param-name><!-- 这个名字是固定的 -->
			<param-value>classpath:springmvc.xml</param-value><!-- 文件名 和servlet-name 保持一致 -->
			<!-- 如果不给项目指定加载文件,默认加载的就是<servlet-name>名字</servlet-name>,名字-						servlet.xml文	件。 -->
		</init-param>
		<!-- 配置创建对象的优先级。数值越低,优先级越高,1:当Tomcat加载时就,创建对象 -->
		<load-on-startup>1</load-on-startup>
		
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<!-- 除了JSP 都会执行Servlet -->
		<url-pattern>/</url-pattern>
	</servlet-mapping>


</web-app>

springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
     <!-- 实现注解 -->
     <context:component-scan base-package="com.bjsxt.controller"></context:component-scan>   
        
     
     <!-- 配置DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter 的<bean> -->
     <mvc:annotation-driven></mvc:annotation-driven>


</beans>
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的,即解决了@Controller注解使用的前提配置。

DemoController
@Controller  // 注解加载 类 
public class DemoController {
	// 只有被容器管理了,才能使用注解
	@RequestMapping("demo123")
	public String demo(){
		System.out.println("请求demo123 被处理");
		return "index.jsp"; // 负责解析HandlerMethod返回值
	}
}


当访问 http://localhost:8080/springmvc01/ 时,根据 web.xml文件的默认配置信息,当访问项目根目录时候,自动跳转到index.jsp页面,但是拦截器不会拦截JSP文件。但是打印语句不会执行。

当访问 http://localhost:8080/springmvc01/demo123 时候,DispatcherServlet会拦截除了 jsp文件之外的所有请求,所以1.demo123会被拦截,2.并被HandlerMapping解析成 demo123 ,3.HandlerAdapter也会根据解析的内容调用对应的方法(Controller),4.ViewResolver再根据方法的返回值,进行响应。
 


 

猜你喜欢

转载自blog.csdn.net/strawberry_uncle/article/details/80656953