Eclipse 中创建一个工程springMVC , 然后按照下面的步骤添加文件 。
配置web.xml文件
在 springMVC 的WebContent目录下创建web.xml。在使用Struts 2时,需要在web.xml文件配置FilterDispatcher,在使用Spring的MVC框架时,也需要配置web.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>springMVC</display-name> <!--配置Sring MVC的核心控制器DispatcherServlet --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <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> </web-app>
上面的代码对DispatcherServlet类进行配置,所有后缀名为.do的请求都会被DispatcherServlet处理。
编写用于输出的页面
在WebContent文件夹下面创建sayHello.jsp,该页面用来被Spring的控制器调用向页面上输出一个字符串,代码如下:
<%@page contentType="text/html;charset=UTF-8"%>
<html>
<head><title>第一个Spring MVC实例</title></head>
<%
String str = (String)request.getAttribute("helloWorld");
%>
<body>
<h1>您输入的欢迎语是<%=str%></h1>
</body>
</html>
创建控制器
Spring的MVC框架也有充当控制器的组件。下面先在springMVC中创建一个包com.examp,然后在其中添加HelloWorldAction.Java类,用于调用sayHello.jsp去显示字符串,代码如下:
package com.examp;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloWorldAction implements Controller{
private String helloWorld; //该属性用于获取配置文件中的helloWorld属性
private String viewPage; //用于获取配置文件中的viewPage属性
@Override
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
Map<String,String> modal = new HashMap<String,String>();
modal.put("helloWorld", getHelloWorld());
return new ModelAndView(getViewPage(),modal);
}
public String getHelloWorld() {
return helloWorld;
}
public void setHelloWorld(String helloWorld) {
this.helloWorld = helloWorld;
}
public String getViewPage() {
return viewPage;
}
public void setViewPage(String viewPage) {
this.viewPage = viewPage;
}
}
可以看出,上面的HelloWorldAction类实现了Controller接口。该类有两个属性viewPage和helloWorld。viewPage代表处理完后要返回的页面,helloWorld是要传给显示页面的参数。在handleRequest()方法中进行客户端请求的处理时,首先将参数helloWorld放在Map类型的变量model中,然后调用viewPage显示该参数。
创建spring的配置文件
在springMVC
的WebContent下面编写文件dispatcherServlet-servlet.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"></bean> <!--配置控制器的映射 --> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="helloWorld.do">helloWorldAction</prop> </props> </property> </bean> <!--配置视图 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.InternalResourceView</value> </property> </bean> <!--指定控制器的实现类,并且配置其参数的值 --> <bean id="helloWorldAction" class="com.examp.HelloWorldAction"> <property name="helloWorld"> <value>Hello Spring World!</value> </property> <property name="viewPage"> <value>sayHello.jsp</value> </property> </bean> </beans>
用<bean id="helloWorldAction" class="com.examp.HelloWorldAction">指定控制器的实现类是com.examp.HelloWorldAction,并且用helloWorldAction来唯一标识该控制器。 用<prop key="helloWorld.do">helloWorldAction</prop>为HelloWorldAction建立映射,其中helloWorldAction就是HelloWorldAction类的id,helloWorld.do为访问HelloWorldAction的URL。
在浏览器中输入http://localhost:8080/springMVC/helloWorld.do,就可以访问到HelloWorldAction类。
<value>Hello Spring World!</value>用来给HelloWorldAction类的属性helloWorld赋值。<value>sayHello.jsp</value>用来给其viewPage属性赋值,这样在HelloWorldAction类中才能获取它们。
id为viewResolver的bean用来定义视图解析器。
运行springMVC实例
在Eclipse中启动Tomcat,在浏览器中输入http://localhost:8080/springMVC/helloWorld.do,可以访问到sayHello.jsp。