zoukankan      html  css  js  c++  java
  • springMVC学习二 原始springMVC环境搭建

    第一步:导入jar包

    第二步:配置DispatcherServlet

      DispatcherServlet本质是一个Servlet,在spring-webmvc包中,在servlet2.5之前  springMVC配置文件的默认命名规则为xxx-serlvet.xml,xxx是为DispatcherServlet起的servlet的名称,也就是<servlet-name>标签中的值,并且默认情况下,xxx-servlet.xml文件的位置是WEB-INF目录下,不过从servlet2.5之后可以通过servlet的初始化参数进行配置,也就是通过<init-param>标签来配置,

    【注意:在spring与dynamic web project工程进行整合事,有一个spring的配置文件加载位置的配置,是通过web应用工程的配置信息,也就是<context-param>标签来配置】

    org.springframework.web.servlet.DispatcherServlet的继承关系图

    配置文件信息

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      
      <servlet>
          <!-- 
          DispatcherServlet本质是一个Servlet,在spring-webmvc包下,在servlet2.5之前
          springMVC配置文件的默认命名规则为xxx-serlvet.xml,xxx是为DispatcherServlet起的servlet的名称,
          也就是<servlet-name>标签中的值,并且默认情况下,xxx-servlet.xml文件的位置是WEB-INF目录下
          
          不过从servlet2.5之后可以通过servlet的初始化参数进行配置,也就是通过<init-param>标签来配置,
          【注意:在spring与dynamic web project工程进行整合事,有一个spring的配置文件加载位置的配置,
          
          是通过web应用工程的配置信息,也就是<context-param>标签来配置】
              org.springframework.web.servlet.DispatcherServlet
           -->
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <!-- 修改springMVC配置文件的路径和名称 -->
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:springmvc.xml</param-value>
          </init-param>
          <!-- 自启动配置,表示在tomcat一启动,就加载该Servlet -->
          <load-on-startup>1</load-on-startup>
          
      </servlet>
      <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>

    第三步;配置SpringMVC配置文件

    springMVC配置文件中要配置,

    (1)处理器handler,也就是controller,处理器部门是需要程序员自己编写代码,继承一个Controller接口,或者采用Controller与RequestMapping注解,处理器是处理器适配器(HandlerAdapter)调用的,

    (2)处理器映射器HanderMapping,本质是一个对一个Map容器进行封装,把key是请求路径,value是处理器,就是把请求路径和处理器做了一个对应,处理器映射器是DispatcherServlet调用的,调用完之后会返回一个HanderExecutionChain,另外一种说法是HandlerMapping 将会把请求映射为HandlerExecutionChain 对象,HanderExecutionChain会封装一个Handler 处理器(页面控制器)对象、多个HandlerInterceptor 拦截器

    (3)处理器适配器HanderAdapter,也是由DispaterServlet进行调用,HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器; 【如果不配置处理器映射器,会采用默认的,可以不用配置】

    (4)视图解析器:也是又DsipatcherServlet进行调用,把ModelAndView进行解析,返回Veiw给DispaterServlet。【如果不配置,采用默认的】

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"> 
        
        <!-- 注册  处理器,也就是controller -->
        <bean id="handler" class="com.xxxx.controller.DemoController"></bean>
        
        
        <!-- 注册HandlerMapping  处理器映射器
            会根据url请求解析出应该调用哪一个 处理器,但是调用并不是处理器映射器调用
         -->
        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="urlMap">
                <map>
                    <!-- key解析出来的请求的逻辑名
                        value-ref代表要调用的控制器
                     -->
                    <entry key="demo" value-ref="handler" ></entry>
                </map>
            </property>
        </bean>
        <!-- 注册  处理器适配器,处理器适配器会调用  处理器 
            处理器适配器可以不用配置,会走默认值
        -->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
    
        <!-- 在spring容器中 ,注册视图解析器
            同样视图解析器也可以不用配置,也会走默认值
            InternalResourceViewResolver的父类中有两个属性:prefix,suffix  代表前缀和后缀
            ModelAndView modelAndView =new ModelAndView("main");
            前缀和后缀会对ModelAndView中的参数进行拼接,拼接成"/main.jsp",
            一般请情况下,我们会使用默认的视图解析器,但是有时候我们会在WebContent下建立一个page目录用来存放
            jsp文件,此时在写ModelAndView modelAndView =new ModelAndView("main.jsp");是,需要前面加上
            page/main.jsp,为了省略page/一般会把prefix配置成page/
            
            在返回ModelAndView时,默认会走请求转发,在InternalResourceViewResolver父类UrlBasedViewResolver
            中有
            public static final String REDIRECT_URL_PREFIX = "redirect:";
            public static final String FORWARD_URL_PREFIX = "forward:";
            可以通过配置让其走重定向
            
         -->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    </beans>

    第四步:编写处理器,也就是controller

    public class DemoController implements Controller{
    
        @Override
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            System.out.println("执行了springmvc的控制器");
            //具备视图和传值的功能
            ModelAndView modelAndView =new ModelAndView("main");
            
            return modelAndView;
        }
    
    }

    第五步:运行

    让项目跑在tomcat中,然后通过:http://localhost:8080/springmvc01/demo进行访问,会执行DemoController中的handleRequest()这个方法。

    注意访问路径中的demo,这个值就是在springmvc配置文件中,处理器映射器的中urlMap中的一个key

     
  • 相关阅读:
    bzoj3427:[POI2013]BAJ-Bytecomputer
    bzoj3417:[POI2013]MOR-Tales of seafaring
    bzoj1100:[POI2007]对称轴osi
    bzoj3295:[CQOI2011]动态逆序对
    bzoj2286:[SDOI2011]消耗战
    CF1110F Nearest Leaf
    CF1110E Magic Stones
    CF1110D Jongmah
    matlab基础向9:动画
    CF1102D-Balanced Ternary String-(贪心)
  • 原文地址:https://www.cnblogs.com/cplinux/p/9783433.html
Copyright © 2011-2022 走看看