zoukankan      html  css  js  c++  java
  • springMVC

    1.springMVC原理和servlet是一样的,都是在web.xml里面配置servlet,不同的是springMVC会把请求映射成对应的Controller,通过RequestMapping来映射。原理图如下:

    2.创建一个springMVC例子

    (1)需要的jar包

      spring-aop.jar

      spring-beans.jar

      spring-context.jar

      spring-core.jar

      spring-expression.jar

      spring-web.jar

      spring-webmvc.jar

    2)

      在web.xml里面配置DispatcherServlet,用于映射前端发送的请求。

    DispatcherServlet是前端控制器,配置在web.xml中,拦截匹配的请求,匹配规则自己定义。把拦截到的请求

    根据相应的规则分发到目标Controller里对应的RequestMapping来处理,是配置SpringMVC的第一步。

    <servlet>
                    <servlet-name>dispatcherServlet</servlet-name>
                    
                    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                    <!--配置DispatcherServlet初始化参数,配置springMVC配置文件的位置和名称-->
                    <init-param>
                    <param-name>contextConfigLocation</param-name>
                        <!-- <param-value>classpath:springmvc.xml</param-value> -->
                    <param-value>/WEB-INF/springmvc.xml</param-value>
                    </init-param>
                    <!--servlet在web容器加载时创建,而非在第一次访问时才创建,servelt默认不加载,只有在第一次访问时才加载-->
                    <load-on-startup>1</load-on-startup>
                </servlet>
                
                
                <servlet-mapping>
                    <servlet-name>dispatcherServlet</servlet-name>
                    <!--对所有后缀是.json的请求进行拦截,匹配-->
                    <url-pattern>*.json</url-pattern>
                    </servlet-mapping>

    (2)创建第一步中的springmvc.xml配置文件

    <!--配置自动扫描的包-->
            <context:component-scan base-package="com.springmvc"/>
            
            <!--配置视图解析器,把handler的返回值,转换为实际的物理视图,
            即RequestMapping对应的方法,有一个返回值,要根据对应的返回值,跳转到不同的页面
            -->
            <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <!-- 要跳转页面的前缀,即页面所在的路径 -->
                <property name="prefix" value="/view/" />
                <!-- 要跳转页面的后缀名-->
                <property name="suffix" value=".html" />
            </bean>

    (3)创建handler类TestHandler

        @Controller
        public class TestHandler {
        
        /**
         * 0、前端控制器DispatcherServlet收到请求,发给和url相匹配的RequestMapping
         * 
         * 1、使用@RequestMapping映射前端请求的url
         * 
         * 2、返回时会通过视图解析器,解析为实际的物理视图
         * 对于视图解析器InternalResourceViewResolver会做如下解析
         * 通过 prefix + returnVal + suffix 得到实际的物理视图,然后做请求转发
         * 
         */
        @RequestMapping(value={"/helloworld.json"},method={RequestMethod.GET})
        public String sayHello(){
            return "success";
        }
    }

    (4)页面访问index.html

    <a href="helloworld.json">helloworld</a>

    仔细看一下TestHandler类,里面有许多springMVC控制器使用的细节。包括参数的传递。

    (5)其他:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <a href="testCookie.json">testCookie</a>
        <a href="/test/helloworld.json">helloworld</a>
        <form action="testRequestHeader.json" method="post">
            <input type="submit" value="SUBMIT" />
        </form>
        
        <br>
        <form action="test/testPojo.json" method="post">
        name:<input type="text" name="username" />
        <br>
        password:<input type="password" name="passwd" />
        <br>
        age:<input type="text" name="age" />
        <br>
        province:<input type="text" name="address.province" />
        <br>
        city:<input type="text" name="address.city" />
        <br>
        <input type="submit" value="提交" />
        </form>
        
        <a href="test/testServletApi.json">testServletApijson</a>
        
    </body>
    </html>
  • 相关阅读:
    Shell变量之自定义变量、环境变量
    Shell变量命名规则
    获取文件编码格式
    基于Lucene的文件检索Demo
    数据库压力测试工具
    插入ts以及判断列是否存在(支持多数据库)
    (摘)Chart属性设置
    (摘)C#comboBox绑定数据
    (摘)ORACLE DBA的职责
    (摘)DataGuard物理standby管理
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/5083745.html
Copyright © 2011-2022 走看看