Spring MVC 的三种映射控制器

SpringMVC配置URL处理映射三种方式 <?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.springfram... 阅读详情

在spring mvc 框架中我们可以使用三种url mapping的控制器

(1)BeanNameUrlHandlerMapping 默认控制器,方式是将表现层的url和bean name绑定在一起
(2)SimpleUrlHandlerMapping  通过properties形式配置url mapping和controller的映射
(3)CommonsHandlerMappingy 使用元数据的方式

我们的action

 

package Action;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.DispatcherServlet;


public class HomeController implements Controller {
    
private String greeting;
    
    
public String getGreeting() {
        
return greeting;
    }


    
public void setGreeting(String greeting) {
        
this.greeting = greeting;
    }


    
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {    
        
return new ModelAndView("home","message",greeting);
    }

    
}
  

 

JSP页面 命名为home.jsp因为ModelAndView对象中的视图逻辑名为home

 

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
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>
    
<meta http-equiv="pragma" content="no-cache">
    
<meta http-equiv="cache-control" content="no-cache">
    
<meta http-equiv="expires" content="0">    
    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    
<meta http-equiv="description" content="This is my page">
    
<!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    
-->
  
</head>
  
  
<body>
    ${message}
<br>
  
</body>
</html>

 

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns
="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
  
<context-param>
    
<param-name>contextConfigLocation</param-name>
    
<param-value>/WEB-INF/train-service.xml,/WEB-INF/train-data.xml,/WEB-INF/train-servlet.xml</param-value>
  
</context-param>
  
<servlet>
    
<servlet-name>train</servlet-name>
    
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
<load-on-startup>0</load-on-startup>
  
</servlet>
  
<servlet-mapping>
     
<servlet-name>train</servlet-name>
     
<url-pattern>*.mvc</url-pattern>
  
</servlet-mapping>
  
<welcome-file-list>
    
<welcome-file>index.jsp</welcome-file>
  
</welcome-file-list>
</web-app>

 

train-servlet.xml  前缀为train,因为web.xml中servlet-name为train

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
<!-- 使用BeanNameUrlHandlerMapping控制器
<bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/home.mvc" class="Action.HomeController">
  <property name="greeting">
    <value>wlcome to spring mvc</value>
  </property>
</bean>
 
-->

<!-- 使用SimpleUrlHandlerMapping控制器 -->
<bean id="HomeController" class="Action.HomeController">
  
<property name="greeting">
    
<value>wlcome to spring mvc</value>
  
</property>
</bean>
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 
<property name="mappings">
   
<props>
     
<prop key="/home.mvc">HomeController</prop>
   
</props>
 
</property>
</bean>

<!-- 使用commonsHandlerMappingy元数据控制器,需要jakarta common attributes包 -->
<bean id="urlMapping" class="org.springframework.web.servlet.handler.metadata.CommonsPathMapHandlerMapping"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  
<property name="prefix">
    
<value>/jsp/</value>
  
</property>
  
<property name="suffix">
    
<value>.jsp</value>
  
</property>
</bean>
</beans>

 

需要注意的是,如果我们是用元数据方式,需要更改我们的action为

 

package Action;

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

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;


/**
 * @@org.springframework.web.servlet.handler.commonsattributes.PathMap("/home.mvc");
 
*/

public class HomeController extends AbstractCommandController {
    
private String greeting;
    
    
public String getGreeting() {
        
return greeting;
    }


    
public void setGreeting(String greeting) {
        
this.greeting = greeting;
    }



    
protected ModelAndView handle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, BindException arg3) throws Exception {
        
// TODO 自动生成方法存根
        return null;
    }


    
protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
        
return new ModelAndView("home","message",greeting);
    }



    
}
  
springmvc 前端控制器,映射器,适配器,视图解析器 1.前端控制器DispatcherServlet的配置,在web.xml进行配置即可跟servlet的配置方式相同 1)contextConfigLocation配置sprimgmvc加载的配置文件(配置处理器映射器,适配器等等)如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xm 阅读详情

相关推荐

hMailServer安装配置

hMailServer安装配置 使用宝塔面板上的宝塔邮件服务器2.1版本,进行安装hMailServer。 宝塔在安装hMailServer是有做了一些配置,如果是手工安装需要注意一下配置点: 1、\hMailServer\Bin 目录下增加mysql连接文件libmysql.dll,要去下载32位的。 libmysql.dll下载 链接:https://pan.baidu.com/s/1YGJXzjowlJ9n_MiqB4xiqw 提取码:wz90 2、 需要提前安装mysql,并创建hM.

王者的博客 5829

Spring MVC处理器映射器(HandlerMapping)详解

Spring MVC提供的处理器映射器(HandlerMapping)主要有BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping,我们需根据使用的场景来进行配置。

陈瑾 419

【YOLOv11】014、YOLOv11模型导出:PyTorch到ONNX格式转换与优化

摘要:本文详细介绍了如何将PyTorch训练的YOLOv11模型高效转换为ONNX格式。重点包括:分离模型特征提取与后处理、设置动态维度、优化ONNX算子、验证转换正确性等关键步骤。作者分享了实际项目中的经验教训,如版本对齐、算子兼容性处理、后处理分离等实用技巧,并推荐使用onnx-simplifier工具优化模型。文章强调模型转换是一个需要反复调试的过程,建议保留转换记录形成知识库,以提高部署效率并避免常见错误。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 260

SpringMVC映射器、适配器、解析器

1.处理器和适配器 1.1springmvc映射器   根据客户端请求的url,找到处理本次请求的handler(处理器),将url和controller关联起来 1.2springmvc的适配器   对映射器查找到的controller中的方法进行调用。   第一种:Controller适配   第二种:HttpRequestHandler适配   第三种:注解适配   不同的...

weixin_30723433的博客 306

SpringMVC处理器映射器HandlerMapping

前言 在SpringMVC中会有很多请求,每个请求都需要一个Handler处理,具体接收到一个请求之后使用哪个Handler进行处理呢,他们的过程是什么。 HandlerMapping:负责映射用户的URL和对应的处理类Handler,HandlerMapping并没有规定这个URL与应用的处理类如何映射。所以在HandlerMapping接口中仅仅定义了根据一个URL必须返回一个由Handler...

clyu的博客 2683

Spring MVC中2种映射控制器的方法

在使用Spring MVC的过程中,比较重要的一个关键知识点是使用Controller的方法。本文介绍了通过配置文件和通过注解Annotation,这2种使用Controller的方法。 1.通过配置文件applicationContext.xml 这种方法比较原始。之所以说原始,应为现在的框架中已经不常用了。这种方法的缺点是,每次增加/修改/删除Controller,都要到配置文件里添加如下...

招财猫_Martin 的专栏 3982

springMVC实现控制器映射的两种方法

springMVC实现控制器映射的两种方法 1.控制器继承Controller类 目录结构如下: 1.[NAME]-servlet.xml中:导入配置,并完成映射器、适配器、视图解析器的bean配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org

qq_61603262的博客 768

Spring 笔记 将请求映射控制器

将请求映射控制器 dispatcher servlet处理映射会根据请求所携带的URL来定位控制器,他将控制器bean名称映射到该URL的pattern。 这种映射类似于使用web.xml文件中的元素将url映射到servlet的方式。 Spring MVC提供了以下三种实现处理程序映射的类: BeanNameUrlHandlerMapping class SimpleUrlHandlerM...

jurenzhouqi的博客 287

Spring MVC学习笔记3,三种映射方式得到Handler

这篇博客写的是通过三种方式映射得到Handler 第一种:配置HandlerMapping,根据beanname进行查找: 配置如下:         hello:                                          第二种:根据类名进行查找: 第三种:根据简单URL映射进行访问Handler:         

qq_37139105的博客 735

SpringMVC三种映射处理器的用法

spring三种映射处理器的控制器***Controller要继承AbstractController类并重写protected ModelAndView handleRequestInternal(){}方法 (一)BeanNameUrlHandlerMapping (默认)可以省略不写,不常用; <!--配置文件形式要配置的组建:Controller,handlermap...

qq30211478的博客 610

spring mvc 不定路径 请求映射

公司项目整体结构迁移,从原有的spring + zk + thrift 转移到 spring-cloud, 搭建了spring-cloud 全家桶,新的微服务模块写的后台接口,接入到原有域名,遇到了手动转发的问题. 原有的管理后台, 称之为 admin-api, 是一个spring mvc工程, 向前端提供http接口,后端与原有的各个thrift项目链接, 起到转换http请求的作用. ...

龙行九天的专栏 316

设计模式与SpringMVC

1)派遣器模式 Spring有一个统一集中的派遣器org.springframework.web.servlet.DispatcherServlet, 一般在web.xml中把所有的页面请求都发送到该派遣器: countries org.springframework.web.servlet.DispatcherServlet 2 countries *.ht...

DCTM + SAP 81

设计模式与SpringMVC结构

1)派遣器模式Spring有一个统一集中的派遣器org.springframework.web.servlet.DispatcherServlet,一般在web.xml中把所有的页面请求都发送到该派遣器: countries org.springframework.web.servlet.DispatcherServlet 2  countries *.htm2)控制器模式派遣器收到请求后,把

软件开发资料汇总 408

Spring MVC请求处理流程

从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发   Spring MVC工作流程图   图一   图二    Spring工作流程描述       1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;       2. DispatcherSer

qq_36074157的博客 291

SpringMVC | SpringMVC映射器和适配器的两种配置方式

目录 处理器映射器和处理器适配器的配置 1. 基于注解形式实现 2. 基于非注解形式实现 处理器映射器和处理器适配器的配置 SpringMVC中对组件的配置形式主要有两种,注解形式和非注解形式,下面来具体演示介绍这两种方式。 给定需求:展示用户列表 pojo类用户类(User): public class User { private Integer id; private String name; private String password; p

quwenjing_blog 1607

SpringMVC—controller映射信息存储时机和过程

controller映射信息存储发生在Web容器初始化时,通过前面的博客我们知道,Web容器初始化时,会调用doCreateBean(),其中又会调用populateBean()和initializeBean(),而映射信息的注入发送在后者。 每一bean的创建初始化都会经过,我们只需要找到我们的controller,找到后,我们来看看initializeBean(): //最终我...

wonderfulwork 662

SpringMVC中的处理器(Controller) & 处理器映射(handlerMapping)

SpringMVC中的处理器: 1)命令处理器(CommandController): 配置文件: 处理器: public class MyCommandController extends AbstractCommandController { // 在默认的构造方法中注册模型 public MyCommandController() {

java小兵 2042

springmvc映射器

1.springmvc怎么执行流程 浏览器some.do–>中央调度器—>处理器映射器(拿到controller)–> 处理器执行链(HandlerExecutionChain)的类保存—>处理器适配器对象 -(返回结果)–>中央调度器—>视图解析器–>中央调度器–>model–> 中央调度器—>浏览器(都在DispatchServlet) 映射器:实现了HandlerMapping接口都是 映射器的作用:根据请求获得对象 Mycontroller

weixin_47039303的博客 300

SpringMVC 三种处理器映射器配置方式

当用户通过URL发来请求、在Controller 层 springmvc 要根据配置文件来决定哪一个Controller 对象处理该请求。该过程是通过处理器映射器HandlerMapping类来决定。下面我们介绍常用的三种配置方式: 方式一:通过BeanNameUrlHandlerMapping 也就是根据url请求去匹配bean的name属性url,从而获取Controller。Spr

小白的进化史 2943

SpringMVC--控制器

1. 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。 控制器负责解析用户的请求并将其转换为一个模型。 在Spring MVC中一个控制器类可以包含多个方法 在Spring MVC中,对于Controller的配置方式有很多种 1.1 Controller的配置方式01: 实现Controller接口 1.1.1 Controller接口 Controller是一个接口,在org.springframework.web.servlet.mvc包下

天行健 君子以自强不息,地势坤 君子以厚德载物。 1370

基于VB6.0的温度数据采集系统设计.doc

基于VB6.0的温度数据采集系统设计.doc

上一篇: interface 和 abstract interface 的区别
下一篇: Spring MVC 中使用多个url控制器
daryl715
博客等级 码龄25年 573粉丝 755原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值