核心组件
1,DispatcherServlet:*控制器,把请求转发到具体的Controller.
2,handlerMapping:映射处理器,负责映射到*处理器转发给Controller时的映射策略。
3,Controller:具体处理请求的控制器
4,ModelAndView:服务层返回的数据和视图层的封装类。
5,ViewResolver:视图解析器,解析具体的视图。
6,Interceptors:拦截器,负责拦截我们定义的请求
SpringMVC组件流程
配置一个Springmvc的过程:
1,新建一个web project
2,SpringMVC所需要的包复制到WEB-INF/lib
3,配置web.xml如下,配置DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xmlns=" http://java.sun.com/xml/ns/javaee" xmlns:web=" http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<web-app xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xmlns=" http://java.sun.com/xml/ns/javaee" xmlns:web=" http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<!--以上是标准头配置-->
<!-- *控制器 -->
<servlet>
<!-- *控制器 -->
<servlet>
<!--给servlet取个名字,并且引入它所需要的类-->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- struts习惯使用/*,在springmvc不管用 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- struts习惯使用/*,在springmvc不管用 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
4,
建立一个Controller,建立一个类,这个类需要继承 AbstractController,如下:
package cn.itcast.springmvc;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class TestController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("hello springmvc");
//viewName不是jsp的名称而是前缀与后缀之间的路径字符串
return new ModelAndView("jsp1/index");
}
}
5,在WEBROOT\WEB-INF下配置controller
默认名称是,*控制器名-servlet.xml
在这里是springmvc-controller.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:mvc=" http://www.springframework.org/schema/mvc"
xmlns:context=" http://www.springframework.org/schema/context"
xmlns:aop=" http://www.springframework.org/schema/aop"
xmlns:tx=" http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
<beans xmlns=" http://www.springframework.org/schema/beans"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc=" http://www.springframework.org/schema/mvc"
xmlns:context=" http://www.springframework.org/schema/context"
xmlns:aop=" http://www.springframework.org/schema/aop"
xmlns:tx=" http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
<--以外是默认头配置,以内是手动配置-->
<!-- 需要配置controller,handlerMapping,ViewResolver, interceptor -->
<!-- 映射处理器之间是独立的,不相互影响,4个例子 -->
<!-- 需要配置controller,handlerMapping,ViewResolver, interceptor -->
<!-- 映射处理器之间是独立的,不相互影响,4个例子 -->
<!--1 默认的映射处理器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 2简单url的映射处理器 ,访问key的时候就可以访问这个类-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello1.do">testController</prop>
</props>
</property>
</bean>
<!--4 控制器的类名映射处理器 -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
<!-- 3使用默认的映射处理器来映射controller,吧id唯一映射到了TestController中,并且 访问name.do的时候也可以映射-->
<bean id="testController" name="/hello.do" class="cn.itcast.springmvc.TestController"></bean>
<!-- 前缀+ viewName +后缀 ,配置modeandview视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- webroot到某一指定的文件夹的路径 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 视图名称的后缀 -->
<property name="suffix" value=".jsp"></property>
<!-- 前缀+ viewName +后缀 ,配置modeandview视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- webroot到某一指定的文件夹的路径 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 视图名称的后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
6,把.jsp文件放入指定位置,运行服务器,就可以访问了。
总结一下主要添加web访问页面流程:
1,建立一个Controller类文件-->配置访问Controller的url的映射处理器
<!-- 使用默认的映射处理器来映射controller,把hello.do映射到hello.do上,访问的时候访问hello.do就会运行TestController -->
注解方式:
1,前后缀不变
2,建立控制类,加上Controller注解,访问控制层方法的注解。
package cn.itcast.springmvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //用来标注当前类是springmvc的控制层类
@RequestMapping("/test")//给类添加了控制注解,给该Controller添加了命名空间
public class TestController
{
@RequestMapping("/hello.do")//用来访问控制层方法的注释
public String hello()
{
return "jsp1/index";
}
}
3,在配置文件中配置注解驱动,扫描器所扫描的文件夹
<!-- 扫描器的位置,同时也驱动了扫描器 -->
<context:component-scan base-package="cn.itcast.springmvc"></context:component-scan>