springmvc入门基础之配置方式
1、Spring下载地址
http://repo.spring.io/release/org/springframework/spring/
2、SpringMVC核心类和接口
1.DispatcherServlet:分发控制器,它自动将请求给转发到具体的控制类
2.HandlerMapping(接口):映射处理器,负责映射分发控制器转发给controller时的映射策略
HandlerMapping(实现类):
SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
3.Controller:具体处理请求的控制器,由于注解中使用了@Controller,添加了@Controller注解注解的类就可以担任控制器的职责,所以我们并不需要直接实现这个接口。
4.HandlerInterceptor(接口):拦截器,负责拦截我们定义的请求然后做处理工作。
5.ModelAndView:服务层返回的数据和视图层的封装类
6.ViewResolver(接口):视图解析器,解析具体的视图
ViewResolver的实现类
UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
InternalResourceViewResolver类,比上面的类,加入了JSTL的支持
7.HandlerExceptionResolver(接口):异常处理
SimpleMappingExceptionResolver实现类
2、SpringMVC的第一个例子
1. 创建一个web工程
2. 导入依赖包
3.创建springmvc的配置文件
配置DispatcherServlet:
使用Spring MVC,配置DispatcherServlet是第一步。
DispatcherServlet是一个Servlet,所以可以配置多个DispatcherServlet。
DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据自定义规则分发到目标Controller来处理。
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
<load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servletp容器一起启动。
<url-pattern>*.do</url-pattern> 会拦截*.do结尾的请求。
4.创建Controller,需要实现或者继承Controller接口或者子类
public class TestController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println(new Date() + ": hello SpringMVC!"); //转到index.jsp页面 return new ModelAndView("index"); } }5.创建springmvc的核心配置文件
文件的命名规则:servlet的名称+“-servlet.xml”,如 springmvc-servlet.xml
默认位置:WEB-INF下
配置:Controller和视图解析器
<!-- 使用默认的映射处理器来映射controller --> <bean id="testController" name="/hello.do" class="org.study1.mvc.controller.TestController"></bean> <!-- 前缀+ viewName +后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- WebContent(WebRoot)到某一指定的文件夹的路径 ,如下表示/WEB-INF/view/*.jsp --> <property name="prefix" value="/WEB-INF/view/"></property> <property name="suffix" value=".jsp"></property> </bean>
常见三种handlerMapping:
<!-- 映射处理器之间是独立的,不相互影响 --> <!-- 1、默认的映射处理器 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 2、简单url的映射处理器 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello1.do">testController</prop> </props> </property> </bean> <!-- 3、控制器的类名映射处理器,访问的时候类名首字母小写,且不要忘记+自己定义的后缀,此处为.do --> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"> </bean>