springmvc基础---笔记

 

【springmvc其实就是一个mvc框架,但是感觉他比Struts2做的要好一点。而且他对现在的异种风格rest的风格提供了比较好的支持。】


1、  首先我们的请求到了dispatcher(控制器),

【如在web.xml中的<servlet-name>hello</servlet-name>//由于这个名称为hello,所以就需要在web-inf中创建一个xml文件来专门写springmvc的配置,这里的名字必须为servlet的这里的名称。<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <servlet-mapping>

        <servlet-name>hello</servlet-name>

        <url-pattern>/</url-pattern>

    </servlet-mapping>//只要我一访问页面都会被servlet给捕获掉。捕获之后进入springmvc的处理,这是第一步。】,

2、  然后这个控制器会去找一个handlermapping

这个是在配置文件中配的,它可以通过handler mapping来找到我们当前的URL的请求该交给哪一个具体的controller来处理。

    <bean name="/welcome.html" class="zttc.itat.controller.WelcomeController"></bean>

【创建WelcomeController类】

public classWelcomeController extends AbstractController {

 

    @Override

    protected ModelAndView handleRequestInternal(HttpServletRequestrequest,

            HttpServletResponseresponse) throwsException {

        System.out.println("welcome");

        return new ModelAndView("welcome");//给它一个视图进行对应

    }

}

【这个就相当于在Struts中创建了一个action。而handleRequestInternal方法就相当于是execute方法。这里就等译创建了一个控制器。它里面有个执行方法。那怎么能够对应到这个控制器呢?是通过BeanNameUrlHandlerMapping,这里写的是<bean name="/welcome.html"class="zttc.itat.controller.WelcomeController"></bean>他就会自动找到上面那个WelcomeController类】

3、找到之后就交给相应的controller,

4、然后controller就跟我们的service完成交互,跟我们的javabean完成交互,处理得到某一个值,

5、得到这个值之后就返回一个视图,返回的视图他通过viewresolver这个东西来找到他究竟对应

6、哪一个返回的视图,是用哪种形式返回的。然后再找一个视图返回给它。】

 

 

再补充:

先简单的说下这个工程的流程,访问http://localhost:8080/index首先由DispatcherServletweb.mxl-- org.springframework.web.servlet.DispatcherServlet】进行转发,通过BeanNameUrlHandlerMapping(含有 /index->HomeAction的配置),找到了HomeActionhello-servlet.xml----<bean name="/welcome.html" class="zttc.itat.controller.WelcomeController"></bean>,然后再拿HomeAction和每个adapter进行适配,由于HomeAction实现了Controller接口【WelcomeController】,所以最终会有SimpleControllerHandlerAdapter来完成对HomeActionhandleRequest方法的调度【protected ModelAndView handleRequestInternal(HttpServletRequestrequest,HttpServletResponse response) throws Exception {}】。然后就顺利的执行了我们想要的方法,后面的内容不在本节中说明。 

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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

    <servlet>

【1】       <servlet-name>hello</servlet-name>//由于这个名称为hello,所以就需要在web-inf中创建一个xml文件来专门写springmvc的配置,这里的名字必须为servlet的这里的名称。

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <load-on-startup>1</load-on-startup>//让它启动的是就让DispatcherServlet启动

    </servlet>

    <servlet-mapping>

        <servlet-name>hello</servlet-name>

        <url-pattern>/</url-pattern>

    </servlet-mapping>//只要我一访问页面都会被servlet给捕获掉。捕获之后进入springmvc的处理,这是第一步。

   

    <filter>

        <filter-name>CharacterFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>CharacterFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

</web-app>

 

Hello-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:context="http://www.springframework.org/schema/context"

    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd

        http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsd">

   

    <context:component-scan base-package="zttc.itat.controller"/>

    <mvc:annotation-driven/>

    <!-- 将静态文件指定到某个特殊的文件夹中统一处理 -->

    <mvc:resources location="/resources/" mapping="/resources/**"/>

    <bean name="/welcome.html" class="zttc.itat.controller.WelcomeController"></bean>

   

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <propertyname="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

        <property name="prefix" value="/WEB-INF/jsp/"/>

        <property name="suffix" value=".jsp"/>

    </bean>

【创建WelcomeController类】

public classWelcomeControllerextendsAbstractController {

 

    @Override

    protected ModelAndViewhandleRequestInternal(HttpServletRequest request,

            HttpServletResponseresponse) throwsException {

        System.out.println("welcome");

        return new ModelAndView("welcome");//给它一个视图进行对应

    }

}

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页