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>
原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/5083745.html