SpringMvc学习-环境搭建

时间:2022-04-29
本文章向大家介绍SpringMvc学习-环境搭建,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近在学习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>

引用的包文件