学习笔记_springmvc的引见和第一个例子

学习笔记_springmvc的介绍和第一个例子
spring 各模块

我们这里学的是MVC

学习笔记_springmvc的引见和第一个例子

spring mvc都做了些什么

1. Controller为中心完成对系统流程的控制管理 (相当于Struts的Action)
2. 从请求中搜集数据
3. 对传入的参数进行验证
4. 将结果返回给视图
5. 针对不同的视图提供不同的解决方案
6. 针对jsp视图技术提供标签库
7. 拦截器
8. 上传文件

spring-mvc结构、核心组件

1. DispatcherServlet:中央控制器,把请求给转发到具体的控制类
2. Controller:具体处理请求的控制器 (想当Struts2的Action)
3. handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略
4. ModelAndView:服务层返回的数据和视图层的封装类
5. ViewResolver  & View:视图解析器,解析具体的视图
6. Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作,可以做权限拦截
注:加粗要自己创建的,黑色的是springmvc提供的;

mvc模式

学习笔记_springmvc的引见和第一个例子

springmvc组件流程

学习笔记_springmvc的引见和第一个例子

spring-mvc的第一个例子

(使用配置文件,了解即可,现在主要都是使用注解方式开发)
1. 创建一个web工程 springmvc-1
2. 导入依赖包
学习笔记_springmvc的引见和第一个例子
3.创建springmvc的配置文件
配置中央控制器 在web.xml下
  <!-- springmvc的中央控制器 -->
  <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>
创建springmvc的核心配置文件 
默认位置:WEB-INF下
文件的命名规则:中央控制器(servlet的名称)的名称+“-servlet.xml” :springmvc-servlet.xml

4. 创建controller:TestController继承AbstractController 在cn.edu.hqu.springmvc包下
package cn.edu.hqu.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");
		return new ModelAndView("jsp/index");
	}

}

配置:controller和视图 springmvc-servlet.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 ">
	<!-- 需要配置controller,handlerMapping,ViewResolver, interceptor -->

	<!-- 使用默认的映射处理器来映射controller -->
	<bean id="testController" name="/hello.do" class="cn.edu.hqu.springmvc.TestController"></bean>
	<!--视图解析器 前缀+ viewName +后缀 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- webroot到某一指定的文件夹的路径 -->
		<property name="prefix" value="/WEB-INF/"></property>
		<!-- 视图名称的后缀 -->
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>


新建index.jsp 在/WEB-INF/jsp/下


部署到tomcat启动,访问:http://localhost:8080/springmvc-1/hello.do
跳转到index.jsp ,控制台输出:hello springmvc

.三种handlerMapping

1. BeanNameUrlHandlerMapping  (默认)
如果有配置下面两种那么就要配置默认的,不然hello.do就不能访问,这个有点像我们JAVASE学的的构造器;如果添加一个构造器那么就要把默认无参构造写上
按着controller的name来映射寻找controller,默认存在
		<!-- 映射处理器之间是独立的,不相互影响 -->
		<!-- 默认的映射处理器 -->
		<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

2.SimpleUrlHandlerMapping

		<!-- 简单url的映射处理器 -->
		<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
			<property name="mappings">
				<props>
					<prop key="/hello1.do">testController</prop>
				</props>
			</property>
		</bean>

重启tomcat,访问:http://localhost:8080/springmvc-1/hello1.do
成功;

3.ControllerClassNameHandlerMapping 
根据类名来访问,
<!-- 控制类的类名控制器,访问时类名首字母需要小写 -->

<!-- 控制器的类名映射处理器 -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
重启tomcat,访问:http://localhost:8080/springmvc-1/testController.do
成功;
jar包下载:http://pan.baidu.com/s/1i3wuAdJ

项目:http://pan.baidu.com/s/1kTqkU27