Spring MVC—XML配置与注解配置+使用注解完成请求参数绑定

SpringMVC应用开发流程剖析:XML配置与注解配置

Spring MVC—XML配置与注解配置+使用注解完成请求参数绑定

提供了一个入门案例来深入理解SpringMVC的请求处理流程,同时熟悉SpringMVC的应用开发流程。开发一个SpringMVC应用,首先需要为我们的Web项目添加Spring支持,然后我们就可以采用基于XMl配置的方式或者基于注解配置方式进行应用的构建。本节将分别演示基于XML配置和Annotation配置的SpringMVC 应用。

SpringMVC应用开发流程DEMO:XML配置

1,在web.xml中配置前端控制器 DispatcherServlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 id="WebApp_ID" version="2.5">
 <display-name>SpringMVCDemo</display-name>
 <!-- 配置Spring MVC的前端控制器:DispatchcerServlet -->
 <servlet>
 <servlet-name>springmvc</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <!-- SpringMVC配置文件路径和名称设定 -->
 <init-param> 
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:springmvc.xml</param-value>
 </init-param>
 <!-- Web应用启动时立即加载 -->
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>springmvc</servlet-name>
 <url-pattern>/</url-pattern> <!-- 拦截所有请求 -->
 </servlet-mapping>
</web-app>

要想把SpringMVC框架应用到Web项目中,我们首先需要在web.xml添加一个Servlet —— DispatchcerServlet。DispatcherServlet是SpringMVC的集中访问点,其核心功能就是分发请求,而且能与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。

2,在web.xml中指定路径配置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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> 
 <!-- 配置Handle,映射"/hello"请求 --> 
 <bean name="/hello" class="cn.edu.tju.rico.controller.HelloController"/> 
 <!-- 处理映射器将bean的name作为url进行查找,需要在配置Handle时指定name(即url) --> 
 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> 
 <!-- SimpleControllerHandlerAdapter是一个处理器适配器,所有处理适配器都要实现HandlerAdapter接口 --> 
 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 
 <!-- 视图解析器 --> 
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> 
</beans>

3,实现SpringMVC配置文件中配置的Controller

public class HelloController implements Controller{
 public ModelAndView handleRequest(HttpServletRequest request,
 HttpServletResponse response) throws Exception {
 //创建准备返回的ModelAndView对象,如名所示,该对象通常包含了返回视图名、模型名称以及模型对象
 ModelAndView mv = new ModelAndView();
 //添加模型数据,可以是任意的POJO对象
 mv.addObject("message", "Hello, Rico...");
 // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
 mv.setViewName("/WEB-INF/views/welcome.jsp");
 // 返回ModelAndView对象
 return mv;
 }
}

4,相应的视图页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>welcome</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">
 </head>
 <body>
 ${requestScope.message} <br>
 </body>
</html>

SpringMVC应用开发流程DEMO:Annotation 配置

1,在web.xml中配置前端控制器 DispatcherServlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 id="WebApp_ID" version="2.5">
 <display-name>SpringMVCDemo</display-name>
 <!-- 配置Spring MVC的前端控制器:DispatchcerServlet -->
 <servlet>
 <servlet-name>springmvc</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <!-- SpringMVC配置文件路径和名称设定 -->
 <init-param> 
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:springmvc.xml</param-value>
 </init-param>
 <!-- Web应用启动时立即加载 -->
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>springmvc</servlet-name>
 <url-pattern>/</url-pattern> <!-- 拦截所有请求 -->
 </servlet-mapping>
</web-app>

2,在web.xml中指定路径配置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: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-4.0.xsd
 http://www.springframework.org/schema/context 
 http://www.springframework.org/schema/context/spring-context-4.0.xsd
 http://www.springframework.org/schema/mvc 
 http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
 <!-- 配置Handle,映射"/hello"请求 -->
 <!-- <bean name="/hello" class="cn.edu.tju.rico.controller.HelloController"/> -->
 <!-- Spring自动扫描相关类并将Spring注解类注册为Spring的Bean -->
 <context:component-scan base-package="cn.edu.tju.rico"></context:component-scan>
 <!-- 处理映射器将bean的name作为url进行查找,需要在配置Handle时指定name(即url) -->
 <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> -->
 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
 <!-- SimpleControllerHandlerAdapter是一个处理器适配器,所有处理适配器都要实现HandlerAdapter接口 -->
 <!-- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> -->
 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
 <!-- 视图解析器 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

3,实现 Controller

@Controller
public class HelloControllerByAnnotation {
 @RequestMapping("/hello")
 public ModelAndView hello() {
 // 创建准备返回的ModelAndView对象,如名所示,该对象通常包含了返回视图名、模型名称以及模型对象
 ModelAndView mv = new ModelAndView();
 // 添加模型数据,可以是任意的POJO对象
 mv.addObject("message", "Hello, Rico~");
 // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
 mv.setViewName("/WEB-INF/views/welcome.jsp");
 // 返回ModelAndView对象
 return mv;
 }
}

与Controller接口的实现类只能处理一个单一的请求动作不同的是,基于注解的控制器可以支持同时处理多个请求动作,真正实现了方法级别的请求拦截和处理。

4,开发相应的视图页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>welcome</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">
 </head>
 <body>
 ${requestScope.message} <br>
 </body>
</html>

以上就是我所整理的关于Spring MVC的XML配置与注解配置+使用注解完成请求参数绑定,有不对的地方,请各位大佬多多批评指正,谢谢大佬。

此外我还整理了一些互联网公司java程序员在面试中涉及到的绝大部分架构面试题及答案做成了文档和架构视频资料免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料)也可以关注获得更多的面试资料,节省大家收集的时间!

 

猜你喜欢

转载自blog.csdn.net/weixin_44699571/article/details/88751371