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

第一步:导入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="data:images/18.jpg" width="300px" height="300px">
${msg }
</body>
</html>

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

访问页面:

配置式开发--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>

SpringMVC的第一个入门案例的更多相关文章

  1. SpringMvc核心流程以及入门案例的搭建

    1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...

  2. Struts2第一个入门案例

      一.如何获取Struts2,以及Struts2资源包的目录结构的了解    Struts的官方地址为http://struts.apache.org 在他的主页当中,我们可以通过左侧的Apache ...

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

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

  4. 一、mybatis入门案例

    今天学习了mybatis框架,简单记录一下mybatis第一个入门案例,目标是使用Mybatis作为持久层框架,执行查询数据的SQL语句并且获取结果集 基本步骤: 物理建模 逻辑建模 引入依赖 创建持 ...

  5. SpringMVC(一) 基础知识+入门案例

    SpringMVC基础知识 1.什么是Springmvc 2.springmvc 框架的原理(必须掌握) 前端控制器.处理器映射器.处理器适配器.视图解析器 3.SpringMVC 入门程序 目的:对 ...

  6. Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制

    一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...

  7. springMVC框架入门案例

    控制器: package cn.mepu.controller; import org.springframework.stereotype.Controller; import org.spring ...

  8. Spring第一天——入门与IOC

    大致内容 spring基本概念 IOC入门 [17.6.9更新],如何学习spring? 掌握用法 深入理解 不断实践 反复总结 再次深入理解与实践 一.Spring相关概念  1.概述: Sprin ...

  9. Spring_day01--课程安排_Spring概念_IOC操作&IOC底层原理&入门案例_配置文件没有提示问题

    Spring_day01 Spring课程安排 今天内容介绍 Spring概念 Spring的ioc操作 IOC底层原理 IOC入门案例 配置文件没有提示问题 Spring的bean管理(xml方式) ...

随机推荐

  1. git学习——查看提交历史

    git log可以查看提交历史: 用-p选项展开显示每次提交的内容差异,用-2则仅显示最近两次的更新:git log -p -2 在-p选项后面使用--word-diff选项进行单词层面的对比.这其中 ...

  2. Activity返回数据给上一个活动

    1.在A这个Activity中以startActivityForResult(intent, requestCode)启动B这个Activity 2.在B这个Activity中setResult(re ...

  3. 深入解析alloc/retain/release/dealloc实现

    首先通过GNUstep上得源码来叙述各个函数的实现(GNUstep是Cocoa框架的互换框架,二者的行为和实现方式很相似) GNUstep源码中NSObject类的alloc方法: id = obj ...

  4. 通过特定获取获取电脑外网IP地址

    void get_WanIp() { }; ]; ]; ; }; GetTempPathA(MAX_PATH,szFilePath); strcat(szFilePath,"IPinTheW ...

  5. Delphi 数据类型列表

    分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位 Cardinal 0 .. 4294967295 4 无符号32位 ...

  6. Linux下利用phpize安装memcashe的php源码扩展包

    phpize是php的一种构建工具,为PHP扩展准备构建环境,通过phpize可以编译php的扩展源码文件为php扩展模块. 一.安装 phpize工具可以通过安装php-dev包自动集成安装.安装完 ...

  7. vim 批处理

    一.使用args , argdo 进行文件批处理 1. :args ./src/**/*.js         利用args命令标记所要处理的文件 2. :argdo %s/tabindex/tabI ...

  8. webpack 功能大全 【环境配置】

    1. webpack简介 webpack 是一个模块打包工具.它使得模块相互依赖并且可构建等价于这些模块的静态资源.相比于已经存在的模块打包器(module bundler),webpack的开发动机 ...

  9. hashmap的equal和hashcode为什么要同时重写

    如果你重载了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样. 这样,当你用其中的一个作为键保存到hashM ...

  10. rmdir 命令

    rmdir  不能删除非空目录 1.rmdir aa  删除空文件夹aa 2.rmdir   -p   aa   递归删除文件夹aa   当aa子文件夹被删除后aa也变成空文件夹的话aa也被删除