`

SpringMvc系列之SpringMvc常用请求映射器实例

阅读更多

本片文章用来介绍常用的SpringMvc常用的请求映射器。

Web.xml配置如下:

 

<?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>LearnSpringMvc</display-name>
	<!-- 配置Spring上下文配置文件 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<!-- 配置SpringMVC Servlet -->
	<servlet>
		<servlet-name>spring-mvc</servlet-name>
		<!-- SpringMVC 分发器 -->
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 更改SpringMVC配置文件的名字 默认的是spring-mvc-servlet.xml -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springMvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>spring-mvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	<!-- 配置监听器 用来载入上下文配置文件 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- 编码过滤器 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

SpringMvc配置文件

 

 

<?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:tx="http://www.springframework.org/schema/tx"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	                    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
	                    http://www.springframework.org/schema/tx
	                    http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
	                    http://www.springframework.org/schema/mvc
	                    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
	                    http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context-3.2.xsd"
	default-autowire="byName">

	<!-- 加载静态资源 -->
	<mvc:resources location="/static/" mapping="/static/**" />

	<!-- 视图解析器 常用的还有 VelocityViewResolver、FreeMarkerViewResolver -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

 

 

SimpleUrlHandlerMapping

	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<!-- 第一种配置方式 -->
		<property name="mappings"> 
			<props> 
				<prop key="/simpleUrl.do">simpleUrl</prop> 
			</props> 
		</property> 
		<!-- 第二种配置方式 -->
		<property name="urlMap">
			<map>
				<entry key="/simpleUrl1.do" value-ref="simpleUrl"/>
			</map>
		</property>
		
		 <!-- 第三种配置方式  -->
		 <property name="mappings">
		 	<value>
		 		/simpleUrl1.do=simpleUrl
		 		/simpleUrl2.do=beanName
		 	</value>
		 </property>
		 
	</bean>
	<bean name="simpleUrl" class="com.zkn.learnspringmvc.controller.SimpleUrlController" /><pre name="code" class="java">

package com.zkn.learnspringmvc.controller;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

/**
 * 测试SimpleURL
 * @author zkn 2016-05-23 
 *
 */

public class SimpleUrlController extends AbstractController{

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "这是SimpleUrlController");
		mv.addObject("errorMessage", "这是SimpleUrlController");
		mv.setViewName("home");
		return mv;
	}
}

ControllerBeanNameHandlerMapping

	<!-- bean名字控制器 和bean的名字有关系和类的名字没有关系 可以和ControllerClassNameHandlerMapping 
		相互对比记忆 -->
	<bean
		class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping" />
	<bean name="beanName" class="com.zkn.learnspringmvc.controller.BeanNameController" />

package com.zkn.learnspringmvc.controller;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class BeanNameController extends AbstractController{

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "这是BeanNameController");
		mv.addObject("errorMessage", "这是第二个首页错误页面");
		mv.setViewName("home");
		return mv;
	}
}

ControllerClassNameHandlerMapping

	<!-- 类名称控制器 注意访问的时候是 /classname 全部是小写的。Controller不用写。 和bean的名字没关系,只和类的名字有关系。 -->
	<bean
		class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
	<bean name="className" class="com.zkn.learnspringmvc.controller.ClassNameController" />

package com.zkn.learnspringmvc.controller;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

/**
 * 类名字映射处理器
 * 访问路径为:http://localhost:8080/LearnSpringMvc/classname
 * @author wb-zhangkenan
 *
 */

public class ClassNameController extends AbstractController{

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "这个是ClassNameController");
		mv.setViewName("home");
		return mv;
	}

	
}

BeanNameUrlHandlerMapping

	<!-- 请求处理映射器 beanName映射器 将Controller包装为HandlerExecutionChain -->
	<bean
		class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
	<!-- 调用Controller中的处理器方法 -->
	<bean
		class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
	<bean name="/beanUrlName"
		class="com.zkn.learnspringmvc.controller.BeanNameURLController"></bean>

package com.zkn.learnspringmvc.controller;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class BeanNameURLController extends AbstractController{

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "BeanNameURLController");
		mv.addObject("errorMessage", "这是第二个首页错误页面");
		mv.setViewName("home");
		return mv;
	}

}

RequestMappingHandlerMapping

	<!-- SpringMVC注解驱动 -->
	<mvc:annotation-driven />
	<!-- 注解扫描 Spring Bean -->
	<context:component-scan base-package="com.zkn.learnspringmvc.controller" />
	<!-- DefaultAnnotationHandlerMapping从3.1之后被标注为过期,3.1之后用 RequestMappingHandlerMapping -->
	<bean
		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
	<bean
		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
package com.zkn.learnspringmvc.controller;

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * 
 * @author zkn 2016-05-16
 *
 */
@Controller
public class HomeController {
	/**
	 * 注解第一种写法
	 * @param modelMap
	 * @return
	 */
	@RequestMapping(value="/home1.do")
	public String home(Model modelMap){
		modelMap.addAttribute("message", "这个是首页!!!");
		modelMap.addAttribute("errorMessage", "这个是首页!!!");
		return "home";
	}
	/**
	 * 注解第二种写法
	 * @param modelMap
	 * @return
	 */
	@RequestMapping(value="/home2.do")
	public ModelAndView home(){
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "这是第二个首页");
		mv.addObject("errorMessage", "这是第二个首页错误页面");
		mv.setViewName("home");
		return mv;
	}
	/**
	 * 注解第三种写法
	 * @param modelMap
	 * @return
	 */
	@RequestMapping(value="/home3.do")
	public String home2(Map<String, Object> map){
		map.put("message", "这是home3.do");
		map.put("errorMessage", "home3.do");
		return "home";
	}
}
jsp页面
<%@page language="java" contentType="text/html;charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<script type="text/javascript" src="static/js/jquery-2.1.4.min.js"></script>
</head>
<body>
<%=request.getAttribute("message") %>
<%=request.getAttribute("errorMessage") %>
${message} 
${errorMessage}
</body>
</html>




 

 

分享到:
评论

相关推荐

    SpringMVC四种映射方式实例代码

    本实例代码着重讲解了SpringMVC中的四种映射方式以及拦截器的实现,这对于理解和掌握SpringMVC的请求处理机制至关重要。 1. **四种映射方式**: - **通配符映射**:`@RequestMapping("/path/*")`,星号(*)代表任意...

    SpringMVC 实例

    3. 创建 SpringMVC 配置文件:这个文件通常命名为 `servlet-context.xml`,定义视图解析器、处理器映射器、拦截器等关键组件。 接下来,我们可以通过编写 Controller 来处理 HTTP 请求。Controller 类通常使用 @...

    SpringMVC+hibernate实例

    在SpringMVC中,控制器接收请求,通过模型来处理业务逻辑,然后将结果传递给视图进行渲染。这样,开发者可以专注于业务逻辑的实现,而不必关心HTTP请求的细节。SpringMVC的特性包括依赖注入、AOP(面向切面编程)、...

    SpringMVC demo 完整源码实例下载.zip

    通过这个完整的源码实例,我们可以学习到SpringMVC的整个生命周期,包括请求处理、模型绑定、视图渲染以及各种高级特性。这将有助于开发者更好地理解和掌握SpringMVC框架,从而在实际项目中更加得心应手。

    SpringMVC实例

    - servlet-config.xml文件可能包含了SpringMVC的其他配置,如前面提到的处理器映射器、适配器和视图解析器。 - 可能有名为AppController的Java类,使用@Controller注解,里面定义了处理HTTP请求的方法。 - 模型和...

    Maven springMVC项目实例

    3. **Controllers**:自定义的控制器类处理请求,通常通过注解(如`@RequestMapping`)来映射URL。 4. **View Resolvers**:视图解析器负责找到视图的实现,例如JSP或Thymeleaf。 5. **Handlers**:处理器适配器...

    maven + springmvc 入门实例

    3. **编写Controller**: 创建一个实现了`Controller`接口或注解了`@Controller`的类,定义处理请求的方法,使用`@RequestMapping`注解映射URL。 4. **视图解析**: 视图通常由JSP页面实现,使用`ModelAndView`对象...

    springMVC入门实例

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。它简化了Java Web开发,并以其强大的功能和灵活性受到开发者的欢迎。在这个入门实例中,我们将深入理解SpringMVC的核心概念...

    Spring MVC请求映射常见的三种方式

    **注解驱动的映射**是Spring MVC最常用的方式,它通过在控制器类的方法上使用`@RequestMapping`注解来定义请求路径。例如: ```java @Controller public class MyController { @RequestMapping("/hello") public...

    SpringMVC+Mysql实例详解

    总的来说,SpringMVC+Mysql实例涵盖了Web应用开发的多个方面:从请求处理、业务逻辑到数据存储和用户界面。通过这个实例,你可以了解如何利用SpringMVC的注解驱动、依赖注入特性,以及如何与MySQL数据库无缝集成,为...

    maven+SpringMvc+mybatis实例

    你需要配置SpringMVC的DispatcherServlet,定义处理器映射器和视图解析器,以及创建处理用户请求的控制器类。同时,SpringMVC还可以与Spring框架的其他组件(如AOP、DI)集成,实现更复杂的功能。 **MyBatis** 是一...

    简单的SpringMVC实例

    5. **HandlerMapping**:处理映射器根据请求URL找到对应的控制器方法。 6. **HandlerAdapter**:处理器适配器封装了控制器的调用逻辑,确保DispatcherServlet可以调用任何类型的控制器。 7. **ViewResolver**:...

    SpringMVC3.1实例源码

    `servlet-context.xml`会定义处理器映射器、视图解析器等组件。 3. **注解驱动开发** SpringMVC 3.1大力推崇注解驱动,如@Controller、@RequestMapping、@RequestParam等,它们大大简化了代码,减少了XML配置。...

    springmvc实例

    1. **XML配置**:在传统的Spring MVC项目中,我们需要在`spring-servlet.xml`等配置文件中声明DispatcherServlet、映射器(HandlerMapping)、适配器(HandlerAdapter)等组件。 ```xml ``` 2. **Java配置**:...

    SpringMVC+Hibernate+Spring整合实例

    SpringMVC通过DispatcherServlet作为前端控制器,处理所有HTTP请求,并分发到相应的处理器。此外,它支持多种视图技术,如JSP、FreeMarker或Thymeleaf。 Hibernate是一个强大的ORM(对象关系映射)框架,它的主要...

    SpringMVC实例导入MyEclipse即可运行

    例如,`@RequestMapping`用于映射URL请求到特定的方法。 4. **模型(Model)**: 模型对象承载着业务数据,可以通过`@ModelAttribute`注解将请求参数绑定到模型对象,或者通过`Model`或`ModelAndView`对象传递数据...

    Maven+SpringMVC的入门级HelloWorld实例

    而SpringMVC是Spring框架的一个模块,专注于提供模型-视图-控制器(MVC)架构,用于构建高度模块化、可测试和灵活的Web应用。 **Maven基础** Maven以XML格式的pom.xml文件为中心,这个文件包含了项目配置、依赖管理...

    springmvc与hibernate结合实例

    SpringMVC 和 Hibernate 是两种非常重要的 Java Web 开发框架,它们在实际项目中常常结合使用,以实现模型-视图-控制器(MVC)架构和持久化层的高效管理。本实例将详细介绍如何将 SpringMVC 与 Hibernate 结合,以...

Global site tag (gtag.js) - Google Analytics