SpringMVC
  • [SpringMVC]Spring MVC教程
  • [SpringMVC]Spring MVC框架
  • [SpringMVC]Spring MVC Hello World示例
  • [SpringMVC]Spring MVC表单处理
  • [SpringMVC]Spring MVC静态页面
  • [SpringMVC]Spring MVC页面重定向
  • [SpringMVC]Spring MVC文本框
  • [SpringMVC]Spring MVC密码处理
  • [SpringMVC]Spring MVC文本域
  • [SpringMVC]Spring MVC复选框
  • [SpringMVC]Spring MVC复选框(多项)
  • [SpringMVC]Spring MVC多项单选按钮
  • [SpringMVC]Spring MVC下拉选项(Select)
  • [SpringMVC]Spring MVC列表多选框
  • [SpringMVC]Spring MVC隐藏字段域
  • [SpringMVC]Spring MVC错误处理
  • [SpringMVC]Spring MVC文件上传处理
  • [SpringMVC]Spring MVC控制器类名称处理映射
  • [SpringMVC]Spring MVC简单URL处理程序映射
  • [SpringMVC]Spring MVC多动作控制器
  • [SpringMVC]Spring MVC属性方法名称解析器
  • [SpringMVC]Spring MVC参数方法名称解析器
  • [SpringMVC]Spring MVC可参数化的视图控制器
  • [SpringMVC]Spring MVC内部资源视图解析器
  • [SpringMVC]Spring MVC Xml视图解析器
  • [SpringMVC]Spring MVC资源绑定视图解析器
  • [SpringMVC]Spring MVC多解析器映射
  • [SpringMVC]Spring MVC Hibernate验证器
  • [SpringMVC]Spring MVC生成RSS源
  • [SpringMVC]Spring MVC生成XML
  • [SpringMVC]Spring MVC生成JSON数据
  • [SpringMVC]Spring MVC生成PDF文件
  • [SpringMVC]Spring MVC集成Log4j
  • 直达腾讯云服务器
    腾讯云服务器,数据库,短信等热销产品限量秒杀;新购爆款3折起;
    腾讯云数据库MySQL入门机型仅12元/月
    腾讯云云服务器新购特惠,最低2折起,1核1G3年仅794.73元,即0.73元/日。
    腾讯云国际顶级CA机构SSL证书8.8折,云解析买一年最高送半年!
    腾讯云为数百万企业和开发者提供安全、稳定的云服务器、云数据库、CDN等云服务
    腾讯云服务器安全可靠高性能,多种配置供您选择
    腾讯云数据库性能卓越稳定可靠,为您解决数据库运维难题
    阿里云服务器入口
    180天免费用腾讯云服务器马上领取
    您当前位置:狗鱼MySQL教程 >> 服务端编程 >> SpringMVC >> Spring MVC框架
    Spring MVC框架
    更新日期: 2017年08月06日 来源: 本站原创 作者: 佚名 阅读:
    上一篇Spring MVC教程 下一篇:Spring MVC Hello World示例

    Spring MVC 框架

     

    Spring MVC框架是一个开源的java平台,为开发强大的基于java的Web应用程序提供全面的基础架构支持非常容易和非常快速。

    Spring框架最初由Rod Johnson撰写,并于2003年6月根据Apache 2.0许可证首次发布。

    本教程是基于2015年3月发布的Spring Framework版本4.1.6编写的。

    Spring web MVC框架提供了MVC(模型 - 视图 - 控制器)架构和用于开发灵活和松散耦合的Web应用程序的组件。 MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合。

    • 模型(Model)封装了应用程序数据,通常它们将由POJO类组成。
    • 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释html输出。
    • 控制器(Controller)负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。

    DispatcherServlet组件类

    Spring Web模型 - 视图 - 控制器(MVC)框架是围绕DispatcherServlet设计的,它处理所有的HTTP请求和响应。 Spring Web MVC DispatcherServlet的请求处理工作流如下图所示:

    Spring MVC框架
     

    以下是对应于到DispatcherServlet的传入HTTP请求的事件顺序:

    • 在接收到HTTP请求后,DispatcherServlet会查询HandlerMapping以调用相应的Controller
    • Controller接受请求并根据使用的GETPOST方法调用相应的服务方法。 服务方法将基于定义的业务逻辑设置模型数据,并将视图名称返回给DispatcherServlet
    • DispatcherServlet将从ViewResolver获取请求的定义视图。
    • 当视图完成,DispatcherServlet将模型数据传递到最终的视图,并在浏览器上呈现。

    所有上述组件,即: HandlerMappingControllerViewResolverWebApplicationContext的一部分,它是普通ApplicationContext的扩展,带有Web应用程序所需的一些额外功能。

    必需的配置

    需要通过使用web.xml文件中的URL映射来映射希望DispatcherServlet处理的请求。 下面是一个示例来显示HelloWeb DispatcherServlet示例的声明和映射:

    <web-app id="WebApp_ID" 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 Application</display-name>
    
       <servlet>
          <servlet-name>HelloWeb</servlet-name>
          <servlet-class>
             org.springframework.web.servlet.DispatcherServlet
          </servlet-class>
          <load-on-startup>1</load-on-startup>
       </servlet>
    
       <servlet-mapping>
          <servlet-name>HelloWeb</servlet-name>
          <url-pattern>*.jsp</url-pattern>
       </servlet-mapping>
    
    </web-app>
    
     

    web.xml文件将保存Web应用程序的WebContent/WEB-INF目录。在HelloWeb DispatcherServlet初始化时,框架将尝试从位于应用程序的WebContent/WEB-INF目录中的名为[servlet-name]-servlet.xml的文件加载应用程序上下文。在这个示例中,使用的文件将是HelloWeb-servlet.xml

    接下来,<servlet-mapping>标记指示哪些URL将由DispatcherServlet处理。 这里所有以.jsp结尾的HTTP请求都将由HelloWeb DispatcherServlet处理。

    如果不想使用默认文件名为[servlet-name]-servlet.xml和默认位置为WebContent/WEB-INF,可以通过在web.xml文件中添加servlet侦听器ContextLoaderListener来自定义此文件名和位置 如下:

    <web-app...>
    
    <!-------- DispatcherServlet definition goes here----->
    ....
    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/HelloWeb-servlet.xml</param-value>
    </context-param>
    
    <listener>
       <listener-class>
          org.springframework.web.context.ContextLoaderListener
       </listener-class>
    </listener>
    </web-app>
    
     

    现在来看看HelloWeb-servlet.xml文件的必需配置,放在Web应用程序的WebContent/WEB-INF目录中:

    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       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-3.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
       <context:component-scan base-package="com.yiibai" />
    
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/jsp/" />
          <property name="suffix" value=".jsp" />
       </bean>
    
    </beans>
    
    Java

    以下是有关HelloWeb-servlet.xml文件的重点说明:

    • [servlet-name]-servlet.xml文件将用于创建定义的bean,它会覆盖在全局范围中使用相同名称定义的任何bean的定义。

    • <context:component-scan ...>标签将用于激活Spring MVC注释扫描功能,允许使用@Controller@RequestMapping等注释。

    • InternalResourceViewResolver将定义用于解析视图名称的规则。根据上面定义的规则,hello的逻辑视图将委托给位于/WEB-INF/jsp/hello.jsp这个视图来实现。

    下一节将演示如何创建实际组件。即:控制器,模型和视图。

    定义控制器

    DispatcherServlet将请求委派给控制器以执行特定于其的功能。 @Controller注释指示特定类充当控制器的角色。@RequestMapping注释用于将URL映射到整个类或特定处理程序方法。

    @Controller
    @RequestMapping("/hello")
    public class HelloController{
    
       @RequestMapping(method = RequestMethod.GET)
       public String printHello(ModelMap model) {
          model.addAttribute("message", "Hello Spring MVC Framework!");
          return "hello";
       }
    
    }
    
     

    @Controller注释将类定义为Spring MVC控制器。这里@RequestMapping的第一个用法表示此控制器上的所有处理方法都与/hello路径相关。 下一个注释@RequestMapping(method = RequestMethod.GET)用于声明printHello()方法作为控制器的默认服务方法来处理HTTP GET请求。可以定义另一个方法来处理同一URL的任何POST请求。

    可以以另一种形式在上面的控制器中编写,在@RequestMapping中添加其他属性,如下所示:

    @Controller
    public class HelloController{
    
       @RequestMapping(value = "/hello", method = RequestMethod.GET)
       public String printHello(ModelMap model) {
          model.addAttribute("message", "Hello Spring MVC Framework!");
          return "hello";
       }
    
    }
    
     

    value属性指示处理程序方法映射到的URL,method属性定义处理HTTP GET请求的服务方法。关于以上定义的控制器,需要注意以下几点:

    • 在服务方法中定义所需的业务逻辑。可以根据需要在此方法内调用其他方法。
    • 基于定义的业务逻辑,将在此方法中创建一个模型。可以设置不同的模型属性,这些属性将被视图访问以呈现最终结果。此示例创建且有属性“message”的模型。
    • 定义的服务方法可以返回一个String,它包含要用于渲染模型的视图的名称。此示例将“hello”返回为逻辑视图名称。

    创建JSP视图

    Spring MVC支持许多类型的视图用于不同的表示技术。包括 - JSP,HTML,PDF,Excel工作表,XML,Velocity模板,XSLT,json,Atom 和 RSS 源,JasperReports等。但最常见的是使用JSPL编写的JSP模板,这里使用的是JSP模板,并在/WEB-INF/hello/hello.jsp中写一个简单的hello视图:

    <html>
       <head>
       <title>Hello Spring MVC</title>
       </head>
       <body>
       <h2>${message}</h2>
       </body>
    </html>
    
     

    这里${message}是在Controller中设置的属性。可以在视图中显示多个属性。

     

    感觉本站内容不错,读后有收获?

    我要小额赞助,鼓励提供更好的内容教程

    上一篇Spring MVC教程 下一篇:Spring MVC Hello World示例
    Copyright 2013-2017 Powered by 狗鱼MySQL教程,All Rights Reserved.
    广州相如计算机科技有限有限公司 版权所有 粤ICP备08130661号-4
    售前咨询:020-38667011 手机:13711588918