您的位置:首页 > 编程语言 > Java开发

Spring MVC 入门 - 框架搭建

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

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

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

  建立一个eclipse工程;

  编写两个xml;

  编写两个jsp页面;

  编写一个Java文件。

准备工作 -

  Eclipse J2EE版本;

  Tomcat 一只;

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

第一步:

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





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



点击下一步。



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

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

创建两个空页面,Index.jsp和hello.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编辑:

<?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name>springtest</display-name>
<welcome-file-list>
<welcome-file>/WEB-INF/Views/index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>springtest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>       <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>springtest</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

</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。

<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 
<context:component-scan base-package="bob.sun.controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/Views/" />
<property name="suffix" value=".jsp" />
</bean>
</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,等,放到下次一并讲吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: