第一步,用户发出请求,给DispatchServlet.前端控制器。DispatchServlet把请求发给映射器,映射器处理之后返回给DispatchServlet。
在web.xml中配置DispatchServlet前端控制器
springmvc
org.springframework.web.servlet.DispatcherServlet
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
第二步,DispatchServlet根据返回信息配置具体的适配器,交给controller执行。返回ModelAndView,
public class hello implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
//封装对象,放在ModelAndView中。Model
mv.addObject("msg","HelloSpringMVC!");
//封装要跳转的视图,放在ModelAndView中
mv.setViewName("test");
return mv;
}
}
第三步,通过ModelAndView配置具体的视图解析器,视图解析器返回给DispatchServlet(和用户连接)前端,展示具体的信息。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- BeanNameUrlHandlerMapping,需要视图名字 -->
<bean id="/hello" class="com.kuang.controller.hello"/>
映射器,适配器(前两者实际开发可用注解代替),视图解析器都在springmvc文件中配置,
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--处理器,适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>