zoukankan      html  css  js  c++  java
  • SpringMVC

    Spring Web MVC需要使用SpringIOC功能

    用于开发MVC结构的web程序。

    1.MVC思想

    将程序组件分为模型,视图,控制器三部分

     

    SpringMVC工作流程:

    1. 浏览器发出一个Http请求
    2. 请求首先进入DispatcherServlet主控制器
    3. 主控制器调用HandlerMapping组件根据请求找映射的Controller处理
    4. 执行Controller处理方法,将返回结果给ViewResolver组件
    5. ViewResolver组件根据Controller返回结果定位视图JSP,将模型数据传递给JSP
    6. 由JSP生成响应结果,给浏览器输出

    注意:

        dispatcherServlet:接受指定的请求,类似一个大的主控制器(大boss)

        HanlerMapping:根据不同请求类型找寻Controller

        ViewResolver:寻找视图,生成详细信息

    2.SpringMVC编写程序的具体流程

    /hello.do
    --->DispatcherServlet(配置)
    --->HandlerMapping(配置)
    --->HelloController(编写+配置)
    --->ViewResolver(配置)
    --->/WEB-INF/hello.jsp(编写)

    3.Spring Web MVC简单程序实现

    实例:一个SpringMVC的helloword案例

    (1)搭建Spring Web MVC开发环境,引入IOC,webmvc开发包,在src下添加applicationContext.xml

    (2)编写HelloController实现

    package com.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    public class HelloController implements Controller{
    
        public ModelAndView handleRequest(HttpServletRequest request, 
                                          HttpServletResponse response) throws Exception {
                ModelAndView mav=new ModelAndView();
                mav.setViewName("hello");//设置视图名字
                mav.getModel().put("msg", "模型数据");//等价于request.setAttribute("msg","模型数据");
                
            return mav;
        }
        
    
    }

    (3)在web.xml配置DispatcherServlet(配置)

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    <web-app>
      <servlet>
              <servlet-name>exam</servlet-name>
              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <init-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath:applicationContext.xml</param-value>
              </init-param>
              <!-- 启动服务器的时候,优先级是1 -->
              <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>exam</servlet-name>
          <url-pattern>*.do</url-pattern>
      </servlet-mapping>
    </web-app>

    (4)在applicationContext.xml中配置相关组件

    A.定义Handlermapping(配置)

    <!-- 配置handlermapping --> 
       <bean id="handlermapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
               <!-- 指定请求和controller对应关系 -->
               <property name="mappings">
                   <props>
                       <prop key="/hello.do">helloController</prop>
                       <prop key="/login.do">loginController</prop>
                   </props>
               </property>
       </bean>
       

    B.Controller配置、

    <!-- 配置Controller -->
       <bean id="helloController" class="com.controller.HelloController">
       </bean>
       <bean id="loginController" class="com.controller.LoginController"></bean>

    C.配置ViewResolver

    <!-- 配置ViewResolver -->
       <bean id="viewresolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
               <property name="prefix" value="/WEB-INF/"></property>
               <property name="suffix" value=".jsp"></property>
       </bean>
  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/peachwang/p/7286985.html
Copyright © 2011-2022 走看看