Spring MVC Quickly Start

  1. 配置pom文件依赖库版本,及spring依赖管理 (Maven自动来管理Spring版本)

     <properties>
         <spring.version>4.1.3.RELEASE</spring.version>
         <commons.lang.version>2.6</commons.lang.version>
         <slf4j.version>1.7.6</slf4j.version>
     </properties>
     <dependencyManagement>
         <dependencies>
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-framework-bom</artifactId>
                 <version>${spring.version}</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
         </dependencies>
      </dependencyManagement>
    
    • bom : 材料清单

    • Spring为了解决jar包冲突,推出spring-framework-bom、spring-boot-dependencies、platform-bom用来统一管理Spring版本。

  2. 导入 Spring MVC 及其依赖jar包

     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
     </dependency>
     <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-log4j12</artifactId>
         <version>${slf4j.version}</version>
         <exclusions>
             <exclusion>
                 <groupId>org.slf4j</groupId>
                 <artifactId>slf4j-api</artifactId>
             </exclusion>
         </exclusions>
      </dependency>
      <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>${commons.lang.version}</version>
      </dependency>
    
  3. 配置web.xml 加入Spring核心类 DispacherServlet

     <?xml version="1.0" encoding="UTF-8"?>
     <web-app version="2.4" 
         xmlns="http://java.sun.com/xml/ns/j2ee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
             http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
         
         <servlet>
             <servlet-name>mvc-dispatcher</servlet-name>
             <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
             <!-- DispatcherServlet 对应的上下文配置,默认为WEB-INF/${servlet-name}-servlet.xml -->
             <init-param>
                 <param-name>contextConfigLocation</param-name>
                 <param-value>/WEB-INF/configs/spring/mvc-dispatcher.xml</param-value>
             </init-param>
             <load-on-startup>1</load-on-startup>
         </servlet>
     
         <servlet-mapping>
             <servlet-name>mvc-dispatcher</servlet-name>
             <!--默认拦截所有请求-->
             <url-pattern>/</url-pattern>
         </servlet-mapping>
     </web-app>
    
    • init-param

      可以不去配置,省略后默为/WEB-INF/${servlet-name}-servlet.xml

      配置时配置contextConfigLocation参数 value = url

    • web-app

      2.3及之前版本默认关闭el表达式

      2.4版本默认开启el表达式

  4. 添加Spring MVC 配置文件

     <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:p="http://www.springframework.org/schema/p"
         xmlns:context="http://www.springframework.org/schema/context"
         xmlns:mvc="http://www.springframework.org/schema/mvc"
         xsi:schemaLocation="
             http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd
             http://www.springframework.org/schema/mvc
             http://www.springframework.org/schema/mvc/spring-mvc.xsd">
     
         <!--激活注解配置-->
         <context:annotation-config/>
         
         <!--配置只关注@Contraller标注的Bean-->
         <context:component-scan base-package="com.bjchaney.springmvc">
             <context:include-filter type="annotation" 
                 expression="org.springframework.stereotype.Controller"/>
         </context:component-scan>
         
         <!--HandlerMapping 不需要配置 SpringMVC 默认启用DefaultAnnotationHandlerMapping-->
     
         <!--扩充了注解驱动-->
         <mvc:annotation-driven/>
         
         <!--引入静态资源-->
         <mvc:resources mapping="/resources/*" location="/resources/"/>
             
         <!--配置ViewResolver
             可以配置多个ViewResolver,
             使用order属性排序,
             InternalResourceViewResolver 放在最后
             -->
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
             <!--配置使用支持jstl的view-->
             <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
             <property name="prefix" value="/WEB-INF/jsp/"/>
             <property name="suffix" value=".jsp"/>
         </bean>
     </beans>
    
    • Spring-MVC 所有的配置完成
    • 之后加入Spring来管理Service层和dao层,实现ApplicationContext层次化
  5. 在 web.xml中加入Spring应用的上下文

     <!--Spring 应用上下文 层次化 applicationContext-->
     <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>/WEB-INF/configs/spring/applicationContext*.xml</param-value>
     </context-param>
     
     <listener>
         <listener-class>
             org.springframework.web.context.ContextLoaderListener
         </listener-class>
     </listener>
    
  6. 添加Spring容器的配置文件

     <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:p="http://www.springframework.org/schema/p"
         xmlns:context="http://www.springframework.org/schema/context"
         xmlns:mvc="http://www.springframework.org/schema/mvc"
         xsi:schemaLocation="
             http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd
             http://www.springframework.org/schema/mvc
             http://www.springframework.org/schema/mvc/spring-mvc.xsd">
     
         <!--激活注解配置-->
         <context:annotation-config/>
         
         <!--配置关注除@Contraller标注之外的Bean-->
         <context:component-scan base-package="com.bjchaney.springmvc">
             <context:exclude-filter type="annotation" 
                 expression="org.springframework.stereotype.Controller"/>
         </context:component-scan>
      </beans>
    
  7. 添加常用 ViewResolver

     <!--文件上传viewResolver-->
     <bean id="multipartResolver" 
         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
         <property name="maxUploadSize" value="2000000"/>
         <property name="defaultEncoding" value="UTF-8"/>
         <property name="resolveLazily" value="true"/>
     </bean>
    
     <!--  ContentNegotiatingViewResolver
         提供相同内容不同表现形式的viewResolver
         此处用来返回Json数据
     -->
     <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
         <property name="order" value="1"/>
         <property name="mediaTypes">
             <map>
                 <entry key="json" value="application/json"/>
                 <entry key="xml" value="application/xml"/>
                 <entry key="html" value="text/html"/>
             </map>
         </property>
         <property name="defaultViews">
             <list>
                 <bean 
                 class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
                 </bean>
             </list>
         </property>
         <property name="ignoreAcceptHeader" value="true"/>
     </bean>
    
  8. 编写Controller进行 相应操作Example

     @Controller
     @RequestMapping("/hello")
     public class HelloController {
         
         @Autowired
         UserService userService;
         
         @RequestMapping(value = "/impl1",method = RequestMethod.GET)
         public String hello(String name,Model model){
             model.addAttribute("name", userService.getFotmatName(name));
             return "hello";
         }
         
         @RequestMapping(value = "/impl2",method = RequestMethod.GET)
         public String hello(String name,Map<String,String> model){
             model.put("name", userService.getFotmatName(name));
             return "hello";
         }
         
         @RequestMapping(value = "/impl3",method = RequestMethod.GET)
         public String hello(HttpServletRequest request){
             String name = request.getParameter("name");
             request.setAttribute("name", userService.getFotmatName(name));
             return "hello";
         }
     
         @RequestMapping(value = "/json",method = RequestMethod.GET)
         @ResponseBody
         public RestResponse<String> hello(@ModelAttribute("name") String name){
             RestResponse restResponse = new RestResponse();
             return restResponse.success(name);
         }
         
         @RequestMapping(value = "/upload",method = RequestMethod.GET)
         public String hello(){
             return "upload";
         }
         @RequestMapping(value = "/doUpload",method = RequestMethod.POST)
         public String doUpload(MultipartFile file) throws Exception{
             if(!file.isEmpty()){
                 userService.CopyFile(file.getInputStream(), "~/Documents/1.jpg");
             }
             return "success";
         }
     }
    

源码地址:https://github.com/BJChaney/SSMSample

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容