一、需要准备的资源
- JDK
- MyEclipse
- SpringMVC需要用的包 http://download.csdn.net/detail/fonxian/8804333
二、配置
1、在新建的动态Web工程中的lib中加入SpringMVC需要用的包
2、配置WEB-INF下的web.xml
这里的servlet-class 可在MyEclipse —— Navigate —— OpenType ——输入DispatcherServlet即可找到
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3、 配置WEB-INF下的hello-servlet.xml(这里的hello需要与web.xml中的对应起来)
<beans ......>可在“SpringMVC需要用的包”中的docs中的beans.html文档中找到
<?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">
<bean name="/welcome.html" class="com.fonxian.controller.Controller" >
</bean>
4、添加hello-servlet.xml中对应的类
其中的Controller类必须继承AbstractController类
public class Controller extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
return new ModelAndView("welcome");
}
}
5、在hello-servlet中添加找到视图的前后缀
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="user/" />
<property name="suffix" value=".jsp" />
</bean>
三、原理
1、请求DispatcherServlet分配给控制器(根据HandlerMapping处理器映射来决定)。
2、控制器完成处理后,请求发给一个视图(ViewResolver视图解析器来确定)来呈现输出结果
3、hello-servlet中配置的prefix和suffix的作用是为了ViewResolver找到Controller返回的ModelAndView。
例如页面是WebRoot/user/welcome.jsp,prefix = “user/ ,ModelAndView=”welcome”,suffix = “.jsp”
四、另一种方法
1、配置hello-servlet.xml,再原先的基础上加入下面代码(可在“SpringMVC需要用的包”中的docs中的mvc.html文档中找到)
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<context:component-scan base-package="com.fonxian.controller"/>
<mvc:annotation-driven></mvc:annotation-driven>
2、新建类
这里的RequestMapping中字符数组的每个字符就相当于之前
return 返回的字符,就相当于之前的ModelAndView
@Controller
public class HelloController {
@RequestMapping({"/user","/admin"})
public String hello(){
return "hello";
}
}
3、这种方法更为高效