SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)

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

Spring结构图

SpringMVC请求流程图

SpringMVC请求流程图语述:

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

SpringMVC的第一个入门案例

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

第一步:导入jar包

在原有Springjar包基础上添加2个jar包

spring-webmvc-4.2.0.RELEASE.jar  作用:对Spring mvc的实现

spring-context-support-4.2.0.RELEASE.jar  作用:包含支持UI模板,邮件服务,缓存Cache等方面的类

分析配置步骤:

1.在web.xml中配置前端控制器

2.处理器映射器(HandlerMapping)

3.处理器适配器 (HandlerAdaptor)

4.处理器

5.视图解析器(ViewResolver)

注册中央调度器

关于urlpattern的说法:

最好配成*.do

不能配成/*             无法访问*.jsp等动态资源

最好也不要配成/      无法访问静态资源

不得不配成/           Restful编程 rest

问题:/*配法出现404问题

解释:Ⅰ:不能配置为/*

DispatcherServlet会将向动态页面请求,即向jsp页面的跳转请求也当做是一个普通的Controller请求。

中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的。jsp页面会报404错误 结论:/*会拦截动态资源

Ⅱ:方案一:使用Tomcat默认的Servlet解决

不得不配成/  解释:上图中:红色标注第三中配置

方案二:使用MVC的default-servlet-handler

会将对静态资源的访问请求通过HandlerMapping映射到默认Servlet请求处理器DefaultServletRequestHandler对象。而该处理器调用了Tomcat的DefaultServlet来处理静态资源的访问请求。当然需要引入mvc约束

方式三:使用MVC的resource解决

在Spring3.0.4之后,Spring定义了专门用于处理静态资源请求的处理器ResourceHttpRequestHandler。并且添加了<mvc:resources/>标签,专门用于解决静态资源无法访问问题。

Location:静态资源所在目录 mapping: 对资源的请求 注意:需要Tomcat7支持

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name></display-name>

    <!-- 1. 配置中央调度器(前端控制器) -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 3.1指定配置文件applicationContext.xml -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <!-- 3.2Tomcat启动的时候,Service对象已经到内存 下面该数字要大于等于1,0或者是负数,跟没设置是一样的 -->
        <load-on-startup>1</load-on-startup>

    </servlet>
    <!-- 第一种,可以查看图片 -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <!--第二种配置  和applicationContext.xml中的<mvc:default-servlet-handler/> 结合使用-->
    <!--<servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping> -->

    <!--
    第三种配置
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</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>*.jpg</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
  </servlet-mapping> -->

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

配置中央调度器代码

定制处理器:

package cn.happy.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
//一个类怎么就能成为一个Controller
public class YController implements Controller{//处理器
    //handleRequest 处理请求
    //ModelAndView  返回值类型
    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        ModelAndView mv=new ModelAndView();
        mv.addObject("msg", "明天放假一天");
        //处理一道
        //mv.setViewName("WEB-INF/jsp/index.jsp");
        mv.setViewName("index");

        return mv;
    }
}

定制处理器

jsp页面搭建:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘index.jsp‘ starting page</title>

  </head>

  <body>
       第一个Springmvc程序
    <!-- 页面上如何获取 -->
    <img alt="girl" src="images/18.jpg" width="300px" height="300px">
      ${msg }
  </body>
</html>

index.jsp页面

大配置中:注册处理器和视图解析器

访问页面:

配置式开发--BeanNameUrlHandlerMapping

配置式开发--SimpleUrlHandlerMapping

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    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/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        ">
        <!-- 配置处理器映射器 -->
        <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
        </bean> -->
        <!-- 注册处理器映射器 -->
        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
           <property name="mappings">
               <props>
                  <prop key="/hello.do">firstController</prop>
                  <prop key="/say.do">firstController</prop>
               </props>
           </property>
        </bean>

        <!-- 注册处理映射器 -->
       <!--  <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="urlMap">
               <map>
                 <entry key="/hello.do">
                   <value>firstController</value>
                 </entry>
                 <entry key="/say.do">
                   <value>firstController</value>
                 </entry>
               </map>
            </property>
        </bean>  -->

        <bean id="firstController" class="cn.happy.controller.YController"></bean>

       <!-- 处理/请求路径下静态资源无法访问的问题 -->
       <!-- <mvc:default-servlet-handler/> -->

      <!-- 方案四:TOmcat7的支持 -->
     <!--  <mvc:resources location="/images/" mapping="/images/**"></mvc:resources> -->

     <!-- 注册处理器   请求地址-->
     <!-- 该配置需要和 Controller中的mv.setViewName全路径-->
     <bean id="/hello.do" class="cn.happy.controller.YController"></bean> 

      <!-- 视图解析器 ViewResolver -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <!-- 前缀 jstl  struts2 -->
     <property name="prefix" value="/WEB-INF/jsp/"></property>
     <!--后缀  -->
     <property name="suffix" value=".jsp"></property>
     </bean>
</beans>  

applicationContext.xml大配置文件

时间: 2024-10-26 17:57:08

SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)的相关文章

springMVC入门案例

1.配置文件的web.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.co

【SpringMVC笔记】第五课 改进Handler处理器和视图解析器

第四课 已经对注解的映射器和适配器进行了改进. 接下来需要对Handler处理器和视图解析器进行改进. <!-- 配置handler处理器 --> <bean class="com.king.controller.UserController"></bean> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourc

SpringMVC入门案例:HelloWorld

本文摘自:http://www.cnblogs.com/bigdataZJ/p/springmvc1.html 软件参数 Eclipse:Mars.1 Release (4.5.1) Tomcat: 8.0.36 JDK:1.8.0_60 Spring-framework: 4.0.4.RELEASE 新建项目 File-New-Other,选择Dynamic web project 项目建好之后,目录结构如下: 导入jar包 我们基于Spring mvc框架进行开发,需要依赖一下的spring

首个springmvc入门案例报错

HTTP Status 500 – Internal Server Error Type 异常报告 消息 Servlet.init() for servlet [dispatcherServlet] threw exception 描述 服务器遇到一个意外的情况,阻止它完成请求. Exception javax.servlet.ServletException: Servlet.init() for servlet [dispatcherServlet] threw exception org.

SpringMVC的第一个入门案例

用户提交一个请求,服务器端处理器在接收到这个请求后,给出一条欢迎信息,在页面中显示. 第一步:导入jar包 在原有Springjar包基础上添加2个jar包 spring-webmvc-4.2.0.RELEASE.jar  作用:对Spring mvc的实现 spring-context-support-4.2.0.RELEASE.jar  作用:包含支持UI模板,邮件服务,缓存Cache等方面的类 分析配置步骤: 1.在web.xml中配置前端控制器 2.处理器映射器(HandlerMappi

Spring-MVC入门实例 (一)

Spring MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了.Spring MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀. Struts2 VS  Spring MVC Struts2  特点 也是比较优秀的MVC构架,优点非常多比如良好的结构.但这里想说的是缺点,Struts2由于采用了值栈.OGNL表达式.struts2标签库等,会导致应用的性能下降.Struts2的多层拦截器.多实例action性能都很好

SpringMVC入门demo

为什么要学习SpringMVC呢? Spring框架号称是JavaEE应用的一站式解决方案,Spring本身有提供了一个设计优良的MVC框架,SpringMVC.由于Spring框架拥有极高的市场占有率,因此越来越多的Spring框架使用者使用SpringMVC代替曾经的MVC框架的王者Struts2.当然Spring也可以无缝地整合Struts.JSF等优秀的MVC框架. 越来越多的企业开始选择则SpringMVC+Mybatis来构建系统架构,而在电商热门的今天,SpringMVC+Myba

【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)

上篇博文,我们简单的介绍了什么是SpringMVC,这篇博文,我们搭建一个简单SpringMVC的环境,使用非注解形式实现一个HelloWorld实例,从简单入手,逐步深入. 环境准备 我们需要有基本的java环境,下面只是简单的罗列,不再详细的介绍. jdk1.6以上 eclipse或者myEclipse tomcat6以上 我们使用SpringMVC的版本是Spring3.2.0,下图是最基本的jar包: 在Spring的官方API文档中,给出了所有jar包作用的概述,现列举常用的包以及相关

Spring-MVC入门(一):入门实例 (重点学习)

1.MVC :Model-View-Control 框架性质的C 层要完成的主要工作:封装web 请求为一个数据对象.调用业务逻辑层来处理数据对象.返回处理数据结果及相应的视图给用户. 2. 简要概述springmvc Spring C 层框架的核心是 DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即 使用了一种被称为Front Controller 的模式(后面对此模式有简要说明). Spring 的C 层框架使用了后端控制器来.映射处理器和视图解析器来共同完成