Spring MVC 起步

来源:互联网 发布:网站数据采集解决方案 编辑:程序博客网 时间:2024/05/16 12:24

一.MVC

这里写图片描述

首先http的请求到达前端控制器,前端知道具体的请求,将代理给到控制器,控制器了解具体的业务细节,因此调用业务逻辑,生成业务数据,并将业务数据返回给前端控制器。然后前端控制器将数据分发给我们的业务视图。由业务视图来呈现业务页面返还给前端控制器,再由前端控制器返回到浏览器端。

MVC的核心思想是业务数据抽取同业务数据呈现相分离
MVC是一种架构模式:程序分层,分工合作,既相互独立,又协同工作。

二.Spring MVC的静态概念

DispatcherServlet是前端控制器

这里写图片描述

HandlerAdapter相当于controller,DispatcherServelet调用各种HandlerAdapter来实现任务分发给相关的业务逻辑

这里写图片描述

HandlerInterceptor是一个接口,可以用来在Handler调用之前,之后,以及view呈现后可以做很多事情

HandlerMapping是负责确定DispatcherServelet与controller之间映射的类,告诉DispatcherServelet,在请求到来后,由哪个controller来响应这个请求

HandlerExecutionChain

这里写图片描述

ModelAndView ViewResolver View

这里写图片描述

三.配置maven环境

1.myEclipse新建项目,选择import导入

这里写图片描述

示例代码git地址

2.pom.xml文件配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>imooc-arthur</groupId>    <artifactId>spring-mvc-study</artifactId>    <version>1.0.0-SNAPSHOT</version>    <properties>        <commons-lang.version>2.6</commons-lang.version>        <slf4j.version>1.7.6</slf4j.version>        <spring.version>4.1.3.RELEASE</spring.version>        <jackson.version>2.5.4</jackson.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>org.slf4j</groupId>            <artifactId>slf4j-log4j12</artifactId>            <version>${slf4j.version}</version>            <exclusions>                <exclusion>                    <artifactId>slf4j-api</artifactId>                    <groupId>org.slf4j</groupId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-api</artifactId>            <version>${slf4j.version}</version>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>servlet-api</artifactId>            <version>2.5</version>        </dependency>        <dependency>            <groupId>commons-fileupload</groupId>            <artifactId>commons-fileupload</artifactId>            <version>1.3.1</version>        </dependency>        <dependency>            <groupId>com.fasterxml.jackson.core</groupId>            <artifactId>jackson-databind</artifactId>            <version>${jackson.version}</version>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.eclipse.jetty</groupId>                <artifactId>jetty-maven-plugin</artifactId>                <version>9.2.2.v20140723</version>            </plugin>        </plugins>    </build></project>

web.xml文件代码

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <display-name>Spring MVC Study</display-name>  <!-- Spring应用上下文, 理解层次化的ApplicationContext -->  <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>/WEB-INF/configs/spring/applicationContext*.xml</param-value>  </context-param>  <listener>        <listener-class>            org.springframework.web.context.ContextLoaderListener        </listener-class>  </listener>  <!-- DispatcherServlet, Spring MVC的核心 -->  <servlet>        <servlet-name>mvc-dispatcher</servlet-name>        <servlet-class> org.springframework.web.servlet.DispatcherServlet</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>    <servlet-mapping>        <servlet-name>mvc-dispatcher</servlet-name>        <!-- mvc-dispatcher拦截所有的请求-->        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>

因为我们配置了pom.xml文件,所以对于创建相应的文件目录
这里写图片描述

接下里创建配置文件
这里写图片描述

这里写图片描述

mvc-dispatcher-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/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">    <!-- 本配置文件是工名为mvc-dispatcher的DispatcherServlet使用, 提供其相关的Spring MVC配置 -->    <!-- 启用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 />    <!-- 静态资源处理, css, js, imgs -->    <mvc:resources mapping="/resources/**" location="/resources/" />    <!-- 配置ViewResolver。 可以用多个ViewResolver。 使用order属性排序。 InternalResourceViewResolver放在最后。 -->    <bean        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">        <property name="order" value="1" />        <property name="mediaTypes">            <map>                <entry key="json" value="application/json" />                <entry key="xml" value="application/xml" />                <entry key="htm" value="text/html" />            </map>        </property>        <property name="defaultViews">            <list>                <!-- JSON View -->                <bean                    class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">                </bean>            </list>        </property>        <property name="ignoreAcceptHeader" value="true" />    </bean>    <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>    <!--200*1024*1024即200M resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常 -->    <bean id="multipartResolver"        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">        <property name="maxUploadSize" value="209715200" />        <property name="defaultEncoding" value="UTF-8" />        <property name="resolveLazily" value="true" />    </bean></beans>

在java目录下创建类

这里写图片描述

HelloMvcController类代码示例:

package com.imooc.mvcdemo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("/hello")public class HelloMvcController {    @RequestMapping("/mvc")    public String helloMvc() {        return "home";    }}

这里写图片描述

创建home.jsp文件。

这里写图片描述

这里写图片描述

这里写图片描述

home.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>Hello Spring MVC!Here is iMooc!</body></html>

这里写图片描述

原创粉丝点击