spring mvc 上

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的HandlerMapping

servlet.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启用哪个view
pom.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 运行的访问环境
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lozhyf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值