版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
SpringMVC学习-----环境搭建,入门案列
环境搭建(基于IDEA + Maven)
- 创建Web工程
- 引入相应的依赖jar包
- 配置web.xml文件(在其中配置前端控制器)
- 配置tomcat
SpringMVC的核心组件
- 前端控制器(DispatcherServlet):类似一个指挥着,负责向各个组件转发
- 处理器映射器(HandlerMapping)
- 处理器适配器(HandlerAdapter)
- 处理器 / 控制器(Handel)
- 视图解析器(ViewResolver)
- 视图(View)
其中加粗的部分需要程序员开发,没加粗的不需要
SpringMVC的请求流程
步骤
- 浏览器发起请求到前端控制器,前端控制器负责接收并拦截请求。
- 前端控制器调用处理器映射器通过请求的URL来查找处理器Handel
- 处理器映射器找到具体的Handel,(根据xml配置,或者注解)生成处理器对象及处理器拦截器对象返回给前端控制器。
- 前端控制器调用处理器适配器来进而调用具体的处理器(Controller)
- Handel执行完成返回一个ModelAndView对象,返回给处理器适配器,进而返回给前端控制器。
- 前端控制器将ModelAndView传给视图解析器。
- 视图解析器返回具体的view给前端控制器。
- 前端控制器进行视图渲染,将数据填充到response域
- 前端控制器向浏览器响应结果
基于xml文件的配置
- 配置前端控制器(在web.xml文件中)
<!--前端控制器-->
<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:application-Context2.xml</param-value>
</init-param>
</servlet>
<!--将前端控制器映射到/-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
注 / 代表拦截所有的请求
- 配置处理器映射器
<!--映射器-->
<bean class="org.springframework.web.servlet.handler.
BeanNameUrlHandlerMapping"/>
- 配置处理器适配器
<!--适配器-->
<bean class="org.springframework.web.servlet.mvc.
SimpleControllerHandlerAdapter"/>
- 配置处理器(自己写的类,必须实现Controller接口,基于配置文件的开发)
<!--namae url 访问的路径-->
<!--处理器-->
<bean id="controller" name="/showuser" class="com.github.excellent.
controller.UserController"/>
- 配置视图解析器
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
Controler类
public class UserController implements Controller {
private UserService service = new UserService();
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
List<User> list = service.queryUser();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("list",list);
modelAndView.setViewName("showuser");
return modelAndView;
}
}