标签:
最近在学习SpringMVC,首先来说说SpringMVC项目的搭建。
1.SpringMVC简介
spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
另外还有一种基于组件的、事件驱动的Web框架在此就不介绍了,如Tapestry、JSF等。
Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;
应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response)
方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。
模型-视图-控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计模式。它主要通过分离模型、视图及控制器在应用程序中的角色将业务逻辑从界面中解耦。通常,模型负责封装应用程序数据在视图层展示。视图仅仅只是展示这些数据,不包含任何业务逻辑。控制器负责接收来自用户的请求,并调用后台服务(manager或者dao)来处理业务逻辑。处理后,后台业务层可能会返回了一些数据在视图层展示。控制器收集这些数据及准备模型在视图层展示。MVC模式的核心思想是将业务逻辑从界面中分离出来,允许它们单独改变而不会相互影响。
2.SpringMVC框架
在最简单的Spring MVC应用程序中,控制器是唯一的你需要在Java web部署描述文件(即web.xml文件)中配置的Servlet。Spring MVC控制器 ——通常称作Dispatcher Servlet,实现了前端控制器设计模式。并且每个web请求必须通过它以便它能够管理整个请求的生命周期。
当一个web请求发送到Spring MVC应用程序,dispatcher servlet首先接收请求。然后它组织那些在Spring web应用程序上下文配置的(例如实际请求处理控制器和视图解析器)或者使用注解配置的组件,所有的这些都需要处理该请求。
在Spring3.0中定义一个控制器类,这个类必须标有@Controller注解。当有@Controller注解的控制器收到一个请求时,它会寻找一个合适的handler方法去处理这个请求。这就需要控制器通过一个或多个handler映射去把每个请求映射到handler方法。为了这样做,一个控制器类的方法需要被@RequestMapping注解装饰,使它们成为handler方法。
handler方法处理完请求后,它把控制权委托给视图名与handler方法返回值相同的视图。为了提供一个灵活的方法,一个handler方法的返回值并不代表一个视图的实现而是一个逻辑视图,即没有任何文件扩展名。你可以将这些逻辑视图映射到正确的实现,并将这些实现写入到上下文文件,这样你就可以轻松的更改视图层代码甚至不用修改请求handler类的代码。
为一个逻辑名称匹配正确的文件是视图解析器的责任。一旦控制器类已将一个视图名称解析到一个视图实现。它会根据视图实现的设计来渲染对应对象。
3.HelloWrod示例
首先在eclipse中新建web项目springmvc,web.xml配置如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <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"> 3 <display-name>springmvc</display-name> 4 <welcome-file-list> 5 <welcome-file>index.html</welcome-file> 6 <welcome-file>index.htm</welcome-file> 7 <welcome-file>index.jsp</welcome-file> 8 <welcome-file>default.html</welcome-file> 9 <welcome-file>default.htm</welcome-file> 10 <welcome-file>default.jsp</welcome-file> 11 </welcome-file-list> 12 <servlet> 13 <servlet-name>dispatcherServlet</servlet-name> 14 <servlet-class> 15 org.springframework.web.servlet.DispatcherServlet 16 </servlet-class> 17 <init-param> 18 <param-name>contextConfigLocation</param-name> 19 <param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value> 20 </init-param> 21 <load-on-startup>1</load-on-startup> 22 </servlet> 23 <servlet-mapping> 24 <servlet-name>dispatcherServlet</servlet-name> 25 <url-pattern>*.do</url-pattern> 26 </servlet-mapping> 27 <filter> 28 <filter-name>CharacterEncodingFilter</filter-name> 29 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 30 <init-param> 31 <param-name>encoding</param-name> 32 <param-value>utf-8</param-value> 33 </init-param> 34 </filter> 35 <filter-mapping> 36 <filter-name>CharacterEncodingFilter</filter-name> 37 <url-pattern>/*</url-pattern> 38 </filter-mapping> 39 </web-app>
在web-inf文件夹下,新建dispatcherServlet-servlet.xml,配置如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3 xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:p="http://www.springframework.org/schema/p" 6 xmlns:aop="http://www.springframework.org/schema/aop" 7 xmlns:mvc="http://www.springframework.org/schema/mvc" 8 xmlns:context="http://www.springframework.org/schema/context" 9 xsi:schemaLocation="http://www.springframework.org/schema/beans 10 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 11 http://www.springframework.org/schema/mvc 12 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 13 http://www.springframework.org/schema/context 14 http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 15 <bean id="dataSource" 16 class="org.apache.commons.dbcp.BasicDataSource"> 17 <property name="driverClassName" 18 value="oracle.jdbc.driver.OracleDriver"> 19 </property> 20 <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"></property> 21 <property name="username" value="weather"></property> 22 <property name="password" value="oracleadmin"></property> 23 </bean> 24 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 25 <property name="dataSource" ref="dataSource"/> 26 </bean> 27 <bean id="multipartResolver" 28 class="org.springframework.web.multipart.commons.CommonsMultipartResolver" > 29 <property name="defaultEncoding" value="utf-8"/> <!-- 默认编码 (ISO-8859-1) --> 30 <property name="maxInMemorySize" value="10240"/> <!-- 最大内存大小 (10240)--> 31 <property name="uploadTempDir" value="/upload/"/> <!-- 上传后的目录名 (WebUtils#TEMP_DIR_CONTEXT_ATTRIBUTE) --> 32 <property name="maxUploadSize" value="-1"/> <!-- 最大文件大小,-1为无限止(-1) --> 33 </bean> 34 35 <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --> 36 <context:component-scan base-package="com.tmri"/> 37 <mvc:annotation-driven/> 38 <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 39 <property name="supportedMediaTypes"> 40 <list> 41 <value>text/html;charset=UTF-8</value> 42 </list> 43 </property> 44 </bean> 45 46 <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> 47 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 48 <property name="messageConverters"> 49 <list> 50 <ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 --> 51 </list> 52 </property> 53 </bean> 54 <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> 55 <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> --> 56 <!--对模型视图名称的解析,即在模型视图名称添加前后缀 --> 57 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 58 p:suffix=".jsp" p:prefix="/WEB-INF/jsp/"/> 59 <bean id="weatherDao" class="com.tmri.dao.WeatherDao"></bean> 60 <bean id="weatherService" class="com.tmri.service.impl.WeatherServiceImpl"></bean> 61 </beans>
新建controller文件
1 @RequestMapping(params="method=hello") 2 public ModelAndView Hello(){ 3 ModelAndView mav=new ModelAndView("hello"); 4 mav.addObject("hello", "helloworld"); 5 return mav; 6 }
新建页面hello。jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <div>${hello }</div> 11 </body> 12 </html>
引用的包文件
标签:
原文地址:http://www.cnblogs.com/ggz19/p/5432306.html