Spring MVC 配置Controller详解

在SpringMVC中,对于Controller的配置方式有很多种,如下做简单总结

第一种 URL对应Bean
如果要使用此类配置方式,需要在XML中做如下样式配置:

<!-- 表示将请求的URL和Bean名字映射-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/hello.do" class="test.HelloController"></bean> 

以上配置,访问/hello.do就会寻找ID为/hello.do的Bean,这类配置应用型不太广,网站大了,controller多了的话,这种方式要累死

第二种 为URL分配Bean
使用一个统一配置集合,对各个URL对应的Controller做关系映射:

    <!-- 最常用的映射配置方式 -->
    <!-- <prop key="/hello*.do">helloController</prop>-->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="mappings">
      <props>
       <prop key="/hello.do">helloController</prop>
      </props>
     </property>
    </bean>
    <bean name="helloController" class="test.HelloController"></bean>  

此类配置还可以使用通配符,访问/hello.do时,Spring会把请求分配给helloController进行处理,这类方式比第一种好一点,可以使用通配符,进行通用性匹配,不过实用性也不是很大

第三种  注解@controller

首先需要在配置文件配置一下注解:

<!-- 启用 spring 注解 -->
<context:component-scan base-package="test" />  ----扫描test中所有@controller标记
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> 

在编写类上使用注解@org.springframework.stereotype.Controller标记这是个Controller对象
使用@RequestMapping("/hello.do")指定方法对应处理的路径,这里只是简单示例,会有更复杂配置

代码类如下:

    package test;
    import java.util.Date;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.bind.annotation.RequestMapping;
    // http://localhost:8080/spring/hello.do?user=java
    @org.springframework.stereotype.Controller
    public class HelloController{
        @SuppressWarnings("deprecation")
        @RequestMapping("/hello.do")
        public String hello(HttpServletRequest request,HttpServletResponse response){
            request.setAttribute("user", request.getParameter("user") + "-->" + new Date().toLocaleString());
            return "hello";
        }
    }  
时间: 2024-08-11 01:33:01

Spring MVC 配置Controller详解的相关文章

Spring mvc请求处理流程详解(一)之视图解析

前言 Spring mvc框架相信很多人都很熟悉了,关于这方面的资料也是一搜一大把.但是感觉讲的都不是很细致,让很多初学者都云里雾里的.本人也是这样,之前研究过,但是后面一段时间不用发现又忘记了.所以决定写下来,以备后用. 本系列文基于spring-4.3.1,配置方式全部基于java-based方式 从配置讲起 先上一段配置的代码: @EnableWebMvc @Configuration public class MvcConfig extends WebMvcConfigurerAdapt

Spring MVC @RequestMapping注解详解

@RequestMapping 参数说明 value:定义处理方法的请求的 URL 地址.(重点) method:定义处理方法的 http method 类型,如 GET.POST 等.(重点) params:定义请求的 URL 中必须包含的参数.或者不包含某些参数.(了解) headers:定义请求中 Request Headers 必须包含的参数.或者不包含某些参数.(了解) @RequestMapping 的用法 @RequestMapping 有两种标注方式,一种是标注在类级别上,一种是

spring boot配置信息详解

# REDIS (Redis 配置)# 连接工厂使用的数据库索引spring.redis.database= 0# Redis服务器主机spring.redis.host= localhost# 登录redis服务器的密码spring.redis.password= # 给定时间池可以分配的最大连接数 使用负值为无限制spring.redis.pool.max-active= 8# 池中“空闲”连接的最大数量 使用负值来表示无限数量的空闲连接spring.redis.pool.max-idle=

Spring的配置以及详解

Spring步骤 1 创建项目 2 导入jar包     三大框架的jar包     数据库驱动jar 3 给项目分层 4 写DTO:一张表  对应的就是一个DTO   表中字段的个数及其类型  要和对应的DTO一致 5 写DTO的映射文件:取名规范     pojo.hbm.xml <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibern

Spring mvc整合freemarker详解

1.什么是FreeMarker FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) 2.FreeMarker特性 能够生成各种文本:HTML.XML.RTF.Java源代码等等 易于嵌入到你的产品中:轻量级:不需要Servl

spring xml配置标签详解

<!-- 指定类的名称 在对bean进行定义时,除了使用id属性来指定名称之外,为了提供多个名称,可以使用alias标签来指定. --> <alias name="" alias=""/> <!-- applicationContext.xml文件中使用import的方式导入有模块配置文件 --> <import resource=""/> <!-- 创建类 --> <bean&g

Spring MVC整合Velocity详解

一.Velocity简介 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象. 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人 员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码.Velocity将java代码从web页面中分离出来,这样为web站点的长 期维

Spring MVC 注解开发详解

@Controller控制器定义 1.Controller是单利模式,被多个线程请求共享,因此设计成无序状态. 2.通过@controller标注即可将class定义为一个controller类.为使spring能找到定义为controller的bean,需要在spring-context配置文件中增加如下定义: @RequestMapping @RequestParam @SessionAttributes @ModelAttribute

Spring探究-----配置Bean详解

声明一个实体类Car package com.spring.configureBean; /** * 车辆类 * * @author yyx 2019年6月11日 */ public class Car { /** * 车辆名称 */ private String carName; /** * 车辆价格 */ private Integer carPrice; public Car() { super(); } public Car(String carName, Integer carPric