一,介绍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/javaee
http://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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://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>