zoukankan      html  css  js  c++  java
  • SpringMVC简介01

        SpringMVC也叫Spring Web mvc,属于表现层的框架。SpringMVC是Spring框架的一部分,是在Spring3.0后发布的。

    Spring结构图:

    SpringMVC架构:

    Spring MVC请求流程:

     Spring MVC请求流程

    SpringMVC请求流程:

     SpringMVC请求流程:

        request——>DispatcherServlet(中央调度器/前端控制器)——>HandlerMapping(处理器映射器)——>返回一个执行链——>将执行链转交给HandlerAdaptor(处理器适配器)——>调度Handler(处理器)——>ModelAndView——>先将结果交给HandlerAdaptor,然后再由HandlerAdaptor转交给DispatcherServlet——>DispatcherServlet调度ViewResolver(视图解析器)——>交给DispatcherServlet——>寻找View——>View做出响应(response).

    SpringMVC的第一个入门案例

      用户提交一个请求,服务器端处理器在接受到这个请求后,给出一个欢迎信息,在页面中显示。

      1.导入jar包

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.2.1.RELEASE</version>
    
    </dependency>
      2.中央调度器
    <!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 xmlns:mvc="http://java.sun.com/dtd/web-app_2_3.dtd">
        <display-name>Archetype Created Web Application</display-name>
    
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

      第一种:拦截静态文件(用其他的方式要删除) <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> </web-app>
    关于urlpattern说法
    最好配成*.do
    不能配成/*  无法访问*.jsp等动态资源
      DispatcherServlet会将向动态页面请求,即向jsp页面的跳转请求也当做是一个普通的Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的。JSP页面会报404错误。
      结论:/*会拦截动态资源。

    最好也不要配成/  无法访问静态资源
    不得不配成/
      解决的方案由上图中央调度器的红色字体
      

    一切源于Restful编程  rest
      3.定义处理器
    public class FirstController implements Controller {
        @Override
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            return new ModelAndView("index");
        }
    }

      4.jsp页面搭建
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <body>
    <h2>Spring第一个Spring MVC程序</h2>
    <img src="images/1504837384314376.png">/
    </body>
    </html>
    
    
      5.spring-mvc.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:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        <bean id="/hello.do" class="cn.happy.controller.FirstController"></bean>
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
      第二种:拦截静态文件(用其他的方式要删除)推荐使用 <mvc:default-servlet-handler/>
      第三种:拦截静态文件  Location:静态资源所在目录  mapping:对资源的请求(用其他的方式要删除) <mvc:resources mapping="/images/" location="/images/**"/>

      <!--处理器映射器,不用配置也行,不影响-->
      <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
    </beans>
    
    
    方式二:使用MVC的default-servlet-handler
      使用MVC的default-servlet-handler
      会将对静态资源的访问请求通过HandlerMapping映射到默认Servlet请求处理器DefaultServletRequesthandler对象。而该处理器调用了Tomcat的DefaultServlet来处理静态资源的访问请求。
      当然需要引入mvc约束
    方式三:使用MVC的resource解决
    在Spring3.0.4之后,Spring定义了专门用于处理静态资源请求的处理器ResourceHttpRequestHandler.并且添加了<mvc:resource/>标签,专门用于解决静态资源无法访问问题。

      5.spring-mvc.xml配置(SimpleUrlHandlerMapping——mappings)
    <?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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/mvc
          http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--处理器映射器--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello.do">firstController</prop> </props> </property> </bean> <!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--配置一个到用户的路径 --> <bean id="firstController" class="cn.happy.controller.FirstController"></bean>

      <!--拦截静态文件-->
      <mvc:default-servlet-handler/>
    </beans>
      5.spring-mvc.xml配置(SimpleUrlHandlerMapping——urlMap)
    <?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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/mvc
                    http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--处理器映射器--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/hello.do" value="firstController"></entry> </map> </property> </bean> <!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--配置一个到用户的路径 --> <bean id="firstController" class="cn.happy.controller.FirstController"></bean> <!--拦截静态文件--> <mvc:default-servlet-handler/> </beans>
    
    

     测试结果:

  • 相关阅读:
    02-NLP-04基于统计的翻译系统-01预处理
    02-NLP-03-LDA主题模型应用
    02-NLP-03-主题模型
    02-NLP-02-从朴素贝叶斯(NB)到语言模型
    02-NLP-02-用朴素贝叶斯完成语种检测
    02-NLP-02-朴素贝叶斯与应用
    linux中安装jdk以及eclipse的安装
    python中matplotlib总结
    请求重定向和请求转发
    javaEE中错误提示 Exception starting filter BackServletFilter java.lang.ClassNotFoundException: tmall.filter.BackServletFilter提示这个错误啊
  • 原文地址:https://www.cnblogs.com/Chenghao-He/p/7738393.html
Copyright © 2011-2022 走看看