码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC 入门 - 框架搭建

时间:2015-02-10 00:18:38      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

 

感觉网上从环境搭建讲起的教程不多,好多示例也比较复杂,而且也没个图啥的,所以就上一个简单易懂的版本。

有多简单捏?从eclipse建立工程开始,结束后作出一个可以响应请求的Servlet。

在这个文章里面,我们需要 - 

  建立一个eclipse工程;

  编写两个xml;

  编写两个jsp页面;

  编写一个Java文件。

 

准备工作 - 

  Eclipse J2EE版本;

  Tomcat 一只;

 

注:所有斜体字代表-文件名,类名,变量名等可替换内容。

 

第一步:

使用Eclipse建立动态网页工程。

技术分享

技术分享

输入项目名字,点击下一步。

技术分享

点击下一步。

技术分享

 

选上生成web.xml然后点击完成。

创建/WebContent/WEB-INF/Views目录,用于存放JSP网页

创建两个空页面,Index.jsphello.jsp

在Java resources 中创建Java包 bob.sun.controller。

在包中创建一个空的IndexController

在/WebContent/WEB-INF/中创建springtest-servlet.xml文件。

 

工程的源码树应该如下图所示:

技术分享

 

第二步:

复制Jar包。

在Spring MVC 框架中,框架依赖的Jar包不能像其他Java工程那样在BuildPath里面添加。

添加Jar包需要直接拷贝jar文件到/WebContent/WEB-INF/lib。

 

Spring MVC依赖于以下的几个包包。

技术分享

 

拷贝完了之后在工程树那边右键刷新下工程。

技术分享

 

第三步:

打开/WebContent/WEB-INF/web.xml,参照下面的code编辑:

 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_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>springtest</display-name> 
 4   <welcome-file-list>
 5     <welcome-file>/WEB-INF/Views/index.jsp</welcome-file> 
 6   </welcome-file-list>
 7   <servlet>
 8       <servlet-name>springtest</servlet-name> 
 9       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>10       <load-on-startup>1</load-on-startup> 
11   </servlet>
12   
13   <servlet-mapping>
14       <servlet-name>springtest</servlet-name> 
15       <url-pattern>*.do</url-pattern> 
16   </servlet-mapping>
17   
18 </web-app>

其中,

  <welcome-file-list>指定了整个servlet的首页,这里我们定义为index.jsp。

  <servlet>定义了servlet以及所使用的类。由于我们使用的是SpringMVC,所以servlet的类指定到spring的DispatcherServlet。

  <servlet-mapping>中的<url-pattern>指定了所有“.do”的请求都由我们刚刚定义的springtest来处理。可以理解为把所有的".do"请求过滤出来交给springtest这个servlet。

 

第四步:

Spring MVC 框架需要一个上下文配置文件。如果在web.xml中没有定义的话,Spring MVC就会搜素 /WEB-INF这个路径下有木有名字是" [servlet名字]-servlet.xml" 这样的一个配置。我们这里servlet的名字是springtest,那么默认的配置文件名是springtest-servlet.xml。刚才在web.xml中我们并没有指定配置文件是哪个,所以Spring会去自动的找springtest-servlet.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  xmlns:p="http://www.springframework.org/schema/p"
 5  xmlns:context="http://www.springframework.org/schema/context"
 6  xsi:schemaLocation="http://www.springframework.org/schema/beans
 7   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 8   http://www.springframework.org/schema/context
 9   http://www.springframework.org/schema/context/spring-context-3.0.xsd">
10    
11  <context:component-scan base-package="bob.sun.controller" />   
12  <bean id="viewResolver"
13   class="org.springframework.web.servlet.view.UrlBasedViewResolver">
14   <property name="viewClass"
15    value="org.springframework.web.servlet.view.JstlView" />
16   <property name="prefix" value="/WEB-INF/Views/" /> 
17   <property name="suffix" value=".jsp" />
18  </bean>
19 </beans>

其中,

  <context:component-scan> 告诉Spring去哪个包扫描带有它注释的Java code。Spring的注释是什么呢?在下文的Java 代码里我们会看到。

为了简单起见,这个xxx-servlet.xml只有一个bean,指定了MVC中的V(iew)由哪个类去解析。prefix和suffix两个property指定了View的前缀和后缀。这样如果我们想在Java返回一个View,只需要返回View的名字即可。比如我们想要返回一个/WEB-INF/Views/hello.jsp,由于指定了前缀为/WEB-INF/View,后缀为.jsp,在java中我们只需要返回一个"hello"。

 

第五步:

编写JSP

index.jsp长这样:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <title>Spring 3.0 MVC demo</title>
</head>
<body>
 <a href="hello.do">Say Hello</a> 
</body>
</html>

 

<a href="hello.do">,当用户点击这个链接时,会向servlet发送一个hello.do的动作。根据我们在web.xml中的定义,"*.do"会交给我们的springtest servlet 处理。

hello.jsp 长这个样子:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>hello spring</h1> Just a simple printing.
</body>
</html>

值得注意的是,这时在首页中点击hello.do的链接并不会直接跳转到这个页面,因为我们还没有编写Controller。

那么 - 

 

第六步:

编写Java code。

bob.sun.controller.IndexController.java:

package bob.sun.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class IndexController {
    @RequestMapping("/hello.do")
    public ModelAndView helloMethod(){
        String ret = ".... you spring";
        return new ModelAndView("hello","ret",ret);
    }
}

是的你没看错在这个例子中Java code 就是这么简单。

其中 - 

  @Controller 这是一个Spring框架的注释,出现在类前面。它表明整个类都是Spring中的C(ontroller)。Controller用于控制View,填充View的数据等。

  @RequestMapping("xxx") 这也是一个Spring框架的注释,出现在方法前面,表明这个方法是响应xxx请求的。你也可以在后面加上Http的方法。有关这部分的详情会放在下一篇文章之中。

  由于Controller用于控制View,所以这个方法的结尾我返回了一个ModelAndView对象。这个类的构造函数可以接受三个参数。

    第一个参数的是一个字符串,表明返回的是哪一个View。你可以返回View的全路径(/WEB-INF/Views/xxx.jsp)。由于我们之前在servlet的配置文件中指定了View的前缀和后缀,所以这里我们只返回View的名字。

    如果用两个参数构造这个对象,那么第二个参数为一个Map,包含了传给View的键值对,可以在JSP中调用。

    如果用三个参数构造,那么第二个参数就是传给View的参数名称,第三个则是参数的值。

 

所有的代码就是这些。剩下的步骤是配置一个tomcat server。

 

第七步:

在Eclipse里面配置tomcat是很简单的。按照下面的图示一步一步来就可以。

首先选择将工程放在server 上 debug。

技术分享

选择tomcat 7

技术分享

选择tomcat的解压位置和jre。

技术分享

技术分享

配置工程,点击结束。

 

之后tomcat会启动,加载Servlet,显示我们的主页。点击主页上的链接,Controller会响应并返回View。

 

结束。

 

其实我也是刚入门,摸爬滚打两天总结出俩文档,又抽出来这么一个博客。

 

有好多东西没有说到。Spring的注释(@Component),参数传递(@RequestParam),Tiles,等,放到下次一并讲吧。

 

Spring MVC 入门 - 框架搭建

标签:

原文地址:http://www.cnblogs.com/widekuan/p/4282686.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!