SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,是一个表现层框架,是基于组件方式去执行流程的。SpringMVC处理请求的机制是一个核心控制器(DispatcherServlet),它是SpringMVC的一个servlet,就相当于 mvc 模式中的 c,DispatcherServlet 是整个流程控制的中心,用户所有请求都会经过这个servlet,由它调用其它组件处理用户的请求。
SpringMVC 简单使用步骤:
1、在pom文件中导入spring-web和spring-webmvc两个jar包的坐标;
2、在web.xml文件中配置核心控制器,并在其中同时加载spring的xml配置文件,代码:
<!--配置前端控制器servlet-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--加载配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--该servlet对象在服务器启动时就会创建-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!--只写/表示任何请求都会经过该servlet-->
<url-pattern>/</url-pattern>
</servlet-mapping>
3、在上面加载的spring的xml配置文件中开启MVC注解框架的支持、开启注解扫描以及配置视图解析器对象,代码:
<!--开启MVC注解框架的支持-->
<mvc:annotation-driven enable-matrix-variables="true"/>
<!--开启注解扫描-->
<context:component-scan base-package="com.itmao"></context:component-scan>
<!--配置视图解析器对象-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
4、创建一些案例用到的文件:
4.1、创建一个用户访问的入口jsp,里面只有一个超链接:
<a href="controller" >hello maven!</a>
href属性的值为控制器类中对这条请求做处理的方法的相对路径。
4.2、创建一个控制器类:
//控制器类
@Controller
public class HelloController {
@RequestMapping(path = "/controller")
public String sayHello(){
System.out.println("Hello StringMVC");
return "success";
}
}
在类名上加上将其作为控制器类的注解@Controller,并为其中的方法加上映射注解@RequestMapping(path = “/controller”)。输出表示控制器对请求做的操作,返回值表示转发到success.jsp页面。
4.3、在/WEB-INF/pages/下面创建一个success.jsp页面,因为在配置视图解析器时已经将该目录下的所有jsp页面做了配置,所以在控制器中返回jsp的文件名就可达到转发的目的。
RequestMapping注解:
作用:用于建立请求 URL 和处理请求方法之间的对应关系。 可以写在类和方法上,控制器也可以分模块,例如account模块、user模块等,而每个方法中可能都有增删改查的处理,这时就可以在控制器类上加上RequestMapping注解,例如@RequestMapping(path = “account”)或@RequestMapping(path = “user”),这时调用处理请求的方法时就可以写
<a href="account/findAll" >hello maven!</a>
或
<a href="user/findAll" >hello maven!</a>
这样也可以使我们的 URL 更加精细。
属性:
value:和 path 属性的作用是一样的。
method:用于指定请求的方式。 可以有多个值,写法:method={RequestMethod.POST,RequestMethod.GET}。
params:用于指定请求参数,它支持简单的表达式。要求请求参数的key和value 必须和配置的一模一样。例如:params = {“accountName”},表示请求参数必须有 accountName,又如params = {“moeny!100”},表示请求参数中 money 不能是100。
headers:用于指定限制请求消息头的条件。 例如:headers = {“Accept”},表示请求消息头中必须有Accept请求头。