Spring Mvc 和Spring的区别 1、ssh中的spring充当的是MVC中的Model的职能,他也可以集成hibernate等,但它不提供hibernate的功能,仅为集成。 2、Spring MVC是MVC架构的整体实现,包括了MVC三项框架,有了它你就不需要再去集成struts和hibernate了,都是由它自己提供。
MVC本质:MVC的{核心思想}是【业务数据抽取同业务数据呈现——相分离】。 大大简化了开发!Front controller 分发调度view template 页面呈现Controller 业务数据抽取总结:MVC,基本概念model-view-controller MVC的核心思想是业务数据抽取同业务数据呈现相分离 @MVC的核心思想是业务数据抽取同业务数据呈现相分离。 @前端控制器的主要作用: 1、指前端控制器将我们的请求分发给我们的控制器去生成业务数据; 2、将生成的业务数据分发给恰当的视图模版来生成最终的视图界面。 控制器:负责业务数据的抽取视图模板:负责页面呈现前端控制器:负责分发调度 用户通过http协议发送请求到前端控制器,前端控制器根据用户的请求到controller处理数据,返回处理结果到前端控制器,前端控制器将数据分发给业务视图,由业务视图呈现最终的用户页面,返回给前端控制器,在呈现给用户MVC是一种架构模式,程序分层,分工合作,既相互独立,又协同工作,分为三层: 模型层、视图层和控制层。 MVC是一种思考方式 View:视图层,为用户提供UI,重点关注数据的呈现,为用户提供界面 Model:模型层,业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合。 Controller:控制层,调用业务逻辑产生合适的数据(Model),传递数据给视图用于呈现。Spring MVC 基本概念 1、DispatcherServlet: 前端控制器2、Controller: 调用业务逻辑生成model的地方 3、HandlerAdapter:DispatcherServlet通过HandlerAdapter调用controller 4、HandlerInterceptor:拦截器 该接口提供after postHandle preHandle 三个方法,调用controller前后使用 5、HandlerMapping:前端控制器与controller映射关系的类 6、HandlerExecutionChain: preHandle->Controller method->postHandle->afterCompletion的执行链 7、ModelAndView:model的具体表现 8、viewResolver:视图解析器,决定需要用哪个视图来进行视图的呈现。 9、view:界面SpringMVC的动态概念: 1.用户发送请求request 2.DispatcherServlet拦截request 就需要找到一个Controller 如何找? 3.DispatcherServlet就把功能代理给了HandlerMapping 4.HandlerMapping根据配置 通过annotation找到Controller也找到了HandlerInterceptor 形成了一个HandlerExcutionChain 作为一个Handler或者是HandlerAdapter返回给DispatcherServlet 5.DispatcherServlet调用这个Handler或者是HandlerAdapter(找到Controller,Controller目的:生成ModelAndView) 生成ModelAndView 并返回给DispatcherServlet 6.DispatcherServlet调用ViewResolver(视图解析器)方法 返回View对象给DispatcherServlet 7.DispatcherServlet调用ModelAndView作为模型数据传递给我们的View完成了呈现 返回给DispatcherServlet 8.DispatcherServlet再把视图响应给用户 --------------------------------------------- 1.DispatcherServlet,HandlerMaping 只需要配置 2.Handler/HandlerAdapter忽略掉 3.Controller需要自己写 4.HandlerInterceptor(Controller调用前后干点啥)是一个接口,需要就写不需要就不用实现 5.ModelAndView:只是一个类 也可以使用Map把需要的放进去就好了 6.ViewResolver和HandlerMapping差不多只需要知道使用那种类型就可以了 7.view:不需要管具体的呈现。只需要管是哪一个就好了 --------------------------------------- 综上所述:需要自己写的就是Controller 其他的就是配置以上是springmvc的基本概念下面在说下maven的知识,在开发中一般使用maven自动生成jar包,不在直接导入jar包Maven是一个构建依赖管理的工具,主要三个方面: POM:就是一个xml文件(pom.xml),包含很多信息,主要是依赖关系。通过配置完成我们的依赖管理。 Dependency:web应用程序中可能会依赖很多包,而引入的包可能还会依赖其他的包,这样依赖关系的层次会很深传递关系很长,导致lib下的包非常多。但开发人员往往不知道包之间的依赖层次关系,可能会耗费很大的精力去处理包间依赖的关系。maven为我们提管理了直接依赖关系和传递依赖关系,是透明的,不需要我们干预。 Coordinates(坐标):maven像一个仓库,各厂商都往里发布产品。通过groupId,atifactId,version,packaging(缺省为jar)可以确定一个项目的坐标,就可以唯一标识一个产品。1、下载并解压meaven.zip;2、配置环境变量, 名字M2_HOME ,值是meaven安装目录;3、path:%M2_HOME%\bin;;4、测试cmd:mvn -version。maven镜像中心仓库建议大家选择阿里云的镜像地址,速度会更快一点,感觉官方是面向全世界的,毕竟我们还在墙内。<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror>将conf文件下的settings.xml文件复制到%HOME%\.m2目录下,为了避免以后更新了Maven,又要重新配置; 注意:%HOME%\.m2 要等运行过 maven 才会自动生成的。 镜像配置,每次访问Maven时候都先访问配置的这个库,下载所需要的软件包,这样可以降低中心仓库的负载,中心仓库为了避免大量访问造成的服务问题有时会拒绝我们的访问 访问英国的镜像仓库: <id>uk</id> <name>uk Central</name> <url>http://uk.maven.org/maven2</url> <mirrorOf>central</mirrorOf>maven创建项目:1.在继承Maven的eclipse中,windows--->prefrences---->Maven--->Installation--->将新下载的maven文件add进去,确保在user Setings中配置文件的路径是之前配置了mirror的配置文件setting.xml 2.运行命令创建项目 注意:需要指定创建项目的路径 例如:cd C:\Users\Workspaces\Eclipse 10 命令: mvn archetype:generate -DgroupId=i-arthur -DartifactId=spring-mvc-study -DarchetypeArtifactId=maven-archetype-webapp 参数解释:archetype:generate 调用插件 groupId:坐标artifactId:坐标的一个元素,目录结构的根目录名称archetypeArtifactId:目录类型的一个类型,此为webapp的类型mvn archetype:generate -DgroupId=oc-loki -DartifactId=spring-mvc-study -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=internal 加个参数 -DarchetypeCatalog=internal 让它不要从远程服务器上取catalog:这样就不会卡在 Generating project in Interactive mode了archetype:generate 调用插件groupId:坐标artifactId:坐标的一个元素,目录结构的根目录名称archetypeArtifactId:目录类型的一个类型,此为webapp的类型1、imprt-Maven-existing...导入项目 修改pom.xml: <dependencyManagement>...</dependencyManagement>,只用指定版本spring,确定依赖管理 <dependency></dependency> 2、配置web.xml (1)将前端控制器配入web环境 <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcher</servlet-class> <!--DispatcherServlet对应的上下文配置,默认为/WEB-INF/$servlet-name$-servlet.xml,下面语句改变了该默认参数 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 3、mvc-dispatcher-servlet.xml <context:component-scan>搜寻controller <mvc:annotation-driven>让DispatcherServlet启用基于annotation的HandlerMappingservlet.xml <!-- 启用Spring基于annotation的DI, 使用户可以在Spring MVC中使用Spring的强大功能。 激活 @Required @Autowired,JSR 250's @PostConstruct, @PreDestroy and @Resource 等标注 --> <context:annotation-config/> <!-- DispatcherServlet上下文, 只管理@Controller类型的bean, 忽略其他型的bean, 如@Service --> <context:component-scan base-package="com.imooc.mvcdemo"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- HandlerMapping, 无需配置, Spring MVC可以默认启动。 DefaultAnnotationHandlerMapping annotation-driven HandlerMapping --> <!-- 扩充了注解驱动,可以将请求参数绑定到控制器参数 --> <mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsps/"/> <property name="suffix" value=".jsp"/> </bean>解读<context:annotation-config/> --激活注解管理 <context:component-scan > --让DispatcherServlet搜索@Controller标注的类 <mvc:annotation-driven> 让DispatcherServlet启用基于Annotation的HandlerMapping(映射正确的controller) <bean class="...viewResolver">告诉DispatcherServlet启用哪个viewpom.xml<properties> <commons-lang.version>2.6</commons-lang.version> <slf4j.version>1.7.6</slf4j.version> <spring.version>4.1.3.RELEASE</spring.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>${spring.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement><dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>${commons-lang.version}</version> </dependency> <dependency> <groupId>rorg.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> <exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> </dependencies><build> <plugins> <plugin> <groupId>ort.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.2.v20140723</version> </plugin> </plugins> </build>@Controller@RequestMapping("/mvc")public class HelloMvc{
@RequestMapping("/hello")public String helloMvc{return "home";}
}
home.jsp 可以写欢迎的语句;
pom 文件配置jetty支持 mvn run:jetty构建jetty 运行的访问环境