zoukankan      html  css  js  c++  java
  • SpringMVC就出入门

    1.SpringMVC概述

    Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。它与Struts 2框架一样,都属于MVC框架,但其使用和性能等方面比Struts 2更加优异。

    Spring MVC具有如下特点。

    · 是Spring框架的一部分,可以方便地利用Spring所提供的其他功能。

    · 灵活性强,易于与其他框架集成。

    · 提供了一个前端控制器DispatcherServlet,使开发人员无须额外开发控制器对象。

    · 可自动绑定用户输入,并能正确的转换数据类型。

    · 内置了常见的校验器,可以校验用户输入。如果校验不能通过,那么就会重定向到输入表单。

    · 支持国际化。可以根据用户区域显示多国语言。

    · 支持多种视图技术。它支持JSP、Velocity和FreeMarker等视图技术。

    · 使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。

     

    1.1第一个SpringMVC应用

    1.1.1引入相应的jar包

    2配置web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xmlns="http://java.sun.com/xml/ns/javaee" 
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
             id="WebApp_ID" version="2.5">
     <servlet>
       <!-- 配置前端过滤器 -->
       <servlet-name>springmvc</servlet-name>
       <servlet-class>
          org.springframework.web.servlet.DispatcherServlet
       </servlet-class>
       <!-- 初始化时加载配置文件 -->
       <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:springmvc-config.xml</param-value>
       </init-param>
       <!-- 表示容器在启动时立即加载Servlet -->
       <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
         <servlet-name>springmvc</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
    </web-app>

    主要对<servlet>和<servlet-mapping>元素进行了配置。

    在<servlet>中,配置了Spring MVC的前端控制器DispatcherServlet,

    并通过其子元素<init-param>配置了Spring MVC配置文件的位置,

    <load-on-startup>元素中的1表示容器在启动时立即加载这个Servlet;

    在<servlet-mapping>中,通过<url-pattern>元素的“/”,会将所有URL拦截,并交由DispatcherServlet处理。

    springmvc-config.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"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
          <!-- 配置处理器Handle,映射/firstController请求 -->
          <bean name="/firstController"
                  class="com.itheima.controller.FirstController" />
          <!-- 处理器映射器,将处理器Handle的name作为url进行查找 -->
         <bean class=
        "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
             <!-- 处理器适配器,配置对处理器中handleRequest()方法的调用-->
         <bean class=
       "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
         <!-- 视图解析器 -->
         <bean class=
       "org.springframework.web.servlet.view.InternalResourceViewResolver" />
    </beans>

    创建视图(View)页面

    first.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="">
    <title>springmvc入门程序</title>
    </head>
    <body>
      ${msg}
    </body>
    </html>

    创建Controller类

    在src目录下,创建一个com.itheima.controller包,并在包中创建控制器类FirstController,该类需要实现Controller接口

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    public class FirstController implements Controller {
    
        @Override
        public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
            //创建ModelAndView对象
            ModelAndView mav=new ModelAndView();
            //向模型对象中添加数据
            mav.addObject("msg","这是我的第一个SpringMVC程序");
            //设置逻辑视图名
            mav.setViewName("/jsp/first.jsp");
            //返回ModelAndView对象
            return mav;
        }
    
    }

    http://localhost:8080/chapter11/firstController

    然后显示数据信息

    1.3SpringMVC的工作流程

    按照图11-4中所标注的序号,Spring MVC程序的完整执行流程如下。

    (1)用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截。

    (2)DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器。

    (3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

    (4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)。

    (5)HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器。

    (6)Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名。

    (7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet。

    (8)DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器)。

    (9)ViewReslover解析后,会向DispatcherServlet中返回具体的View(视图)。

    (10)DispatcherServlet对View进行渲染(即将模型数据填充至视图中)。

    (11)视图渲染结果会返回给客户端浏览器显示。

    在上述执行过程中,DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver对象的工作是在框架内部执行的,开发人员并不需要关心这些对象内部的实现过程,只需要配置前端控制器(DispatcherServlet),完成Controller中的业务处理,并在视图中(View)中展示相应信息即可。

    一纸高中万里风,寒窗读破华堂空。 莫道长安花看尽,由来枝叶几相同?
  • 相关阅读:
    CentOS 7 修改root密码
    Centos7网络连接不上:Network is unreachable 解决方案
    CentOS7常用命令
    cousera-冷冻电镜笔记-EM Lenses
    cousera-冷冻电镜笔记-Electron Guns
    cousera-冷冻电镜笔记-Introduction: Why Electrons?
    fit_transform,fit,transform区别和作用详解!!!!!!
    数字图像处理基础(采样、量化、邻域、连通性)
    伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布、连续分布(正态分布)、大数定理、中心极限定理、贝叶斯理论
    信息熵及其相关概念
  • 原文地址:https://www.cnblogs.com/byczyz/p/12187211.html
Copyright © 2011-2022 走看看