- 导入jar包
SpringMVC是Spring框架的一个部分,类似于SpringJDBC,我们在Spring中找到包导入(SpringMVC依赖于Spring)
- SpringMVC充当了控制层的管理,SpringMVC在中间会存在一个自己的配置,建议用注解。
之前配置ApplicationContext.xml是在src根目录下,现在(目前是web项目)默认在WEF-INF文件夹下找配置文件
如果想要修改默认的配置路径
,可以在web.xml中 servlet标签内添加init-param
<?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>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
ApplicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置一个请求和真实资源(Controller-Bean)的关系-->
<!--将Controller这个类的对象交给Spring容器管理-->
<bean id="testController" class="controller.TestController"></bean>
<!--请求和这个类对象之间的映射关系,通过请求找到它-->
<!--DispatcherServlet类有一个自己的小弟,负责处理映射关系-->
<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!--真实的请求和类对应关系-->
<prop key="TestController.do">testController</prop>
</props>
</property>
</bean>
</beans>
以上的流程虽然可以实现
,但是相比较而言跟最早的Tomcat一样
,Controller类有很多规则 耦合度太高了
,基于xml形式的配置相较于注解稍微麻烦了一些
将上述的流程改成注解的方式 controller的规则去掉
ApplicationContext.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: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">
<!--将刚才的bean标签配置去掉 改为开启注解扫描-->
<context:component-scan base-package="controller"></context:component-scan>
<!--上述一堆删掉,添加一个新的配置,开启注解驱动,相当于是加载了HandlerMapping类对象-->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
TestController
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//为了替代原有的xml中的bean标签(Spring做的事,Spring注重对象管理),只是告诉Spring容器,有一个Controller
//类对象需要交由它来管理,放在Spring底层map容器里
@Controller
//说明请求名字和一个真实类名字对应关系(MVC该做的事,SpringMVC注重的是请求和响应)
@RequestMapping("TestController.do")
public class TestController{
@RequestMapping
public String test(){
return "welcome.jsp";
}
}