以上的流程虽然可以实现
但是相比较而言跟最早的Tomcat一样
Controller类有很多规则 耦合度太高了
基于xml形式的配置相较于注解稍微麻烦了一些
将上述的流程改成注解的方式 controller的规则去掉
Tomcat核心web.xml没动的
小配置(Spring的核心配置)
所有的xml形式去掉了
扫描所有带注解的包
<context:component-scan base-package="controller"></context:component-scan>
开启请求响应注解的处理(加载HandlerMapping类)
<mvc:annotation-driven></mvc:annotation-driven>
原有的Controller类就不用了那么多规则啦
类上面添加@Controller注解
类上面添加@RequestMapping注解------请求名字对应
类中的方法上添加@RequestMapping注解----请求执行的方法
5.参数如何处理
真实资源类中的方法 参数列表
利用是底层框架对于数据的IOC DI
6.响应信息如何处理
String
ModelAndView
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--配置一个请求和真实资源(Controller-Bean)的关系-->
<!--将Controller这个类的对象交给Spring容器管理-->
<!--<bean id="testController" class="controller.TestController"></bean>-->
<!--将刚才的bean标签配置去掉 改为开启注解扫描-->
<context:component-scan base-package="controller"></context:component-scan>
<!-- 请求和这个类对象之间的映射关系 通过请求找到他 -->
<!-- DispatcherServlet类有一个自己的小弟 负责处理映射关系 SimpleUrlHandlerMapping -->
<!--<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">-->
<!--<property name="mappings">-->
<!--<props>-->
<!--<!–真实的请求和类对应关系–>-->
<!--<prop key="TestController.do">testController</prop>-->
<!--</props>-->
<!--</property>-->
<!--</bean>-->
<!-- 上述一堆删掉 添加一个新的配置 开启注解驱动 相当于是加载了HandlerMapping类对象 -->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置SpringMVC核心入口执行类 以前的"小总管" -->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:ApplicationContext.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("TestController.do")
public class TestController {
@RequestMapping
public String test(){
System.out.println("我是基于注解的controller,我执行啦,这多开心");
return "welcome.jsp";
}
}