准备阶段
1.创建一个maven的web项目
2.准备好要用的jar包(直接将以下代码复制到项目中的pom.xml文件中就可以了)
<!-- javax.servlet.jsp.jstl:对javaweb语法的支持 -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.1</version>
</dependency>
<!-- 对mvc的支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<!-- spring的容器 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
</dependencies>
配置项目
1.web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- spring的核心控制器,其实就是一个servlet -->
<!-- 注册 -->
<servlet>
<!-- 此名字可随意取但要记住,后面spring的配置文件需要用到 -->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<!-- 映射 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 配置/表示所有的请求都被此servlet拦截,因此后面要对静态资源访问做额外处理 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 让tomcat容器加载spring的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<!-- 加监听器(必须加) -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 由于所有的请求都被核心控制器拦截所以需要对静态资源放行,写几个意思一下就行了(当然如果前面你配置的不是/的话就不用配置下面的代码,例如你可以配置成'*.do'这样所有以.do结尾的请求才被核心控制器拦截就不需要下面的操作) -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
</web-app>
2.springmvc-servlet.xml (注意:这个文件需要用到web.xml中核心控制器的名字+servlet),此文件放在WEB-INFO中,与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:context="http://www.springframework.org/schema/context"
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.xsd">
<!-- 此文件中只要写上这句话就行了,他会扫描com.action包,将使用了注解的类全部加入到spring的容器中 -->
<context:component-scan base-package="com.action"></context:component-scan>
</beans>
3.applicationContext.xml (spring的总配置文件,在名字要与web.xml的context-param中的名字一致),此文件放在项目的resources目录下
<?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"
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.xsd">
<!-- 此文件主要是用来导入其他配置文件的,但今天仅仅是教大家搭建springmvc的环境,所以只写了扫描service层的配置 -->
<context:component-scan base-package="com.service"></context:component-scan>
</beans>
开始写java代码
创建com.action , com.service两个包
1.com.action
package com.action;
import com.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//加上此注解spring就会将此类加入容器
@Controller
public class UserAction {
//写了这个注解就不需要给此对象赋值了,spring会从容器中配对对应的对象为其赋值
@Autowired
private UserService service ;
//此注解是访问地址,等下再浏览器窗口中输入这个地址就能访问到此方法
@RequestMapping("/say")
public void say(HttpServletRequest request , HttpServletResponse response) throws IOException {
String str = service.getSer() ;
response.getWriter().print(str);
}
}
2.com.service
package com.service;
import org.springframework.stereotype.Service;
//加上此注解spring就会将此类加入容器
@Service
public class UserService {
public String getSer() {
String str = "Hello World" ;
return str ;
}
}
dao层就不写了,除了dao层整个mvc的环境就已经搭建好了,发布项目跑起来,然后在浏览器输入地址 http://127.0.0.1:8080/项目名/say 就可以输Hello World了
好的 大功告成