SpringMVC 第一篇【万能的Hello World】

前言

既然大家看到这篇文章,相信大家都听说过SpringMVC也大概知道它是做什么的。请允许我简单的介绍一下SpringMVC 给那些初学者一些入门的提示。

对于Java的码农来说,Web应用应该都是很熟悉的。而Web应用的展现层是Web应用必不可少的环节。而SpringMVC就是为展现层提供的一个优秀的Web框架。和众多Web框架一样,它基于MVC设计模式,此外它采用的松散耦合可插拔的组件结构,比其它的MVC框架更具有拓展性和灵活性。SpringMVC通过一套注解,让POJO成为请求处理的控制器,无需实现或者继承任何接口或者父类,大大增加了代码的灵活程度,减少了耦合度。另外SpringMVC还支持REST风格的URL请求:注解驱动及REST风格的SpringMVC是Spring3.0的最出彩的功能之一。此外,SpringMVC在数据绑定、视图解析、本地化处理及静态资源处理上都有许多不俗的表现。它在框架的拓展性、灵活性方面全面超越了Struts、WebWork等MVC框架。越来越多的企业已经开始把原来的Struts换成了SpringMVC,为了让 大家快速的熟悉SpringMVC我编写了此系列的文章。把我在工作中常用的功能展现给大家,让大家快速的学习使用它。本人技术水平有限,如果有错误请大家指正。说了那么多废话,现在开始进入正题吧,编写那万能的入门开篇 Hello World!

声明:本人的开发环境为Eclipse,使用Maven的朋友我会把pom文件也上传上来的。

前期准备

1.到Spring官网下载Spring框架最新版本3.2.1 http://www.springsource.org/download/community?project=Spring%2520Framework

2.创建Web项目SpringMVC File->New->Other>Web>Dynamic WebProject

3.增加一个新的文件夹config.files用来存放配置文件

4.修改Context Directory为webapp

6.添加j2ee依赖包

右键项目->Build Path->Add Libraries..->Server Runtime->Apache Tomcat xx(注意:这个需要你在eclipse添加tomcat配置)

添加springmvc依赖jar包

到此,基本项目创建已经完成。下面开始编写代码。

配置SpringMVC框架

首先要对web.xml文件进行配置,以便Web容器启动时能够自动启动Spring容器

 
  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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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. <!-- 配置Spring配置文件的加载路径 -->
  5. <context-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>/WEB-INF/spring/root-context.xml</param-value>
  8. </context-param>
  9. <!-- 配置Spring容器的监听器,它将使用上配置的contextConfigLocation的值的路径来获得Spring配置文件的路径 -->
  10. <listener>
  11. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  12. </listener>
  13. <!-- SpringMVC的主控Servlet -->
  14. <servlet>
  15. <servlet-name>appServlet</servlet-name>
  16. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  17. <init-param>
  18. <param-name>contextConfigLocation</param-name>
  19. <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
  20. </init-param>
  21. <load-on-startup>1</load-on-startup>
  22. </servlet>
  23. <!--SpringMVC处理的URL -->
  24. <servlet-mapping>
  25. <servlet-name>appServlet</servlet-name>
  26. <url-pattern>/</url-pattern>
  27. </servlet-mapping>
  28. <welcome-file-list>
  29. <welcome-file></welcome-file>
  30. </welcome-file-list>
  31. </web-app>
 

配置好web.xml后 我们首先写一个控制器HomeController,来处理首页请求。

 
  1. package com.yubai.springmvc;
  2. import java.text.DateFormat;
  3. import java.util.Date;
  4. import java.util.Locale;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. /**
  12. * 处理首页请求
  13. *
  14. * @author SongYF
  15. *
  16. */
  17. @Controller
  18. public class HomeController {
  19. private static final Logger logger = LoggerFactory
  20. .getLogger(HomeController.class);
  21. /**
  22. * 处理首页请求
  23. */
  24. @RequestMapping(value = "/", method = RequestMethod.GET)
  25. public String home(Locale locale, Model model) {
  26. // 显示当前地域
  27. logger.info("Welcome home! The client locale is {}.", locale);
  28. Date date = new Date();
  29. DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,
  30. DateFormat.LONG, locale);
  31. String formattedDate = dateFormat.format(date);
  32. model.addAttribute("serverTime", formattedDate);
  33. return "home";
  34. }
  35. }

SpringMVC的Controller注解可以讲任何一个POJO类标注为SpringMVC的控制器,处理HTTP请求。具体其它部分代码是什么意思,暂不讲解。首先教大家入门。

接下来创建SpringMVC的配置文件 在WEB-INF中创建spring/appServlet文件夹 创建servlet-context.xml配置文件

 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans:beans xmlns="http://www.springframework.org/schema/mvc"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:beans="http://www.springframework.org/schema/beans"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  9. <!-- 开启 Spring MVC @Controller设计模型-->
  10. <annotation-driven />
  11. <!-- 处理HTTP GET请求 /resources/** 使之直接从 ${webappRoot}/resources文件夹下返回资源 -->
  12. <resources mapping="/resources/**" location="/resources/" />
  13. <!-- 配置视图解析器 把控制器返回的字符串解析为/WEB-INFO/views/下面的jsp页面 具体做法就是讲返回的字符串加上你指定的后缀.jsp -->
  14. <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  15. <beans:property name="prefix" value="/WEB-INF/views/" />
  16. <beans:property name="suffix" value=".jsp" />
  17. </beans:bean>
  18. <!--配置SpringMVC扫描路径 -->
  19. <context:component-scan base-package="com.yubai.springmvc.web" />
  20. </beans:beans>

在这里解释一下HomeController里面home方法返回的“home”是啥意思? SpringMVC讲home方法返回的home字符串 匹配配置文件里面的配置 到prefix指定的/WEB-INF/views/文件夹里面去找 home.jsp这个界面 渲染后返回给用户。

现在在/WEB-INF/views/下面建立 home.jsp

 
  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="GBK"%>
  3. <html>
  4. <head>
  5. <title>SpringMVC学习首页</title>
  6. </head>
  7. <body>
  8. <h1>
  9. Hello world!
  10. </h1>
  11. <P> 当前服务器时间 ${serverTime}. </P>
  12. </body>
  13. </html>

最后一项任务,将log4j的配置文件增加到config.files文件夹中

 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  4. <!-- Appenders -->
  5. <appender name="console" class="org.apache.log4j.ConsoleAppender">
  6. <param name="Target" value="System.out" />
  7. <layout class="org.apache.log4j.PatternLayout">
  8. <param name="ConversionPattern" value="%-5p: %c - %m%n" />
  9. </layout>
  10. </appender>
  11. <!-- Application Loggers -->
  12. <logger name="com.yubai.springmvc">
  13. <level value="info" />
  14. </logger>
  15. <!-- 3rdparty Loggers -->
  16. <logger name="org.springframework.core">
  17. <level value="info" />
  18. </logger>
  19. <logger name="org.springframework.beans">
  20. <level value="info" />
  21. </logger>
  22. <logger name="org.springframework.context">
  23. <level value="info" />
  24. </logger>
  25. <logger name="org.springframework.web">
  26. <level value="info" />
  27. </logger>
  28. <!-- Root Logger -->
  29. <root>
  30. <priority value="warn" />
  31. <appender-ref ref="console" />
  32. </root>
  33. </log4j:configuration>

到现在项目的截图如下

其中root-context.xml的内容为

 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <!-- Root Context: defines shared resources visible to all other web components -->
  6. </beans>

发布项目测试运行

关于eclipse如何部署项目我就不再赘述了,如果不会的同学可以到baidu上去查询一下。

在浏览器中输入http://localhost:9080/SpringMVC/ (我将我的tomcat端口修改为9080了 大家的应该是8080)就可以看到效果了。

结束语

到目前为止大家已经看到了如何搭建一个基础的SpringMVC开发环境,后面的文章我会陆续的和大家分享SpringMVC的原理以及各种功能。这篇文章仅作为HelloWorld给大家呈现。代码在后面添加上了了,但是建议大家还是自己动手写一下。另外使用MAVENd的同学(.pom文件我给放在config.files文件夹下面了,不使用MAVEN的同学可以删除掉)。如有不足请联系我,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值