zoukankan      html  css  js  c++  java
  • Spring mvc的基本配置及工作原理

    1.spring mvc框架搭建

    需求:在浏览器输入一个请求login.do,跳转到登录成功界面。

    第一步,创建web项目,导入jar包
    注意:
    第二步,在web.xml中配置spring的核心监听器和spring mvc的前端控制器
    <?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">
    <!--spring 的核心监听器
    作用:在web容器(tomcat)启动的时候,创建spring的工厂类对象,把该对象绑定到web容器的上下文(环境)
    中。
    之前我们使用spring 框架,第一件事都是创建工厂类对象:
    ApplicationContext context = new ClassPathXmlApplciationContext("applicationContext.xml");
    我们现在使用的是web项目,需不需要创建工厂类对象了?需要创建。
    什么时候创建工厂类对象。工厂类对象只需要创建一个就够了,在项目启动的时候创建比较合适。
    -->
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!---
    手动指定spring 的主配置文件的位置和名称,如果不指定该参数,则spring会默认从WEB-INF/applicationContext.xml
    我们之前习惯把spring 的主配置文件放到src下面,所以一般会指定此项。
    -->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <!--配置spring mvc的前端控制器
    作用:拦截指定的请求,交给spring mvc框架进行处理
    -->
    <servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--指定spring mvc的主配置文件的位置和名称
    如果不指定该参数,spring 会默认从WEB-INF/下加载 [servlet的name]-servlet.xml
    针对这个例子,生成的配置文件名称就spring-mvc-servlet.xml
    -->
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <!--拦截所有.do结尾的请求,交给spring mvc 处理,如果要拦截所有请求 可以写/*-->
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    </web-app>
    第三步,创建spring 和spring mvc的主配置文件
    spring的主配置文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    </beans>

    spring mvc的主配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!---配置spring mvc 处理器映射器
    作用: 指定怎么才能找到spring mvc 的控制器Controller
    Controller是spring mvc 的控制器 ,相当与之前的servlet的代码。
    之前处理请求都是在servlet中,spring mvc处理请求在控制器里。项目会有很多控制器,到底要找哪一个控制器 处理
    请求是
    RequestMappingHandlerMapping这种实现定了以了 通过控制器方法或者类上面的@RequestMapping来找到具体
    的控制器的方法。
    -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
    </bean>
    <!--配置spring mvc的处理器适配器
    作用:定义什么特征的java的类才算是一个合格的控制器。在spring mvc底层有很多的是适配器实现。
    RequestMappingHandlerAdapter 定义了如果一个类加了一个@Controller的注解,他就算是一个合格的控制
    -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    </bean>
    <!--配置spring mvc 默认的jsp的视图解析器
    在spring mvc中是可以返回多种视图(相当于之前srvlet中的jsp界面)
    好比默认的jsp ,还可以是json ,还可以是一些模板文件。还可以返回excel,word,pdf等。
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--配置返回视图的前缀
    requestDispatch.forward('/WEB-INF/jsp/index.jsp');
    requestDispatch.forward('/WEB-INF/jsp/user.jsp');
    ...
    requestDispatch.forward('/WEB-INF/jsp/xxx.jsp');
    -->
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <!--配置返回视图的后缀-->
    <property name="suffix" value=".jsp"></property>
    </bean>
    </beans>
    第四步,创建spring mvc的控制器类
    /**
    * spring mvc的控制器类
    */
    @Controller
    public class LoginController {
    /**
    * 访问登录请求 跳转到主界面
    * @return
    */
    //@RequestMapping定义请求的路径
    @RequestMapping("/login")
    public String login(){
    System.out.println("欢迎登录");
    //return的是一个视图名称
    return "index";
    }
    }
    第五步,在spring mvc主配置文件中扫描控制器所在的包
    注意:
    这里要注意:必须在spring mvc主配置文件中所有控制器包,不能在spring 主配置文件中扫描该包。service和dao
    的包必须在spring 的主配置文件中扫描,不能在spring mvc主配置文件中扫描。 
    第六步,创建jsp界面
    第七步,测试
    直接启动会报如下错:
     
    是因为spring的jar包没有部署到tomcat中去,需要打开“Project structers”:
    2.spring的原理 
    运行流程:
    请求login.do--->web.xml中前端控制器--->spring mvc 主配置文件--》处理器映射器--》处理器适配器=》控制器
    ==》jsp的视图解析器=》视图的解析==》视图的渲染==》给用户返回结果。
    DispatcherServlet 前端控制器 总调度
    HandlerMapping 处理器映射器 接口 可以有很多实现 每种实现描述怎么找到控制器的方法
    HandlerAdapter 处理器适配器 接口 可以有什么多实现,每种实现定义了什么样特征的java类才算是一个合格的控
    制器
    ViewResolver 视图解析 接口 可以有很多实现 每种实现定义了返回什么样的视图,今天返回的是jsp,以后的话还
    会返回json,文件上传解析器,excle 解析,freeemarker,word 等等 
    3.spring mvc 简化配置 
  • 相关阅读:
    百度脑图
    Bootstrap入门
    Tomcat热部署的三种方式
    There is a chart instance already initialized on the dom!警告
    Ubuntu14.04设置开机自启动脚本
    PRM路径规划算法
    A*算法
    V-rep学习笔记:串口操作
    V-rep学习笔记:机器人路径规划2
    V-rep学习笔记:机器人逆运动学解算
  • 原文地址:https://www.cnblogs.com/duguangming/p/10932555.html
Copyright © 2011-2022 走看看