此篇为新手说明如何搭建一个基于springMVC框架的Web project.
使用工具:Idea tomcat
第一步:搭建springMVC框架自然少不了spring的jar包了,
下载spring jar包的地址:http://repo.springsource.org/libs-release-local/
沿着路径:org---springframework----spring 自行选择最新的稳定版本。
注意;springde 的核心容器依赖于common-logging的jar包,所以还要去下载这个jar包,地址如下:
http://commons.apache.org/
沿着路径 releases----logging 下载最新的commons-logging 得到一个 xxxx.bin.zip的压缩文件
OK,需要的jar包准备完毕,通过IDEA新建一个Java Web项目
点击File ----- New ---- Project 弹出下图
勾选Web Appcation 点击next完成。
这是只是简单的创建的一个java web项目,和spring还没有半毛钱关系。把之前下载好的jar添加进来。
因为IDEA工具不会主动为我们创建lib目录,我们需要手动创建,我在WEB-INF下新建一个Directory 取名lib.
File --- New ---- Directory
把下载好的jar包拷贝进来。
然后右击 lib目录,点击 add as library
OK,jar包添加完成,现在开始配置。web项目,入口首先是web.xml。所以先在这个里面配置servlet。web.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
这个是最简单的配置了,里面没有其他内容。就配了一个servlet,name是springmvc, 对应的class是DispatcherServlet。有servlet就必有对应的servlet-mapping。将任何的web请求都使用dispatcherServlet进行转发,所以我们配置的映射的值是“/”。
当项目加载DispatcherServlet时会需要一个Spring MVC的配置文件,默认情况下会去程序文件夹WEB-INF下查找对应的[servlet-name]-servlet.xml文件,因为我配置的servlet-name是springmvc,所以会去加载springmvc-servlet.xml文件,如果没有会报错。我在WEB-INF下新建一个xml,命名为springmvc-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="/hello" class="cn.com.controller.HelloController"/>
</beans>
里面就添加一个bean,用来测试hello是否能请求到。
在java中新建一个HelloController.java,
DispatcherServlet在spring中充当一个前端控制器的角色,它的核心功能是分发请求。请求会被分发给对应处理的java类,Spring MVC中称为Handle.在Spring2.5之前,开发一个Handle的唯一方法是实现 org.springframword.web.servlet.mvc.Controller接口。
所以HelloController.java必须实现这个接口,然后重写handleRequest方法,HelloController.java类如下:
package cn.com.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
System.out.println("进入hello");
ModelAndView mav = new ModelAndView();
mav.addObject("name","test");
mav.setViewName("index.jsp");
return mav;
}
}
然后启动项目,在浏览器请求localhost:8080/hello,结果如下:
出现上图,OK搞定。
Controller接口的实现类,本例中如:HelloController、可以通过重写的handleRequest方法传递的参数访问对应请求的HttpServletRequest 和 HttpServletResponse 对象。方法处理完成请求之后,必须返回一个ModelAndView 对象。
从这可以看出在Spring2.5之前,这个还有很多缺点,如:
1.必须返回一个ModelAndView 对象,这个就很烦,我就想返回一个字符串还不行。返回类型不能变
2.Controller实现类重写了handleRequest。这个是一个请求。如果再处理一个新的请求,又必须要再写一个类,一个类只能处理一个单一的请求动作。就是说,一个用户的增删改查四个动作,就要写四个类处理四个请求。
为了处理这些问题,在spring2.5之后新增了基于注解的控制器,他可以支持同时处理多个请求的动作,而且无需实现任何接口,变的更加灵活。下一篇介绍注解篇