在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);
}
}
分享到:
相关推荐
本文将详细探讨Spring MVC中常见的三种请求映射方式:基于注解的映射、基于XML配置的映射以及基于Java配置的映射。我们将深入理解每种方式的工作原理,并通过实例来展示其用法。 ### 1. 基于注解的映射 **注解驱动...
三、Spring MVC核心流程图:描述了Spring MVC处理请求的流程,包括前端控制器接收请求,经过分发器分发给具体的控制器,然后由控制器处理业务逻辑,最后将结果返回给用户。 四、Spring MVC DispatcherServlet说明:...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...
个人认为相当适合入门和知识巩固!! 一、前言 ...十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。Spring MVC的设计目标是提供一个清晰的组件化架构,使得开发者可以独立地开发和测试控制器、...
Spring MVC 教程 快速入门 深入分析 目录 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 ...十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作
- **DispatcherServlet**:这是 Spring MVC 的前端控制器,负责接收 HTTP 请求并分发给合适的后端组件处理。 - **WebApplicationContext**:这是一个特殊的 Bean 容器,用于管理 Web 应用中的所有 Bean。 - **默认的...
它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的功能改进和优化,以提升开发效率和应用性能。 首先,让我们深入了解...
在Spring MVC中,每个请求都会经过DispatcherServlet,这是一个前端控制器,它会根据请求的URL和配置的映射规则将请求分发到合适的处理器。处理器可以是自定义的Controller类,Controller通过方法注解(如@...
总的来说,"Mastering Spring MVC 4(2015.09)源码"提供了深入学习Spring MVC的机会,你可以通过阅读和分析源码来了解如何配置DispatcherServlet、怎样编写控制器、如何进行数据绑定与验证,以及如何利用拦截器等特性...
首先,Spring MVC的基础架构包括DispatcherServlet(前端控制器)、Model、View和Controller。DispatcherServlet是整个流程的入口,负责接收请求并分发到相应的Controller。Controller是业务逻辑处理的核心,Model...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring ...
它是Spring MVC的前端控制器,接收所有HTTP请求,然后根据请求信息选择合适的HandlerMapping找到对应处理器(Controller方法)。处理器执行后,通过HandlerAdapter将结果转换为ModelAndView对象,最后由ViewResolver...
Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...
- 在Spring MVC配置文件中声明处理器映射器、视图解析器、以及自定义的控制器等。 4. **创建简单示例** 在这个"Spring MVC 简单Demo"中,我们可能有一个名为`SummerWeb`的目录,其中包含以下文件: - `web.xml`...
3. `org.springframework.web.servlet-3.0.2.RELEASE.jar`:这是 Spring MVC 的核心模块,提供了控制器(Controller)、模型视图(ModelAndView)以及调度器Servlet(DispatcherServlet)等关键组件。...
#### 十三、JUnit 单元测试 Spring MVC 控制器 为了确保控制器的正确性,可以编写 JUnit 测试用例来进行单元测试。通常会使用 Spring Test 模块提供的 `MockMvc` 类来模拟 HTTP 请求,并验证控制器的行为。 #### ...
本主题将深入探讨如何实现一个类似Spring MVC的Web控制器,以及它所涵盖的核心知识点。 首先,我们需要理解控制器在Web应用程序中的作用。控制器是MVC架构的一部分,它作为模型和视图之间的桥梁,接收来自客户端的...