1.新建一个Dynamic项目guozi.
不要直接点finish,要一直点next直到看到Generate web.xml deployment descriptor选项。点finish。这样系统会自动创建一个web.xml文件,也可以自己手动创建文件到WebContent/WEB-INF目录下。
2.添加基础SpringMVC项目需要的jar包到WEB-INF/lib目录下.
添加方式:a:直接把下载好的包选中复制,然后选中项目的lib文件,粘贴过来。
b:在eclipse的工作空间找到这个项目的lib文件夹,把需要的包复制过来。在eclipse中选中项目,按f5刷新。
3.打开WEB-INF下的web.xml文件,添加springMVC的配置信息。
<?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" 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>guozi</display-name>
<!--SpringMVC配置 -->
<servlet>
<servlet-name>guozi</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- load-on-startup必须放在最后 -->
</servlet>
<servlet-mapping>
<servlet-name>guozi</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
DispatcherServlet是前端控制器,springMVC框架的集中访问点,负责拦截请求并分发到相关的controller去,分配规则在springmvc-config.xml文件中。
<servlet-name>自己随意命名,一般是项目名称,<servlet-mapping>中和其保持一致。
<param-value>是springMVC配置文件的路径,默认放在WEB-INF下,也可以放到src中去,配置文件命名随意。
<load-on-startup>控制是否在服务器启动时启动本servlet,正数为服务器启动时启动,数字越大优先级越高。
<url-pattern>是拦截请求设置,/代表都拦截,/*.do代表拦截以.do为后缀的请求,以此类推。
4.在WEB-INF下创建springmvc-config.xml,命名随意路径随意,和web.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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
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="com.guozi.controller"></context:component-scan>
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
</bean>
</beans>
<content:conponentscan>是使spring自动扫描设置的包里的java文件,遇到声明@Controller的就把其注册成bean。base-package就是设置的扫描范围。我的controller写在com.guozi.controller包里。
<property name="prefix">以及下边一行的设置是从controller返回到前端的设置,代表controller返回的前端文件以.jsp结尾,且放在WEB-INF/jsp目录下的。
5.测试
a.在src下新建一个包命名为com.guozi.controller。
b.在新建的包里创建一个class文件,命名为HelloController.
HelloController.class文件内容如下:
package com.guozi.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController {
@RequestMapping(value="/hello")
public ModelAndView hello(){
ModelAndView m=new ModelAndView();
m.addObject("mess", "hello!");
m.setViewName("hello");
return m;
}
}
在类之外添上@Controller,按提示导入相应包。
@RequestMapping(value="/hello")是映射路径,随意命名,在浏览器访问时访问路劲要加上这个路径。
方法hello()的返回类型是视图,方法中我们需要先创建视图。
m.addObject("mess","hello")是视图带的传值参数,前一个参数是名字,后一个参数是值,可以在前端接收。
m.setViewName是设置视图名称,需要跳转的页面名称和这个设置名称一致。
c.在WEB-INF下新建一个文件夹,命名为jsp,用来存放jsp文件。
d.在新建文件夹下创建一个新的jsp文件,命名为hello.jsp.
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>
${mess}
</body>
</html>
PS:在创建jsp的过程中可能会提示出错,需要去设置build path。
e.点击项目选择run on sever,出现404错误,在路径上加上/hello,结果如图。