要使用springmvc,先要引入所需要的包。springmvc是spring的子集,所以如果不考虑工程的大小,直接把spring的lib引入就ok了。
像通常的servlet开发一样,我们要在web.xml中配置spring的核心servlet--》DispatcherServlet,从字面就可以理解DispatcherServlet的用途,dispatcher是调度的意思,而DispatcherServlet的作用就是拦截请求,并将请求分发给各Controller.
下面配置web.xml
<?xml version="1.0" encoding="utf-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<!-- 这是应用的名字 -->
<display-name>learn_springmvc_from_book</display-name>
<servlet>
<!-- 这是 DispatcherServlet的名字 你也可以改成别的名字-->
<servlet-name>DispatcherServlet</servlet-name>
<!-- DispatcherServlet所在的路径 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化设置(告诉spring DispatcherServlet配置的位置)
如没有该项 spring就会去WEB-INF下寻找默认的DispatcherServlet配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 该项即指DispatcherServlet的配置路径 classpath对应的是java Resource下的src -->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet-mapping>
<!-- 与上面的servlet-name对应 -->
<servlet-name>DispatcherServlet</servlet-name>
<!-- 当值为/时 代表拦截所有的请求 当然也可以不设置为/ 比如可以设置为*.do 那么DispatcherServlet就会拦截所有后缀为.do的请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
配置完web.xml自然要配置DispatcherServlet的配置文件,其实DispatcherServlet的配置文件就是springmvc的配置文件
那么我们就在src下建立一个springmvc.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">
<!-- 这项代表哪里存放了spring组件 如controller service 另外如果你的组件没有在下面申明 spring是找不到的 -->
<context:component-scan base-package="com.xperdit.springmvc.controller"/>
<context:component-scan base-package="com.xperdit.springmvc.service"/>
<!-- 字面意思是注释驱动 需要注意的是如果没有这一项 那么下面的mvc:resources是不起作用的 并且也会让spring也瘫掉 需要注意的是 注释驱动只能有一项
有多项时springmvc也只认最开始的一项 这意味着 我们在配置converter的时候 直接在这个annotation-driven后面添加属性即可 -->
<mvc:annotation-driven/>
<!-- 这里指定了静态资源的位置 -->
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<!-- 视图解析器 可以将view指向对应的资源位置 -->
<bean id="viewResovler" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前项 -->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!-- 后项 -->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
这里需要注意的是viewResovler功能。举个例子Controller中有一个函数
@RequestMapping("/index")
public String hello() {
return "index";
}
其中hello返回的string就是一个view ,view就相当于对应资源的名字,当DispatcherServlet得到这个view=index时,它会在index前加上prefix的值在后面加上suffix的值
所以最终指向的就是/WEB_INF/jsp/index.jsp
同样你可能会疑惑mvc:Resource的作用是什么。前面已经提到mvc:DispatcherServlet是拦截请求的,在实际工程中有一些请求时不能拦截的,比如.css,.js那么我们就使用这个Resource将这些静态资源重新定向。
mapping指的是需要重新定向的请求的特征,这里是/css/** 使用了正则表达式表示含有/css/的所有请求都要重新定向。
location指的是重新定向的位置在哪 比如请求时/css/index.css 那么他就会被重定向到/WEB_INF/css/index.css
同理你还可以为js定向 练习一下吧
end