Spring篇--02 Spring IOC
一、Spring MVC
1.spring mvc是什么
是一个mvc框架,用来简化基于mvc框架的web应用开发
2.五大组件
(1)DiapatcherServlet
接受请求,依据HandlerMapping的配置调用相应的模型来处理
(2)HandlerMapping
包含了请求路径与模型的对应关系
(3)Controller(处理器)
负责处理业务逻辑
(4)ModelAndView
封装了处理结果
注:处理结果除了数据之外,还可能有视图名
(5)ViewResolver(视图解析器)
DispatcherServlet依据ViewResolver的解析,调用真正的视图对象来生成相应的页面
3.五大组件的关系
a.DispatcherServlet收到请求之后,依据HandlerMapping的配置,调用相应的Controller来处理
b.Controller将处理结果封装成ModelAndView对象,然后返回给DispatcherServlet。
c.DispatcherServlet依据ViewResolver的解析,调用相应的视图对象(比如某个jsp)来生成相应的页面
4.编程步骤
step1:导包
建立maven项目,导入依赖包
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
step2:添加配置文件
在src/main/resource下面新建一个spring_mvc.xml文件
step3:配置DispatcherServlet
在web.xml文件中
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- DispatcherServlet在初始化方法里面,会读取该初始化参数的值来获取spring
配置文件的位置,然后启动spring容器 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring_mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
step4:Controller(处理器)
在src/main/java下建立controller包下新建一个HelloController控制器
package controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloController implements Controller{
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
System.out.println("handleRequest()");
/*
* ModelAndView有两个构造器:
* (1)ModelAndView(String viewName),viewName是视图名
* (2)ModelAndView(String viewName,Map data),Map用于封装处理数据
*/
return new ModelAndView("hello");
}
}
step5:配置HandlerMapping
在spring_mvc.xml文件中
<!-- 配置HandlerMapping -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.do">helloController</prop>
</props>
</property>
</bean>
<!-- 配置处理器 -->
<bean id="helloController" class="controller.HelloController"/>
step6:配置视图解析器ViewResolver
在spring_mvc.xml文件中
<!-- 配置视图解析器ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
5.运行流程
二、使用注解来开发基于springmvc的web应用
1.编程步骤
step1:导包
step2:添加spring的配置文件
step3:配置DispatcherServlet
step4:写Controller
step5:配置视图解析器ViewResolver
前三步都一样,在controller中的配置是
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 如何写一个处理器:
* 1.不用实现Controller接口
* 2.可以在处理器类当中,添加多个方法,每一个方法处理一种类型的请求
* 3.方法名不作要求,返回类型可以是ModelAndView也可以是String
* 4.使用@Controller,将该处理器纳入容器进行管理(也就是说,spring配置文件不用配置该处理器了)
* 5.使用RequestMapping,告诉前端控制器(DispatcherServlet),请求路径与处理器的关系(spring配置文件不用配置HandlerMapping)
* @author LvChaoZhang
*
*/
@Controller
public class HelloController {
@RequestMapping("/hello.do")
public String hello() {
System.out.println("hello()");
return "hello";
}
}
spring_mvc.xml中
<!-- 配置组件扫描 -->
<context:component-scan base-package="controller"/>
<!-- 配置mvc注解扫描 -->
<mvc:annotation-driven/>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>