开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序。
使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构
a.表现层: WEB层,用来和客户端进行数据交互的。表现层一般会采用MVC的设计模型
b.业务层:处理公司具体的业务逻辑的
c.持久层:用来操作数据库的
MVC全名是Model View Controller模型视图控制器,每个部分各司其职。.
1,Model:数据模型,JavaBean的类,用来进行数据封装。
2.View:指JSP、HTML用来展示数据给用户
3.Controller:用来接收用户的请求,整个流程的控制器。用来进行数据校验等。
1,什么是Spring MVC?
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。SpringMVC在三层架构中的位置:表现层框架。
主要功能:在获取多个参数、文件上传、servlet功能单一方面能有很好的解决方法。
2,Spring MVC的特点
➢是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。
➢灵活性强,易于与其他框架集成。
➢提供了一个前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象。
➢可自动绑定用户输入,并能正确的转换数据类型。
➢内置了常见的校验器,可以校验用户输入,如果校验不能通过,那么就会重定向到输入表单。
➢支持国际化。可以根据用户区域显示多国语言。
➢支持多种视图技术。它支持JSP、Velocity和FreeMarker等 视图技术。
➢使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。
3,Spring MVC第一个程序
- 导入jar包
- 在web.xml中,配置Spring MVC的前端控制器DispatcherServlet。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- 配置编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<!--<filter-class>con2.filters.EncodingFilter</filter-class>-->
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置springMVC的核心控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 配置servlet启动时加载对象 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.html</url-pattern>
<!--特别注意-->
</servlet-mapping>
</web-app>
- 在src下配置springmvc配置文件
<?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/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 1)包扫描-->
<context:component-scan base-package="con1.controller" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 配置视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/pages/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
<!--注解驱动-->
<mvc:annotation-driven />
<!--<mvc:annotation-driven conversion-service="conversionService" />-->
<!--配置类型转换器-->
<!--<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.itheima.util.DateConverter" />
</set>
</property>
</bean>-->
</beans>
- 创建controller类
@Controller
public class HelloController {
@RequestMapping(path="/hello")
public String sayHello(Model model) {
System.out.println("Hello SpringMVC!!");
}
}
配置tomcat运行项目
在控制台会输出:
4,SpringMVC重要组件
- spring mvc请所有的请求都提交给Di spatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
- Di spatcherServlet查询一个 或多个HandlerMapping,找到处理请求的Controller.
- Di spatcherServlet请请求提交到目标Controller
- Control ler进行业务逻辑处理后,会返回一个Mode lAndView
- Dispathcher查询–个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
- 视图对象负责渲染返回给客户端
5,Spring MVC的工作流程
- 用户通过浏览器向服务器发送请求,请求会被SpringMVC的前端控制器DispatcherServlet所拦截;
- DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器;
- 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并 返回给DispatcherServlet;
- DispatcherServlet会通过返回信息选择合适的HandlerAdapter (处理器适配器) ;
- HandlerAdapter会调用并执行Handler (处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器;
- Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名;
- HandlerAdapter将ModelAndView对象返回给DispatcherServlet;
- DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器) ;
- ViewReslover解析后,会向DispatcherServlet中返回具体的View (视图)
- DispatcherServlet对View进行渲染( 即将模型数据填充至视图中) ;
- 视图渲染结果会返回给客户端浏览器显示。