一,介绍MVC模式:
MVC模式:
1.M:model 模型,业务模型和数据模型.
2.C:controller 控制器
3.V:view 视图
优点:
使用控制器C把视图V和业务模型M分离,从而使同一个程序可以使用不同的表现形式
使用场景:
中大型项目
核心:
控制器
二,学习SpringMVC框架原因
1.我们在使用servlet初期的时候发现,每一个请求都对应一个servlet ,如果有100个请求,这个时候就需要写100个servlet,这样一来就 会造成servlet的数量太多,尽管后期进行了Servlet合并,但是任然是手动进行的,耦合度太高了。
2.使用servlet进行数据接收的时候,比较的麻烦 【参数绑定】
3.我们目前书写的代码没有办法实现java代码和servlet之间的解耦
三,SpringMVC框架
1.Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。
2.Spring MVC是一个基于MVC的web框架,Spring MVC分离了控制器,模型对象,过滤器以及处理程序对象的角色,这种分离让他们更 容易进行定制。
3.Spring MVC 3.0 后全面超越Struts2,成为最优秀的MVC框架
2.Spring MVC通过一套MVC注解,让POJO成为处理请求的控制器,而无须实现任何接口
4.采用了松散耦合可插拔组件结构,比其他MVC框架更具扩展性和灵活性
5.进行更简洁的Web层的开发
6.天生与Spring框架集成(如:IOC容器,AOP等)
7.能简单的进行web层的单元测试
8.支持灵活的URL到页面控制器的映射
9.非常容易与其他试图技术集成,
三, SpringMVC和Spring关系
1.SpringMVC是Spring framework的子框架.
2.SpringMVC运行后形成自己的容器.Spring也有自己的容器. 2.1 称Spring的容器和SpringMVC的容器是父子容器
3.SpringMVC就是比直接使用Spring多了spring-webmvc-xxx.jar
4.在环境搭建时,区分开父子容器.
4.1 直观表现:Spring和SpringMVC的内容可以配置在一个配置文件中.区分不开父子容器.可能导致出现问题:例如声明式事务绑定无 效(不报错,还没有效果.)
4.2 处理办法:Spring的东西配置一个配置文件中,SpringMVC的东西配在一个文件中.
四,SpringMVC框架的执行流程
1,流程描述:
2,介绍SpringMVC的组件:
五,SpringMVC环境搭建
1,创建maven web项目
1.New Project 点击Maven 先勾选Create from archetype 选择org.apache.maven.archetypes:maven-archetype-webapp
2.设置项目名称
3.创建完成后,手动添加resources和java目录
2,添加依赖;添加SpringMVC环境jar包(servlet-api.jar + jsp-api.jar)
<dependencies><!--进行junit单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--Spring的5大核心jar包 --><!--依赖于commons-logging日志管理 --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><!--提供了框架的基本组成部分,包括IOC 和 DI--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.6.RELEASE</version></dependency><!-- 提供了BeanFactory--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.1.6.RELEASE</version></dependency><!--上下文配置对象,提供一个框架式的对象访问方式--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.6.RELEASE</version></dependency><!--提供了强大的表达式语言--><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.1.6.RELEASE</version></dependency><!--springMVC的jar包--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.1.6.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.1.6.RELEASE</version></dependency><!--java web依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.3</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><!-- jstl表达式 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency></dependencies>
3,编写web.xml
<web-app version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>Archetype Created Web Application</display-name><!--设置欢迎页 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!--配置前端控制器,拦截的是以do结尾的url --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 自启动-在启动tomcat时立即加载对应的Servlet --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping></web-app>
4,创建Spring核心配置文件
要求:
1.在WEB-INF下
2.新建名字叫:<servlet-name>-servlet.xml配置文件,并配置内容
补:<servlet-name>-servlet.xml 的意思是:如果web.xml中,<servlet-name>springmvc</servlet-name>那么创建的Spring框架的核心配置文件名就叫做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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 设置注解扫描路径 --><context:component-scan base-package="com.jr.controller"></context:component-scan><!-- 默认加载注解处理器映射器和处理器适配器及很多的参数绑定 --><mvc:annotation-driven/>
</beans>
5,编写控制器
@Controller
public class UserController {@RequestMapping("reg.do")public ModelAndView show(HttpServletRequest request){ModelAndView mv=new ModelAndView();String name=request.getParameter("username");request.setAttribute("uname",name);mv.setViewName("ok.jsp");return mv;}
}
6,创建index.jsp页面
<body><form action="reg.do" method="post">用户名:<input type="text" name="username"><br/>密码:<input type="password" name="password"/><br/><input type="submit" value="提交"></form>
</body>
7,创建success.jsp页面
<body>req:${uname}
</body>