(一)搭建开发环境
1.建立动态web工程
2.导入jar包及其依赖包
(1).为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的所有jar包拷贝到项目的WEB-INF/lib目录下;
(2).需要添加Apache commons logging日志,此处使用的是commons.logging-1.1.1.jar;
(二)配置开发环境
1.配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 手动配置文件路径 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> </web-app>
load-on-startup:表示启动容器时初始化该Servlet;
url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。“*.action”表示拦截所有以action为扩展名的请求。
自此请求已交给Spring Web MVC框架处理,因此我们需要配置Springmvc的配置文件,
<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param>
是手动配置springmvc的配置文件位置及文件名。如无该配置则DispatcherServlet会默认加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。本示例为WEB-INF/ dispatcher-servlet.xml。
2.配置springmvc 配置文件 spring-mvc.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <!-- 注:如果出现同名,BeanNameUrl与SimpleUrl谁起作用。默认情况下按xml配置的前后顺序 也可以配置order属性的顺序。其值越小优先级越高 --> <!-- 处理器映射 --> <!-- BeanNameUrlHandlerMapping处理器映射 --> <bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- SimpleUrlHandlerMapping处理器映射 --> <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!-- value的值指向控制器的id --> <prop key="a.action">myController</prop> <prop key="b.action">myController</prop> <prop key="myController.action">myController</prop> </props> </property> </bean> <!-- controllerClassNameHandlerMapping控制器类名处理器映射 --> <bean id="controllerClassNameHandlerMapping" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"> </bean> <!-- 控制器 --> <bean id="myController" name="/myController.action" class="cn.ytu.web.controller.MyController"></bean> <!-- PersonCommandController命令控制器 --> <bean id="personCommandController" class="cn.ytu.web.controller.PersonCommandController"></bean> <!-- SimpleFormController 简单表单控制器 --> <bean id="personFormController" class="cn.ytu.web.controller.PersonFormController"> <property name="formView" value="personForm"></property> <property name="successView" value="index"></property> </bean> <bean id="myWizardController" class="cn.ytu.web.controller.MyWizardController"> <property name="pages"> <list> <value>wizard/basicInfo</value> <value>wizard/eduInfo</value> <value>wizard/workInfo</value> </list> </property> </bean> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
BeanNameUrlHandlerMapping:表示将请求的URL和Bean名字映射,如URL为 “上下文/myController”,则Spring配置文件必须有一个名字为“/myController”的Bean,上下文默认忽略。注意,url中的名字除Controller外不能出现大些字母,且Controller可以不写 。
SimpleControllerHandlerAdapter: 表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器。
视图解析器配置
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
InternalResourceViewResolver:用于支持Servlet、JSP视图解析;
2.处理器Controller
public class MyController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("hello"); } }
public ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) :实现相应的功能处理,将命令对象传入业务对象进行业务处理,最后返回ModelAndView对象;
ModelAndView:包含了视图要实现的模型数据和逻辑视图名;
return new ModelAndView(“hello”):表示设置逻辑视图名为“hello”,视图解析器会将其解析为具体的视图,如前边的视图解析器InternalResourceVi。internalResourceViewResolver会将其解析为“WEB-INF/jsp/hello.jsp”。
3.视图hello.jsp(WEB-INF/jsphello.jsp)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Hello World</title> </head> <body> Hello SpringMVC! <br> </body> </html>
在浏览器地址栏输入:http://localhost:8080/springmvc/mycontroller.action