专栏首页水击三千SpringMvc学习-环境搭建

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>

引用的包文件

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅谈JavaScript的面向对象程序设计(四)

      本文继续讲解JavaScript的面向对象程序设计。继承是面向对象语言中的一个基本概念,面向对象语言支持两种继承实现方式:接口继承和实现继承。接口继承只继承...

    水击三千
  • 浅谈JavaScript的面向对象程序设计(三)

      前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性、对象的工厂模式、构造函数和原型等。通过介绍,这些创建对象的方法依然有不少优...

    水击三千
  • ProgressBar、RatingBar和Spinner控件

    1、ProgressBar、SeekBar与RatingBar控件 ProgressBar控件,也就是我们通常的进度条控件,可以显示加载的进度等。SeekBar...

    水击三千
  • 第八章:Shiro和Spring的集成——深入浅出学Shiro细粒度权限开发框架

    Standalone Applications

    MonroeCode
  • 第八章:Shiro和Spring的集成——深入浅出学Shiro细粒度权限开发框架

    Standalone Applications nShiro 应用程序需要一个具有单例SecurityManager 实例的应用程序。请注意,这不会是一个静态的...

    MonroeCode
  • 《Spring Boot极简教程》第8_章: Spring Boot集成Groovy混合Java开发第8_章: Spring Boot集成Groovy混合Java开发小结

    本章我们使用SpringBoot集成Groovy混合Java开发一个极简的RestAPI。 数据库使用mysql,ORM层使用mybatis,模板引擎使用fre...

    一个会写诗的程序员
  • SSM 框架快速整合实例--学生查询

    SSM 框架即 Spring 框架、SpringMVC 框架、MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了。...

    compassblog
  • SSM 框架快速整合实例--学生查询

    SSM 框架即 Spring 框架、SpringMVC 框架、MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了。

    compassblog
  • 8.1 Spring Boot集成Groovy混合Java开发小结

    本章节我们使用SpringBoot集成Groovy混合Java开发一个极简的RestAPI。 数据库使用mysql,ORM层使用mybatis,模板引擎使用fr...

    一个会写诗的程序员
  • springMVC笔记一

    1)需求:学生注册【add.jsp->StudentAction.java->addOK.jsp】

    HUC思梦

扫码关注云+社区

领取腾讯云代金券