Spring-MVC理解之二:前置控制器

一、前置控制器配置与讲解  

  上篇中理解了IOC容器的初始化时机,并理解了webApplicationContext和SevletContext和servlet的param等的概念和关系。

  现在记录,如何配置前置控制器:

    <servlet>
        <servlet-name>MainServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:spring/applicationContext-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MainServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

  对于url-pattern配置成*.do等形式的前置控制器配置,不记录了,只记录REST风格的配置。

  <url-pattern>/</url-pattern>这种方式的配置,那么tomcat会把所有访问该应用的请求都分配给org.springframework.web.servlet.DispatcherServlet来进行处理。

package com.brolanda.educloud.core.login.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping(value="/login")
public class LoginController {
    @RequestMapping(value="/validate",method=RequestMethod.GET)
    public String validateUser(){
        return "home/home";
    }
}

我们在系统内创建一个controller,并配置对应的url请求路径,其中在Controller上配置的@RequestMapping(value="/login"),是说http://ip:port/app/login的request都转到这个控制器上,然后在validateUser方法上配置的 @RequestMapping(value="/validate",method=RequestMethod.GET),是告诉前置控制器,http://ip:port/app/login/validta的request请求都转向LoginController 的validateUser()方法进行处理。

二、静态资源配置

  ok,到此,理解了前置控制器对请求的转发,与使用注解的方式标注Controller。那么问题来了,所有的请求都会转给前置控制器,而前置控制器的工作原理就是针对每个请求找到相应的Controller进行处理,并返回消息。那么,针对静态资源的请求,前置控制器就只好报异常了,因为它确实找不到。

  所以,我们需要告诉静态资源的请求如何处理,有两种方式:

方式一:使用容器的默认处理器。

<mvc:default-servlet-handler />

此配置告诉DispatcherServlet,对于找不到Controller的请求,就把它交给tomcat的默认处理器就行处理,而tomcat的默认处理器会把请求的资源返回给客户端。

方式二:在前置控制器的配置文件中指明静态资源的请求路径,该路径下的请求一律直接返回资源即可。

<mvc:resources location="/resources/" mapping="/resources/**"/>

此配置告诉DispatcherServlet,任何http://ip:port/app/resources/**的请求都将其定位到/resources/目录下,并寻找对应的目录文件,作为资源文件返回给客户端。

  其中,两个*,它表示映射resources/下所有的URL,包括子路径(即接多个/)。

例如:

1. 访问,浏览器显示webapp/resources/test.png

2. 访问,浏览器显示webapp/resources/scripts/test.js

3. 访问,浏览器显示webapp/resources/css/2012/test.css

  三种访问url,如果只配一个*就只第一个能访问,现在配置两个*那么1、2、3均可访问。

三、视图配置

  controller可以返回很多类型的信息,目前我用到的就是json、和jsp,那么,如果返回的jsp,我们需要如何配置呢?

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="jspViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/resources/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

  prefix是前缀信息,suffix是后缀信息

  controller处理完之后,返回了login,那么会返回客户端http://ip:port/app/resources/jsp/login.jsp页面信息。

至此,spring-mvc基础配置完成

时间: 2024-10-14 20:55:24

Spring-MVC理解之二:前置控制器的相关文章

spring mvc+mybatis整合 (二)

转:http://lifeneveralone.diandian.com/post/2012-11-02/40042292065 本文介绍使用spring mvc结合Mybatis搭建一个应用程序框架. demo源码下载:springMVC-Mybatis 1.准备工作: spring的jar包: spring-beans-3.1.0.RELEASE.jar spring-core-3.1.0.RELEASE.jar spring-web-3.1.0.RELEASE.jar spring-web

Myeclipse/STS 首次在本地部署配置一个Spring MVC 项目 (十二)

1. 在本地新创建一个文件夹 ,做为项目工作空间; 2. 用 Myeclipse 或 STS 进入该文件夹,该文件夹就成为项目的工作空间: 3. 就要进 窗口-首选项,配置: 环境默认编码: 1>. 常规下面 内容类型 .txt 文本 UTF-8 更新 2>. 常规 – 工作空间 , 文本文件编码 3>. 常规 – 编辑器 – 文本编辑器 – 拼写 配置 java JDK 为 项目需要的版本 比如 (1.7) : 配置 Myeclipse 下的 Servers 及 validation 

Java框架-Spring MVC理解001

Spring MVC理解 最近在读一本<看透springMVC>的书,从了解到了一些更加精细系统的知识,边读变分享吧. 1.servlet--Spring MVC的本质 2.Spring MVC其实是一个工具,具体的理解可以分为两步:第一步,了解这个工具是怎么创建出来的:第二步,了解这个工具是怎么用的. 3.前期使用准备:环境的搭建 ①创建WEB项目,导入jar包,Maven项目简单的加入springMVC和servlet的依赖就可以了. //Maven项目加入依赖 <dependenc

Spring MVC 体系结构和处理请求控制器

①MVC小结: 1.MVC处理过程 对于MVC的三部分(模型Model.视图View.控制器Controller)功能职责分别进行了相应的阐述,并描述了各部分之间的调用关系. MVC整体的处理过程: (1)首先视图提供系统与用户交互的界面,并发送用户输入给控制器. (2)控制器接受用户的请求,并决定应该调用那个模型来进行处理. (3)模型根据用户请求进行相应的业务逻辑处理,并返回处理结果(数据). (4)控制器根据返回的处理结果,调用相应的视图格式化模型返回的数据,并通过视图呈现给用户结果. 2

Java框架-Spring MVC理解005-DispatcherServlet

DispatcherServlet 通过源码我们可以看到,onRefresh方法是DispatcherServlet的入口方法.onRefresh中简单地调用了initStrategies,在initStrategies中调用了9个初始化方法. // org.springframework.web.servlet.DispatcherServlet protected void onRefresh(ApplicationContext context) { initStrategies(cont

Spring MVC 基础入门二

单个接收表单提交的参数 在实际开发中通过会在spring MVC的Controller里面接收表单提交过来的参数,这块代码该怎么去编写呢? 示例: 编写一个带有表单的jsp: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> &l

spring mvc 通过配置xml访问控制器的三种方式

(一)通过 name 来一一映射(默认) (二)通过简单url 来指定映射,key 表示访问url value 是bean的ID (三)通过控制类的类名控制器,访问时类名首字母需要小写 <!-- 配置Controller --> <bean id="loginController" name="/login.do" class="com.beifeng.controller.LoginController"></be

Spring MVC Rest 学习 二

1.Controller应该是SpringMVC的核心,Controller中要学习的注解也是多之又多,不过这些注解在程序中的作用确实不可小觑,看看列出这几项: @Controller  :  定义一个类为控制器,这个与 @Repository 有点像 @RequestMapping : 定义Controller的URL映射以及请求方法 @PathVariable : 定义路径参数,Rest本身就是把资源进行唯一定义,那么URL中使用参数也是唯一定义的一种形式 @ResponseBody : 定

Spring MVC 数据绑定(二)

Spring支持多种形式的类型绑定,包括: 1.基本数据类型.String和String[] 2.简单对象类型 3.List类型 4.Set类型 5.Map类型 6.复合数据类型 接下来一个一个的实现: 1.基本数据类型.String和String[]. 请求处理方法: public void registBean(String username,int age,double income,String[] interests,boolean marrid) 保证JSP页面上提交项和方法中对应参

Spring MVC体系结构和处理请求控制器

MVC设计模式 通常的Web项目,架构模式基本分层 数据库访问接口:DAO层 处理业务逻辑:Service层 数据实体:POJO 负责前端请求的接受处理:Servlet 负责前端页面展示:JSP MVC设计模式:它是软件工程中的一种软件架构模式.它强制性地使软件系统的输入.处理和输出分开.把软件系统分为三个基本部分:模型(Model).视图(View).控制器(Controller) 视图(View):负责格式化数据并把他们呈现给用户,包括数据展示.用户交互.数据验证.界面设计等功能.对应组件: