• spring mvc HelloWorld


    spring mvc前端控制器是DispatcherServlet, 应用控制器分为处理器映射器(Handler Mapping)和视图解析器(View Resolver),页面控制器为Controller接口的实现。

    1. 用户发送请求,到达前端控制器,前端控制器根据请求信息决定选择哪一个页面控制器进行处理,并把请求委托给它
    2. 页面控制器接收到请求后,首先收集和绑定请求参数到一个对象,并进行验证,然后将对象委托给业务对象进行处理,处理完毕后返回ModelAndView
    3. 前端控制器收回控制权,根据返回的视图名,选择相应的视图进行渲染,并把模型数据传入
    4. 前端控制器再次收回控制权,将相应返回给用户

    前置控制器

    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" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    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">
    
    <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
    <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/forms/*</url-pattern>
    </servlet-mapping>
    
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    
    </web-app>

    web.xml定义了一个前端控制器,起名叫mvc-dispatcher,load-on-startup表示启动容器时初始化该Servlet,url-pattern表示有哪些请求要交给spring web mvc处理。在这里就是所有以/form/开头的请求会被mvc-dispatcher这个前端控制器处理。

    mvc默认前端控制器加载WEB-INF/[dispatcherServletName]-servlet.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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    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.libin.controller"/>
    
    <bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    
    <property name="prefix">
    <value>/WEB-INF/views/</value>
    </property>
    <property name="suffix">
    <value>.jsp</value>
    </property>
    </bean>
    
    </beans>

    component-scan 对类包进行扫描以实施注释驱动bean定义的功能。

    ViewResolver是进行视图解析的,prefix是视图页面的前缀,suffix是视图页面的后缀,在这里也就是说,任何请求x的视图页面放在/WEB-INF/views/x.jsp。

    页面控制器

    package com.libin.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class HelloWorldController {
    @RequestMapping("/helloworld")
    public ModelAndView helloWorld(){
    String message="Hello world,Spring MVC 3!";
    return new ModelAndView("helloworld","message",message);
    }
    }

    @Controller注释是说这个类的角色是一个控制器,@RequestMapping注释是说将请求/helloworld映射到下面这个方法。它也可以指明采用的HTTP的方法还有参数,比如 @RequestMapping(value="/new", method = RequestMethod.GET)

    接下来是页面部分

    首先是最开始的页面index.jsp:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!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=ISO-8859-1">
    <title>Spring MVC Example</title>
    </head>
    <body>
    <h1>Spring MVC</h1>
    <ul>
    <li><a href="forms/helloworld.html">Hello World</a></li>
    </ul>
    </body>
    </html>

    很简单,在开始页面里,点击Hello World链接到了forms/helloworld.html,因此向浏览器请求forms/helloworld.html。

    首先经过前置控制器DispatcherController的过滤,发现正好符合mvc-dispatcher的要求,因此交给mvc-dispatcher处理。

    它加载自己对应的配置文件,也就是mvc-dispatcher-serlvet.xml,得到两点,一是页面控制器在base-package下面,另一点是真正的页面文件的路径是/WEB-INF/views/helloworld.jsp。

    经过页面控制器helloWorldController,将一个字符串message传递给页面。整个过程就是这样。

    最后是helloworld.jsp,把参数message打出来:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!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=ISO-8859-1">
    <title>Spring MVC HelloWorld</title>
    </head>
    <body>
    ${message}
    </body>
    </html>

    参考资料: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html

    附件下载:HelloWorldSpringMVC

  • 相关阅读:
    XML和JSON优缺点
    JSON与XML优缺点对比分析
    json数据格式
    ajax 请求二进制流 图片
    常用网站
    Js setTimeout 用法
    js Indexof的用法
    02_虚拟机的安装和SecureCRT、FileZilla、Xmanage、UltraEdit工具的介绍
    01_Hadoop学习笔记内容说明
    sudoers文件设置sudo命令无密码(root密码)登录
  • 原文地址:https://www.cnblogs.com/cubika/p/2825118.html
Copyright © 2020-2023  润新知