zoukankan      html  css  js  c++  java
  • 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.xml

    在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>
    dispatcherServlet-servlet.xml

    新建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

    新建页面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>
    hell.jsp

    引用的包文件

  • 相关阅读:
    单链表
    css hack原理
    java类载入器——ClassLoader
    ImportTsv-HBase数据导入工具
    Android之键盘监听的执行机理【看清键盘监听的本质】【入门版】
    每天复习Shell—ls
    poj 1159 Palindrome
    redis-3.0.3安装測试
    PHP 对象和引用总结
    sas单变量的特征分析
  • 原文地址:https://www.cnblogs.com/ggz19/p/5432306.html
Copyright © 2011-2022 走看看