一.新建一个动态web工程。
大笨用的myeclipse,eclipse其实是一样的。
右键->New—>Other->Web->Dynamic Web Project
二.导入jar
我们基于Spring mvc框架进行开发,需要依赖一下的spring jar包:
- spring-aop-4.0.4.RELEASE.jar
- spring-beans-4.0.4.RELEASE.jar
- spring-context-4.0.4.RELEASE.jar
- spring-core-4.0.4.RELEASE.jar
- spring-expression-4.0.4.RELEASE.jar
- spring-web-4.0.4.RELEASE.jar
- commons-logging-1.1.1.jar(用来打印log)
把上面的jar包copy进/WebContent/WEB-INF/lib下面就可以,没有lib文件的自己新建一个。
三.配置web.xml
web.xml是任何一个web工程的入口,我们当然也要先从这里入手。
SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet
既然SpringMVC是基于DispatcherServlet的,那么我们先来配置一下DispatcherServlet
<!-- 前端控制器的配置 DispatchcerServlet-->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置Spring mvc下的配置文件的位置和名称 -->
<!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml -->
<!-- <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value> 默认
</init-param> -->
<!-- load-on-startup:表示启动容器时初始化该Servlet; -->
<load-on-startup>1</load-on-startup>
</servlet>
6行代码就这么简单,我们配置完DispatcherServlet是不是应该告诉它哪些请求交给Spring Web MVC处理?那再加4行来实现。
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
“/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。
OK我们的web.xml就这么配置完了。我们看一下:
<?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>spring</display-name>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
四.配置【servlet-name】-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:context="http://www.springframework.org/schema/context"
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-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 设置使用注解的类所在包 会自动扫描 我一会要把类写在这个包下-->
<context:component-scan base-package="com.spring.action"></context:component-scan>
<!-- 视图解析器 对转向页面的路径解析。prefix:前缀, suffix:后缀-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value="/WEB-INF/views/"></property>
<property name = "suffix" value = ".jsp"></property>
</bean>
</beans>
五.controller
// 在类的前面添加Controller注解,表示是spring的控制器
@Controller
public class HelloWorld {
// 请求url地址映射 @RequestMapping 是用于匹配请求的路径
@RequestMapping("/hello")
public String hello(){
System.out.println("hello world");
// 返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析
// 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发操作
// "/WEB-INF/views/success.jsp"
return "success";
}
}
@RequestMapping是用来映射请求的,什么get请求,post请求都可以。
这个@RequestMapping不仅可以加在方法上,也可以加在类型。注意要加在@Controller上面才好用。
六.新建jsp,启动Tomcat并访问
上面既然访问success.jsp,我们就去/WEB-INF/views/下面件success.jsp
<body>
hello world
</body>
我们在eclipse中配置完tomcat将我们新建的工程添加进去,并且启动服务。因为 @RequestMapping(“/hello”),我们直接访问http://localhost:8080/spring/hello spring是我的工程名。
就会调用 hello()方法,并展示success.jsp
补充:
@RequestMapping可以实现模糊匹配路径,比如:
?:匹配一个字符
*:匹配任意字符
**:匹配多层路径
发一下我的工程