Spring MVC基础(二)-- 映射器和适配器配置

目录

1、简介

2、基于BeanNameUrl方式的配置

2.1 springmvc.xml中的配置

2.2 Controller中代码

2.3 测试结果

3、基于SimpleUrl方式的配置

3.1 springmvc.xml中的配置

3.2 Controller中代码

3.3 测试结果

4、基于注解方式的配置

4.1 springmvc.xml中的配置

4.2 Controller中代码

4.3 测试结果

5、基于Spring MVC默认方式的配置

5.1 springmvc.xml中的配置

5.2 Controller中代码

5.3 测试结果:

6、总结

1、简介

    从(Spring MVC基础(一)-- 基本原理)文章中可以知道,Spring MVC开发过程中程序员只需要开发Handler(具体Controller处理方法)和View(jsp等),其他的开发组件(前端控制器DispatcherServlet、处理器映射器HandlerMapping、处理器适配器HandlerAdapter和视图解析器ViewResolver)不需要程序员开发,只需要配置就可以使用了,因此本文主要介绍下怎么配置这几个开发组件。(由于Spring MVC基础(一)-- 基本原理中简单配置过web.xml文件,所以此处不再配置)

2、基于BeanNameUrl方式的配置

2.1 springmvc.xml中的配置

<?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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
    <bean name="/viewUser" class="com.user.controller.UserController"/>
    <!-- 通过bean的name值作为url找对应的Handler -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    <!-- 此种方式配置的处理器适配器需要Handler实现Controller接口 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    <!-- 此种方式采用物理地址识别的方式解析jsp -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

2.2 Controller中代码

package com.user.controller;

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

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

public class UserController implements Controller {
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 
            throws Exception {
		ModelAndView mav = new ModelAndView();
		mav.addObject("viewFlag", "ViewUserByBeanName");
		mav.setViewName("/WEB-INF/user/viewUserInfo.jsp");
		return mav;
	}
}

2.3 测试结果

3、基于SimpleUrl方式的配置

3.1 springmvc.xml中的配置

<bean id="viewUserUrl" class="com.user.controller.UserController"/>
<!-- 通过url找对应的Handler -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
	<property name="mappings">
		<props>
			<!-- 此处可配置多个url -->
			<prop key="/viewUserInfo">viewUserUrl</prop>
		</props>
	</property>
</bean>
<!-- 此种方式配置的处理器适配器需要Handler实现HttpRequestHandler接口 -->
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />

3.2 Controller中代码

package com.user.controller;

import java.io.IOException;

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

import org.springframework.web.HttpRequestHandler;

public class UserController implements HttpRequestHandler {
	@Override
	public void handleRequest(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
		request.setAttribute("viewFlag", "ViewUserByUrl");
		request.getRequestDispatcher("/WEB-INF/user/viewUserInfo.jsp").forward(request, response);
	}
}

3.3 测试结果

4、基于注解方式的配置

4.1 springmvc.xml中的配置

<!-- 扫描Handler -->
<context:component-scan base-package="com.user.controller" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />

4.2 Controller中代码

package com.user.controller;

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

@Controller
public class UserController {
	// 方式1
	@RequestMapping("/viewUserByAnnotation1")
	public ModelAndView viewStudent1() {
		ModelAndView mav = new ModelAndView();
		mav.addObject("viewFlag", "ViewUserByAnnotation1");
		mav.setViewName("/WEB-INF/user/viewUserInfo.jsp");
		return mav;
	}
	
	// 方式2
	@RequestMapping("/viewUserByAnnotation2")
	public String viewStudent2(Model model) {
		model.addAttribute("viewFlag", "ViewUserByAnnotation2");
		return "/WEB-INF/user/viewUserInfo.jsp";
	}
}

4.3 测试结果

5、基于Spring MVC默认方式的配置

5.1 springmvc.xml中的配置

<context:component-scan base-package="com.user.controller" />
<!-- 使用默认配置 -->
<mvc:annotation-driven />
<!-- 采用逻辑视图的方式解析jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
	<property name="prefix" value="/WEB-INF/"></property>
	<property name="suffix" value=".jsp"></property>
</bean>

5.2 Controller中代码

package com.user.controller;

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

@Controller
public class UserController {
	@RequestMapping("/viewUserByDefault")
	public String viewUser(Model model) {
		model.addAttribute("viewFlag", "viewUserByDefault");
		return "user/viewUserInfo";
	}
}

5.3 测试结果:

6、总结

    从以上配置中可以发现,随着Spring版本的提升配置越来越简单,开发者的工作也越来越关注于业务,建议Spring版本高的采用注解的方式,可以省去很多工作,也更方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值