- 为什么要学习SpringMVC呢?
Spring框架号称是JavaEE应用的一站式解决方案,Spring本身有提供了一个设计优良的MVC框架,SpringMVC。由于Spring框架拥有极高的市场占有率,因此越来越多的Spring框架使用者使用SpringMVC代替曾经的MVC框架的王者Struts2。当然Spring也可以无缝地整合Struts、JSF等优秀的MVC框架。
越来越多的企业开始选择则SpringMVC+Mybatis来构建系统架构,而在电商热门的今天,SpringMVC+Mybatis已经成为电商项目架构的最佳搭配。
什么是MVC思想?MVC的优势又是什么?MVC,它不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,而是所有面向对象程序设计语言都应该遵守的一种规范。MVC的优势在于:
-
他将一个应用分文三个层次(M,V,C这里就不多概述),这三个部分协同工作,把应用程序代码的耦合度降到了最低,这就提高了程序的可扩展性和可维护性。
- 多个视图可以对应一个模型,这样就减少了代码的重复性,以及代码的维护量。
- 因为将模型数据和显示层分离开来,所以模型数据可以应用于任何显示技术,包括jsp页面、velocity模板或者直接产生Excel文档。
- MVC更有利于工程化管理地软件,不同的层各司其职,有利于通过工程化和工具化的方法来管理程序代码。
SpringMVC又具有哪些优势呢?
-
SpringMVC灵活性高、非侵入性以及可配置性。
- SpringMVC提供了一个前端控制器DispatcherServlet,开发人员不用额外开发控制器对象。
- SpringMVC分工明确,包括控制器、验证器、命令对象、模型对象、处理程序映射试图解析器等,每个功能的实现都由一个专门的对象来负责完成。
- SpringMVC可以自动绑定用户输入,并正确的转换数据类型。(例如可将字符串解析为模型的int或者float类型的属性)。
- SpringMVC使用了一个名称/值的Map对象实现更加灵活的模型数据传输。
- SpringMVC内置了常见的校验器,可以校验用户输入,如果校验不通过,重定向到输入表单。输入校验是可选的并且支持编程方式以及声明方式。
- SpringMVC支持国际化,配置极其简单。
- SpringMVC支持多种视图技术:JSP、Velocity和FreeMarker.
- Spring提供了一个简单而又强大的JSP标签库,支持数据绑定功能,使得编写JSP页面更加容易。
话不多说,直接上代码(编写HelloWorld的步骤):
-
首先需要做的就是导入所需的jar包:Spring的所有jar包以及commons-logging.jar。
Spring下载地址:http://repo.spring.io/release/org/springframework/spring/ 。
commons-logging.jar下载地址:http:commons.apache.org 。
配置web.xml——DispatcherServlet前端控制器的配置。
<!-- 定义Spring MVC前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 让Spring MVC的前端控制器拦截所有请求 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
配置SpringMVC的Controller<?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.2.xsd">
<!-- 配置handle,映射hello请求 -->
<bean name="/hello" class="org.fkit.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>Controller类的实现
public class HelloController implements Controller{ private static final Log logger = LogFactory.getLog(HelloController.class); @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub logger.info("handleRequest被调用"); ModelAndView mv = new ModelAndView(); mv.addObject("message","Hello SpringMVC!"); mv.setViewName("/WEB-INF/content/welcome.jsp"); return mv; } }
View页面的实现
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>初识SpringMVC</title> </head> <body> ${requestScope.message } </body> </html>
测试应用:访问下面网址:
http://localhost:8080/SpringMVCTest/hello