这里写的实例为springMVC非注解型的简单实例,更加方便理解springMVC的大致工作流程。
1.首先把配置文件配好,并引入相关的jar包,我这里使用的Maven,相关的依赖配置如下:
Maven工程管理项目,需要的jar包依赖如下:
<!-- 集中定义版本 -->
<properties>
<spring.version>5.0.0.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
在web.xml文件中配置springmvc的DispatcherServlet:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化参数 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:*-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
SpringMVC-servlet.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:p="http://www.springframework.org/schema/p"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 简单url的映射处理器 -->
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- <prop key="/index">indexController</prop> -->
<prop key="/hello">helloController</prop>
</props>
</property>
<!-- 设置优先级,值越小,优先级越高 -->
<property name="order" value="0" />
</bean>
<!-- 对于不需要处理只需要做一个转发可以用下面方式实现 -->
<bean id="indexController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<!-- 简单的返回视图名,通过viewName的value值login直接调用视图解析器,转发到login.jsp -->
<property name="viewName" value="index"></property>
</bean>
<bean id="helloController" class="com.springmvc.controllers.HelloWorldController"></bean>
<!-- 视图解析器 -->
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>
欢迎页面写了一个简单的转发:
在HandlerMapping映射处理器中寻找相应的controller,转发到如下页面:
表单提交后,对应的请求为hello,在映射处理器中找到对应hello的controller,相应代码如下:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class HelloWorldController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
String user = request.getParameter("user");
int age = Integer.parseInt(request.getParameter("age"));
System.out.println("HelloWorldController @ handleRequestInternal"+user+":"+age);
ModelAndView mav = new ModelAndView();
mav.setViewName("hello");
mav.addObject("user",user);
mav.addObject("age",age);
return mav;
}
}
控制器中返回的ModelAndView中的ViewName为hello,即为SpringMVC-servlet.xml配置文件中视图解析器配置的目录/WEB-INF/jsp/下的hello.jsp文件:
点击表单提交后,运行结果如下: