打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
菜鸟学 Spring MVC: 如何在Mac 下创建一个基于 Spring MVC的 hello world工程

 

2015-05-28 20:32:14|  

序言:

做App 开发,掐指一算 , 七年了。 “七年”,总会让人产生审美疲劳, 对 APP开发,已经失去了当年的热情。 这个时代,流行 “转型”。 索性也来个 华丽转身, 正好有个项目机会,使得自己从 从APP 开发转为 J2EE开发。  从此开始了 我的 J2EE “小白”开发历程。

于是,拿起 Mac book,搭建好 Spring MVC 开发环境, 走起 ......

一切从痛苦开始

先说说我的痛苦经历吧。 本以为 Spring MVC 应该没多难,但一个看似极为简单的工程,就是运行不起来。 我在之前的blog 中, 记录了 遇到问题的点点滴滴, 好在身边有高手指点,再加上自己不耻下问的“厚脸皮”, 每天都在进步一点点。所以,才有了记录的兴趣, 旨在为 帮助像我一样的  Spring MVC 小白们,少走一些弯路。

万事开头难, 创建一个空白工程。 

在 Eclipse 下创建一个空白工程, 本来很简单,但是给出的选择项 太多了。 Spring MVC ,首先是面向 WEB的。 所以要创建一个 Dynamic WEB  project,如下:  


 
创建好工程后, 目录结构如下:

 

我们要做的工作分三部分:
1.  配置 xml 文件; 在 WEB-INF folder 下进行;   
2. 编写 java 代码; 在 src folder 下进行;  
3..   编写 jsp 文件;   在 WEB-INF folder 下进行;  

Spring MVC 下, 有一个极为重要的配置文件: web.xml 。  尽管 Spring MVC 被吹得很牛, 但不得不吐槽的是, 很多地方的约定让人匪夷所思。 就拿 web.xml 来说吧, 你必须创建并命名为 web.xml ,  不得换其他任何名称。 

第一步: 配置 XML

创建 web.xml ,如下图所示。 new file -> 选择 xml。 

 

新创建的 web.xml ,默认只有一行代码:      <?xml version="1.0" encoding="UTF-8"?>

作为开源的 Spring MVC,有一个优势,就是, 很多你想要的东西,已经有人为你准备好了。  就拿 web.xml来说吧, 仅仅有这一行 代码,肯定是不够的。

把以下代码 copy 过来吧。


<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<display-name>FirstSpringMVCProject111</display-name>


   <servlet> // 要特别注意 servlet的配置,这是必不可少的,而且是个 联动关系。 这里,声明了一个 servlet,名字是: spring-dispatcher. 所以,相对应的,应该创建一个 spring-dispatcher-servlet.xml 文件。


  <servlet-name>spring-dispatcher</servlet-name>

        <servlet-class>

        org.springframework.web.servlet.DispatcherServlet

      </servlet-class>

</servlet>

  <servlet-mapping>

  <servlet-name>spring-dispatcher</servlet-name>

        <url-pattern>/</url-pattern>

  </servlet-mapping>


// servlet-name 与 servlet-mapping,总是成对地出现。

</web-app>


要特别注意 servlet的配置,这是必不可少的,而且是个 联动关系。 这里对 servlet 进行了命名: spring-dispatcher. 所以,相对应的,应该创建一个 spring-dispatcher-servlet.xml 文件。
创建 spring-dispatcher-servlet.xml , 内容如下:

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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:component-scan base-package="com.uu.hellocontroller" /> //这个package 要特别注意, 这是 controller 所在的 package 名称。 所有的controller 都应该在这个 package 下。 其实,一个 controller 就是一个 class;

 

 <mvc:annotation-driven/> // 表明支持注解模式

  <bean id="viewResolver"

  class="org.springframework.web.servlet.view.InternalResourceViewResolver" >

        <property name="prefix">

          <value>/WEB-INF/</value>

      </property>

        <property name="suffix">

          <value>.jsp</value>

      </property>

 </bean>


</beans>


这个xml文件,都是由 bean 构成;  包括 bean 的 id; bean 的属性(property)。

第二步: 编写 ViewController

创建一个 package:  com.uu.hellocontroller, 在此基础上,创建一个 class。如下:

package com.uu.hellocontroller;

import java.util.Map;


import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;


@Controller

public class HelloController {

@RequestMapping("/welcome")

public ModelAndView helloWorld() {

ModelAndView model = new ModelAndView("HelloPage");

model.addObject("msg","hello world");

return model;

}

}


第三步:   创建 对应的 .jsp 文件,如下:

创建 HelloPage.jsp 如下。 为何创建 HelloPage这个名字的文件呢,因为 controller 文件中,有对应的 ModelAndView model = new ModelAndView("HelloPage");

这样看来,再智能的东西,也得有些约定吧。 这就是 Spring MVC的约定所在!!

<html>

<body>

<h1>First Spring MVC Application Demo</h1>

 <h2>${msg}</h2>  

// 这 msg 就是 controller 代码中对应的 model.addObject("msg","hello world");

</body>

</html>


测试下运行结果:

启动 Tomcat,如下:

 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
***Spring MVC的多视图解析器配置及与Freemarker的集成
Spring学习日记 - 在spring mvc中集成tiles
Spring MVC版hello_world亲测可用版(含详细步骤)
Spring 3.2 MVC拦截器实例详解:入门
基于注解的 Spring MVC 简单入门
springmvc使用和经验总结(长沙师说网络科技有限公司)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服